From d0e3628f26c42d3ace3c8ab66b6e17b92e56679a Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Wed, 14 Jun 2023 14:00:46 -0700
Subject: [PATCH 01/49] `Archmonger/reactpy-docs/main` to
 `reactive-python/reactpy/new-docs`

---
 .github/workflows/.hatch-run.yml              |   59 -
 .github/workflows/check.yml                   |   45 -
 .github/workflows/codeql-analysis.yml         |   71 -
 .github/workflows/deploy-docs.yml             |   30 -
 .github/workflows/publish.yml                 |   20 -
 CHANGELOG.md                                  |  199 ++
 README.md                                     |   73 +-
 docs/.gitignore                               |    4 -
 docs/Dockerfile                               |   40 -
 docs/LICENSE.md                               |  393 +++
 docs/README.md                                |   20 -
 docs/docs_app/app.py                          |   59 -
 docs/docs_app/dev.py                          |  104 -
 docs/docs_app/examples.py                     |  177 -
 docs/docs_app/prod.py                         |   14 -
 .../css/quick_start/adding_styles.css         |    4 +
 .../css/quick_start/displaying_data.css       |    7 +
 .../sharing_data_between_components.css       |    4 +
 .../css/quick_start/updating_the_screen.css   |    4 +
 .../css/tutorial-tic-tac-toe/tic_tac_toe.css  |   42 +
 .../{docs_app => examples/python}/__init__.py |    0
 docs/examples/python/quick_start/__init__.py  |    0
 .../python/quick_start/adding_styles.py       |    4 +
 .../quick_start/conditional_rendering.py      |   22 +
 .../conditional_rendering_logical_and.py      |   14 +
 .../conditional_rendering_ternary.py          |   18 +
 .../creating_and_nesting_components.py        |   21 +
 .../python/quick_start/displaying_data.py     |   32 +
 docs/examples/python/quick_start/my_app.py    |   12 +
 docs/examples/python/quick_start/my_button.py |    7 +
 .../python/quick_start/rendering_lists.py     |   30 +
 .../quick_start/rendering_lists_list_items.py |    6 +
 .../quick_start/rendering_lists_products.py   |    5 +
 .../quick_start/responding_to_events.py       |   13 +
 .../sharing_data_between_components.py        |   27 +
 .../sharing_data_between_components_button.py |    7 +
 ...ring_data_between_components_move_state.py |   20 +
 .../sharing_data_between_components_props.py  |   22 +
 .../python/quick_start/updating_the_screen.py |   27 +
 .../quick_start/updating_the_screen_event.py  |   12 +
 .../updating_the_screen_use_state.py          |    5 +
 .../updating_the_screen_use_state_button.py   |    8 +
 .../tutorial-tic-tac-toe/tic_tac_toe.py       |  117 +
 docs/main.py                                  |    9 -
 docs/overrides/main.html                      |   13 +
 docs/poetry.lock                              | 2269 -------------
 docs/pyproject.toml                           |   23 -
 docs/requirements.txt                         |    8 +
 docs/source/_custom_js/README.md              |    9 -
 docs/source/_custom_js/package-lock.json      |  766 -----
 docs/source/_custom_js/package.json           |   20 -
 docs/source/_custom_js/rollup.config.js       |   26 -
 docs/source/_custom_js/src/index.js           |   94 -
 docs/source/_exts/async_doctest.py            |   47 -
 docs/source/_exts/autogen_api_docs.py         |  146 -
 docs/source/_exts/build_custom_js.py          |   12 -
 docs/source/_exts/copy_vdom_json_schema.py    |   17 -
 docs/source/_exts/custom_autosectionlabel.py  |   80 -
 docs/source/_exts/patched_html_translator.py  |   24 -
 docs/source/_exts/reactpy_example.py          |  180 -
 docs/source/_exts/reactpy_view.py             |   63 -
 .../_static/css/furo-theme-overrides.css      |    6 -
 .../source/_static/css/larger-api-margins.css |    7 -
 docs/source/_static/css/larger-headings.css   |    9 -
 docs/source/_static/css/reactpy-view.css      |   43 -
 .../_static/css/sphinx-design-overrides.css   |   14 -
 .../css/widget-output-css-overrides.css       |    8 -
 .../_static/install-and-run-reactpy.gif       |  Bin 1049193 -> 0 bytes
 docs/source/about/changelog.rst               | 1124 -------
 docs/source/about/contributor-guide.rst       |  331 --
 docs/source/about/credits-and-licenses.rst    |   16 -
 docs/source/conf.py                           |  330 --
 .../_examples/adding_state_variable/data.json |   72 -
 .../_examples/adding_state_variable/main.py   |   35 -
 .../_examples/isolated_state/data.json        |   72 -
 .../_examples/isolated_state/main.py          |   53 -
 .../multiple_state_variables/data.json        |   72 -
 .../multiple_state_variables/main.py          |   45 -
 .../when_variables_are_not_enough/data.json   |   72 -
 .../when_variables_are_not_enough/main.py     |   42 -
 .../components-with-state/index.rst           |  351 --
 .../_examples/dict_remove.py                  |   58 -
 .../_examples/dict_update.py                  |   44 -
 .../_examples/list_insert.py                  |   25 -
 .../_examples/list_re_order.py                |   24 -
 .../_examples/list_remove.py                  |   44 -
 .../_examples/list_replace.py                 |   27 -
 .../_examples/moving_dot.py                   |   45 -
 .../_examples/moving_dot_broken.py            |   43 -
 .../_examples/set_remove.py                   |   41 -
 .../_examples/set_update.py                   |   38 -
 .../dangers-of-mutability/index.rst           |  569 ----
 .../guides/adding-interactivity/index.rst     |  210 --
 .../_examples/delay_before_count_updater.py   |   20 -
 .../_examples/delay_before_set_count.py       |   20 -
 .../_examples/set_color_3_times.py            |   27 -
 .../_examples/set_state_function.py           |   24 -
 .../multiple-state-updates/index.rst          |  109 -
 .../_examples/audio_player.py                 |   21 -
 .../_examples/button_async_handlers.py        |   23 -
 .../_examples/button_does_nothing.py          |    9 -
 .../_examples/button_handler_as_arg.py        |   33 -
 .../_examples/button_prints_event.py          |   12 -
 .../_examples/button_prints_message.py        |   20 -
 .../prevent_default_event_actions.py          |   18 -
 .../_examples/stop_event_propagation.py       |   42 -
 .../responding-to-events/index.rst            |  144 -
 .../_examples/delayed_print_after_set.py      |   22 -
 .../_examples/print_chat_message.py           |   44 -
 .../_examples/print_count_after_set.py        |   18 -
 .../_examples/send_message.py                 |   35 -
 .../_examples/set_counter_3_times.py          |   19 -
 .../_static/direct-state-change.png           |  Bin 181824 -> 0 bytes
 .../_static/reactpy-state-change.png          |  Bin 569027 -> 0 bytes
 .../state-as-a-snapshot/index.rst             |  158 -
 .../html-with-reactpy/index.rst               |  131 -
 .../guides/creating-interfaces/index.rst      |  128 -
 .../sorted_and_filtered_todo_list.py          |   32 -
 .../_examples/todo_from_list.py               |   28 -
 .../_examples/todo_list_with_keys.py          |   32 -
 .../rendering-data/index.rst                  |  297 --
 .../_examples/bad_conditional_todo_list.py    |   24 -
 .../_examples/good_conditional_todo_list.py   |   21 -
 .../_examples/nested_photos.py                |   25 -
 .../_examples/parametrized_photos.py          |   25 -
 .../_examples/simple_photo.py                 |   15 -
 .../_examples/todo_list.py                    |   21 -
 .../_examples/wrap_in_div.py                  |   13 -
 .../_examples/wrap_in_fragment.py             |   13 -
 .../your-first-components/index.rst           |  134 -
 .../_examples/material_ui_button_no_action.py |   16 -
 .../_examples/material_ui_button_on_click.py  |   30 -
 .../_examples/super_simple_chart/main.py      |   32 -
 .../super_simple_chart/super-simple-chart.js  |   82 -
 .../distributing-javascript.rst               |  307 --
 docs/source/guides/escape-hatches/index.rst   |   14 -
 .../escape-hatches/javascript-components.rst  |  146 -
 .../escape-hatches/using-a-custom-backend.rst |    9 -
 .../escape-hatches/using-a-custom-client.rst  |    9 -
 .../_examples/debug_error_example.py          |   20 -
 .../getting-started/_examples/hello_world.py  |    9 -
 .../getting-started/_examples/run_fastapi.py  |   22 -
 .../getting-started/_examples/run_flask.py    |   22 -
 .../getting-started/_examples/run_sanic.py    |   26 -
 .../_examples/run_starlette.py                |   22 -
 .../getting-started/_examples/run_tornado.py  |   31 -
 .../getting-started/_examples/sample_app.py   |    3 -
 .../getting-started/_static/embed-doc-ex.html |    8 -
 .../_static/embed-reactpy-view/index.html     |   31 -
 .../_static/embed-reactpy-view/main.py        |   22 -
 .../_static/embed-reactpy-view/screenshot.png |  Bin 13161 -> 0 bytes
 .../getting-started/_static/logo-django.svg   |   38 -
 .../getting-started/_static/logo-jupyter.svg  |   88 -
 .../getting-started/_static/logo-plotly.svg   |   11 -
 .../_static/reactpy-in-jupyterlab.gif         |  Bin 551674 -> 0 bytes
 .../shared-client-state-server-slider.gif     |  Bin 98006 -> 0 bytes
 docs/source/guides/getting-started/index.rst  |  123 -
 .../getting-started/installing-reactpy.rst    |  121 -
 .../getting-started/running-reactpy.rst       |  221 --
 .../combining-contexts-and-reducers/index.rst |    6 -
 .../index.rst                                 |    6 -
 .../how-to-structure-state/index.rst          |    8 -
 docs/source/guides/managing-state/index.rst   |  127 -
 .../_examples/filterable_list/data.json       |   22 -
 .../_examples/filterable_list/main.py         |   44 -
 .../_examples/synced_inputs/main.py           |   23 -
 .../sharing-component-state/index.rst         |   38 -
 .../index.rst                                 |    6 -
 .../when-and-how-to-reset-state/index.rst     |    8 -
 .../_static/idom-flow-diagram.svg             |  383 ---
 .../_static/live-examples-in-docs.gif         |  Bin 182779 -> 0 bytes
 .../_static/mvc-flow-diagram.svg              |  425 ---
 .../_static/npm-download-trends.png           |  Bin 64372 -> 0 bytes
 .../guides/understanding-reactpy/index.rst    |   17 -
 .../layout-render-servers.rst                 |    8 -
 .../representing-html.rst                     |   76 -
 .../the-rendering-pipeline.rst                |   10 -
 .../the-rendering-process.rst                 |   10 -
 .../what-are-components.rst                   |    8 -
 .../why-reactpy-needs-keys.rst                |    8 -
 .../understanding-reactpy/writing-tests.rst   |    8 -
 docs/source/index.rst                         |  206 --
 .../_examples/character_movement/main.py      |   73 -
 .../character_movement/static/bunny.png       |  Bin 474 -> 0 bytes
 .../source/reference/_examples/click_count.py |   13 -
 .../reference/_examples/material_ui_switch.py |   22 -
 .../reference/_examples/matplotlib_plot.py    |   85 -
 .../reference/_examples/network_graph.py      |   40 -
 .../source/reference/_examples/pigeon_maps.py |   46 -
 .../reference/_examples/simple_dashboard.py   |  102 -
 docs/source/reference/_examples/slideshow.py  |   20 -
 docs/source/reference/_examples/snake_game.py |  188 --
 docs/source/reference/_examples/todo.py       |   35 -
 .../_examples/use_reducer_counter.py          |   27 -
 .../reference/_examples/use_state_counter.py  |   26 -
 .../reference/_examples/victory_chart.py      |    7 -
 .../reference/_static/vdom-json-schema.json   |  106 -
 docs/source/reference/browser-events.rst      |   65 -
 docs/source/reference/hooks-api.rst           |  379 ---
 docs/source/reference/html-attributes.rst     |  197 --
 docs/source/reference/javascript-api.rst      |    8 -
 docs/source/reference/specifications.rst      |  170 -
 docs/src/about/changelog.md                   |   11 +
 docs/src/about/code.md                        |    3 +
 docs/src/about/community.md                   |    3 +
 docs/src/about/docs.md                        |    3 +
 docs/src/about/running-tests.md               |    3 +
 docs/src/dictionary.txt                       |   28 +
 docs/src/index.md                             |   57 +
 .../learn/add-react-to-an-existing-project.md |  153 +
 .../src/learn/choosing-the-state-structure.md | 2866 ++++++++++++++++
 ...municate-data-between-server-and-client.md |    3 +
 docs/src/learn/conditional-rendering.md       |  576 ++++
 .../learn/convert-between-vdom-and-html.md    |    3 +
 docs/src/learn/creating-backends.md           |    3 +
 docs/src/learn/creating-html-tags.md          |    3 +
 .../src/learn/creating-vdom-event-handlers.md |    3 +
 docs/src/learn/editor-setup.md                |   62 +
 .../extracting-state-logic-into-a-reducer.md  | 2644 +++++++++++++++
 docs/src/learn/get-started.md                 |  303 ++
 .../importing-and-exporting-components.md     |  382 +++
 docs/src/learn/keeping-components-pure.md     |  815 +++++
 .../learn/lifecycle-of-reactive-effects.md    | 2252 +++++++++++++
 .../learn/manipulating-the-dom-with-refs.md   | 1078 ++++++
 docs/src/learn/manually-register-a-client.md  |    3 +
 .../learn/passing-data-deeply-with-context.md | 1092 ++++++
 .../src/learn/passing-props-to-a-component.md | 1080 ++++++
 .../learn/preserving-and-resetting-state.md   | 2027 +++++++++++
 .../learn/python-in-psx-with-curly-braces.md  |  591 ++++
 .../queueing-a-series-of-state-updates.md     |  560 +++
 docs/src/learn/react-developer-tools.md       |   85 +
 .../src/learn/reacting-to-input-with-state.md | 1179 +++++++
 .../src/learn/referencing-values-with-refs.md |  569 ++++
 .../src/learn/removing-effect-dependencies.md | 2421 +++++++++++++
 docs/src/learn/render-and-commit.md           |  201 ++
 docs/src/learn/rendering-lists.md             | 1272 +++++++
 docs/src/learn/responding-to-events.md        |  648 ++++
 .../learn/reusing-logic-with-custom-hooks.md  | 2519 ++++++++++++++
 .../scaling-up-with-reducer-and-context.md    | 1373 ++++++++
 .../learn/separating-events-from-effects.md   | 1888 +++++++++++
 .../learn/sharing-state-between-components.md |  579 ++++
 docs/src/learn/start-a-new-react-project.md   |  133 +
 docs/src/learn/state-a-components-memory.md   | 1652 +++++++++
 docs/src/learn/state-as-a-snapshot.md         |  472 +++
 docs/src/learn/synchronizing-with-effects.md  | 1550 +++++++++
 docs/src/learn/thinking-in-react.md           |  631 ++++
 docs/src/learn/tutorial-material-ui.md        |    3 +
 docs/src/learn/tutorial-react-bootstrap.md    |    3 +
 docs/src/learn/tutorial-tic-tac-toe.md        | 2996 +++++++++++++++++
 docs/src/learn/updating-arrays-in-state.md    | 1853 ++++++++++
 docs/src/learn/updating-objects-in-state.md   | 1569 +++++++++
 docs/src/learn/vdom-mutations.md              |    3 +
 docs/src/learn/writing-markup-with-psx.md     |  326 ++
 .../src/learn/you-might-not-need-an-effect.md | 1702 ++++++++++
 docs/src/learn/your-first-component.md        |  404 +++
 docs/src/reference/client-api.md              |    3 +
 docs/src/reference/common-events.md           |    3 +
 docs/src/reference/common-props.md            |    3 +
 docs/src/reference/common-types.md            |    3 +
 docs/src/reference/django.md                  |    3 +
 docs/src/reference/fastapi.md                 |    3 +
 docs/src/reference/flask.md                   |    3 +
 docs/src/reference/jupyter.md                 |    3 +
 docs/src/reference/plotly-dash.md             |    3 +
 docs/src/reference/protocol-structure.md      |    3 +
 docs/src/reference/sanic.md                   |    3 +
 docs/src/reference/starlette.md               |    3 +
 docs/src/reference/tornado.md                 |    3 +
 docs/src/reference/usage.md                   |    3 +
 docs/src/reference/use-callback.md            |    3 +
 docs/src/reference/use-connection.md          |    3 +
 docs/src/reference/use-context.md             |    3 +
 docs/src/reference/use-debug-value.md         |    3 +
 docs/src/reference/use-effect.md              |    3 +
 docs/src/reference/use-location.md            |    3 +
 docs/src/reference/use-memo.md                |    3 +
 docs/src/reference/use-reducer.md             |    3 +
 docs/src/reference/use-ref.md                 |    3 +
 docs/src/reference/use-scope.md               |    3 +
 docs/src/reference/use-state.md               |    3 +
 docs/src/static/css/extra.css                 |  323 ++
 .../static/images/s_thinking-in-react_ui.png  |  Bin 0 -> 25981 bytes
 .../images/s_thinking-in-react_ui_outline.png |  Bin 0 -> 83418 bytes
 docs/src/static/js/extra.js                   |   19 +
 mkdocs.yml                                    |  178 +
 285 files changed, 44339 insertions(+), 14644 deletions(-)
 delete mode 100644 .github/workflows/.hatch-run.yml
 delete mode 100644 .github/workflows/check.yml
 delete mode 100644 .github/workflows/codeql-analysis.yml
 delete mode 100644 .github/workflows/deploy-docs.yml
 delete mode 100644 .github/workflows/publish.yml
 create mode 100644 CHANGELOG.md
 delete mode 100644 docs/.gitignore
 delete mode 100644 docs/Dockerfile
 create mode 100644 docs/LICENSE.md
 delete mode 100644 docs/README.md
 delete mode 100644 docs/docs_app/app.py
 delete mode 100644 docs/docs_app/dev.py
 delete mode 100644 docs/docs_app/examples.py
 delete mode 100644 docs/docs_app/prod.py
 create mode 100644 docs/examples/css/quick_start/adding_styles.css
 create mode 100644 docs/examples/css/quick_start/displaying_data.css
 create mode 100644 docs/examples/css/quick_start/sharing_data_between_components.css
 create mode 100644 docs/examples/css/quick_start/updating_the_screen.css
 create mode 100644 docs/examples/css/tutorial-tic-tac-toe/tic_tac_toe.css
 rename docs/{docs_app => examples/python}/__init__.py (100%)
 create mode 100644 docs/examples/python/quick_start/__init__.py
 create mode 100644 docs/examples/python/quick_start/adding_styles.py
 create mode 100644 docs/examples/python/quick_start/conditional_rendering.py
 create mode 100644 docs/examples/python/quick_start/conditional_rendering_logical_and.py
 create mode 100644 docs/examples/python/quick_start/conditional_rendering_ternary.py
 create mode 100644 docs/examples/python/quick_start/creating_and_nesting_components.py
 create mode 100644 docs/examples/python/quick_start/displaying_data.py
 create mode 100644 docs/examples/python/quick_start/my_app.py
 create mode 100644 docs/examples/python/quick_start/my_button.py
 create mode 100644 docs/examples/python/quick_start/rendering_lists.py
 create mode 100644 docs/examples/python/quick_start/rendering_lists_list_items.py
 create mode 100644 docs/examples/python/quick_start/rendering_lists_products.py
 create mode 100644 docs/examples/python/quick_start/responding_to_events.py
 create mode 100644 docs/examples/python/quick_start/sharing_data_between_components.py
 create mode 100644 docs/examples/python/quick_start/sharing_data_between_components_button.py
 create mode 100644 docs/examples/python/quick_start/sharing_data_between_components_move_state.py
 create mode 100644 docs/examples/python/quick_start/sharing_data_between_components_props.py
 create mode 100644 docs/examples/python/quick_start/updating_the_screen.py
 create mode 100644 docs/examples/python/quick_start/updating_the_screen_event.py
 create mode 100644 docs/examples/python/quick_start/updating_the_screen_use_state.py
 create mode 100644 docs/examples/python/quick_start/updating_the_screen_use_state_button.py
 create mode 100644 docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py
 delete mode 100644 docs/main.py
 create mode 100644 docs/overrides/main.html
 delete mode 100644 docs/poetry.lock
 delete mode 100644 docs/pyproject.toml
 create mode 100644 docs/requirements.txt
 delete mode 100644 docs/source/_custom_js/README.md
 delete mode 100644 docs/source/_custom_js/package-lock.json
 delete mode 100644 docs/source/_custom_js/package.json
 delete mode 100644 docs/source/_custom_js/rollup.config.js
 delete mode 100644 docs/source/_custom_js/src/index.js
 delete mode 100644 docs/source/_exts/async_doctest.py
 delete mode 100644 docs/source/_exts/autogen_api_docs.py
 delete mode 100644 docs/source/_exts/build_custom_js.py
 delete mode 100644 docs/source/_exts/copy_vdom_json_schema.py
 delete mode 100644 docs/source/_exts/custom_autosectionlabel.py
 delete mode 100644 docs/source/_exts/patched_html_translator.py
 delete mode 100644 docs/source/_exts/reactpy_example.py
 delete mode 100644 docs/source/_exts/reactpy_view.py
 delete mode 100644 docs/source/_static/css/furo-theme-overrides.css
 delete mode 100644 docs/source/_static/css/larger-api-margins.css
 delete mode 100644 docs/source/_static/css/larger-headings.css
 delete mode 100644 docs/source/_static/css/reactpy-view.css
 delete mode 100644 docs/source/_static/css/sphinx-design-overrides.css
 delete mode 100644 docs/source/_static/css/widget-output-css-overrides.css
 delete mode 100644 docs/source/_static/install-and-run-reactpy.gif
 delete mode 100644 docs/source/about/changelog.rst
 delete mode 100644 docs/source/about/contributor-guide.rst
 delete mode 100644 docs/source/about/credits-and-licenses.rst
 delete mode 100644 docs/source/conf.py
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/data.json
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/data.json
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py
 delete mode 100644 docs/source/guides/adding-interactivity/components-with-state/index.rst
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py
 delete mode 100644 docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst
 delete mode 100644 docs/source/guides/adding-interactivity/index.rst
 delete mode 100644 docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py
 delete mode 100644 docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py
 delete mode 100644 docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py
 delete mode 100644 docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py
 delete mode 100644 docs/source/guides/adding-interactivity/multiple-state-updates/index.rst
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py
 delete mode 100644 docs/source/guides/adding-interactivity/responding-to-events/index.rst
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/send_message.py
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/reactpy-state-change.png
 delete mode 100644 docs/source/guides/adding-interactivity/state-as-a-snapshot/index.rst
 delete mode 100644 docs/source/guides/creating-interfaces/html-with-reactpy/index.rst
 delete mode 100644 docs/source/guides/creating-interfaces/index.rst
 delete mode 100644 docs/source/guides/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py
 delete mode 100644 docs/source/guides/creating-interfaces/rendering-data/_examples/todo_from_list.py
 delete mode 100644 docs/source/guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py
 delete mode 100644 docs/source/guides/creating-interfaces/rendering-data/index.rst
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/nested_photos.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/parametrized_photos.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/simple_photo.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/todo_list.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_div.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py
 delete mode 100644 docs/source/guides/creating-interfaces/your-first-components/index.rst
 delete mode 100644 docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py
 delete mode 100644 docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py
 delete mode 100644 docs/source/guides/escape-hatches/_examples/super_simple_chart/main.py
 delete mode 100644 docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js
 delete mode 100644 docs/source/guides/escape-hatches/distributing-javascript.rst
 delete mode 100644 docs/source/guides/escape-hatches/index.rst
 delete mode 100644 docs/source/guides/escape-hatches/javascript-components.rst
 delete mode 100644 docs/source/guides/escape-hatches/using-a-custom-backend.rst
 delete mode 100644 docs/source/guides/escape-hatches/using-a-custom-client.rst
 delete mode 100644 docs/source/guides/getting-started/_examples/debug_error_example.py
 delete mode 100644 docs/source/guides/getting-started/_examples/hello_world.py
 delete mode 100644 docs/source/guides/getting-started/_examples/run_fastapi.py
 delete mode 100644 docs/source/guides/getting-started/_examples/run_flask.py
 delete mode 100644 docs/source/guides/getting-started/_examples/run_sanic.py
 delete mode 100644 docs/source/guides/getting-started/_examples/run_starlette.py
 delete mode 100644 docs/source/guides/getting-started/_examples/run_tornado.py
 delete mode 100644 docs/source/guides/getting-started/_examples/sample_app.py
 delete mode 100644 docs/source/guides/getting-started/_static/embed-doc-ex.html
 delete mode 100644 docs/source/guides/getting-started/_static/embed-reactpy-view/index.html
 delete mode 100644 docs/source/guides/getting-started/_static/embed-reactpy-view/main.py
 delete mode 100644 docs/source/guides/getting-started/_static/embed-reactpy-view/screenshot.png
 delete mode 100644 docs/source/guides/getting-started/_static/logo-django.svg
 delete mode 100644 docs/source/guides/getting-started/_static/logo-jupyter.svg
 delete mode 100644 docs/source/guides/getting-started/_static/logo-plotly.svg
 delete mode 100644 docs/source/guides/getting-started/_static/reactpy-in-jupyterlab.gif
 delete mode 100644 docs/source/guides/getting-started/_static/shared-client-state-server-slider.gif
 delete mode 100644 docs/source/guides/getting-started/index.rst
 delete mode 100644 docs/source/guides/getting-started/installing-reactpy.rst
 delete mode 100644 docs/source/guides/getting-started/running-reactpy.rst
 delete mode 100644 docs/source/guides/managing-state/combining-contexts-and-reducers/index.rst
 delete mode 100644 docs/source/guides/managing-state/deeply-sharing-state-with-contexts/index.rst
 delete mode 100644 docs/source/guides/managing-state/how-to-structure-state/index.rst
 delete mode 100644 docs/source/guides/managing-state/index.rst
 delete mode 100644 docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/data.json
 delete mode 100644 docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/main.py
 delete mode 100644 docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/main.py
 delete mode 100644 docs/source/guides/managing-state/sharing-component-state/index.rst
 delete mode 100644 docs/source/guides/managing-state/simplifying-updates-with-reducers/index.rst
 delete mode 100644 docs/source/guides/managing-state/when-and-how-to-reset-state/index.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/_static/idom-flow-diagram.svg
 delete mode 100644 docs/source/guides/understanding-reactpy/_static/live-examples-in-docs.gif
 delete mode 100644 docs/source/guides/understanding-reactpy/_static/mvc-flow-diagram.svg
 delete mode 100644 docs/source/guides/understanding-reactpy/_static/npm-download-trends.png
 delete mode 100644 docs/source/guides/understanding-reactpy/index.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/layout-render-servers.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/representing-html.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/the-rendering-pipeline.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/the-rendering-process.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/what-are-components.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/why-reactpy-needs-keys.rst
 delete mode 100644 docs/source/guides/understanding-reactpy/writing-tests.rst
 delete mode 100644 docs/source/index.rst
 delete mode 100644 docs/source/reference/_examples/character_movement/main.py
 delete mode 100644 docs/source/reference/_examples/character_movement/static/bunny.png
 delete mode 100644 docs/source/reference/_examples/click_count.py
 delete mode 100644 docs/source/reference/_examples/material_ui_switch.py
 delete mode 100644 docs/source/reference/_examples/matplotlib_plot.py
 delete mode 100644 docs/source/reference/_examples/network_graph.py
 delete mode 100644 docs/source/reference/_examples/pigeon_maps.py
 delete mode 100644 docs/source/reference/_examples/simple_dashboard.py
 delete mode 100644 docs/source/reference/_examples/slideshow.py
 delete mode 100644 docs/source/reference/_examples/snake_game.py
 delete mode 100644 docs/source/reference/_examples/todo.py
 delete mode 100644 docs/source/reference/_examples/use_reducer_counter.py
 delete mode 100644 docs/source/reference/_examples/use_state_counter.py
 delete mode 100644 docs/source/reference/_examples/victory_chart.py
 delete mode 100644 docs/source/reference/_static/vdom-json-schema.json
 delete mode 100644 docs/source/reference/browser-events.rst
 delete mode 100644 docs/source/reference/hooks-api.rst
 delete mode 100644 docs/source/reference/html-attributes.rst
 delete mode 100644 docs/source/reference/javascript-api.rst
 delete mode 100644 docs/source/reference/specifications.rst
 create mode 100644 docs/src/about/changelog.md
 create mode 100644 docs/src/about/code.md
 create mode 100644 docs/src/about/community.md
 create mode 100644 docs/src/about/docs.md
 create mode 100644 docs/src/about/running-tests.md
 create mode 100644 docs/src/dictionary.txt
 create mode 100644 docs/src/index.md
 create mode 100644 docs/src/learn/add-react-to-an-existing-project.md
 create mode 100644 docs/src/learn/choosing-the-state-structure.md
 create mode 100644 docs/src/learn/communicate-data-between-server-and-client.md
 create mode 100644 docs/src/learn/conditional-rendering.md
 create mode 100644 docs/src/learn/convert-between-vdom-and-html.md
 create mode 100644 docs/src/learn/creating-backends.md
 create mode 100644 docs/src/learn/creating-html-tags.md
 create mode 100644 docs/src/learn/creating-vdom-event-handlers.md
 create mode 100644 docs/src/learn/editor-setup.md
 create mode 100644 docs/src/learn/extracting-state-logic-into-a-reducer.md
 create mode 100644 docs/src/learn/get-started.md
 create mode 100644 docs/src/learn/importing-and-exporting-components.md
 create mode 100644 docs/src/learn/keeping-components-pure.md
 create mode 100644 docs/src/learn/lifecycle-of-reactive-effects.md
 create mode 100644 docs/src/learn/manipulating-the-dom-with-refs.md
 create mode 100644 docs/src/learn/manually-register-a-client.md
 create mode 100644 docs/src/learn/passing-data-deeply-with-context.md
 create mode 100644 docs/src/learn/passing-props-to-a-component.md
 create mode 100644 docs/src/learn/preserving-and-resetting-state.md
 create mode 100644 docs/src/learn/python-in-psx-with-curly-braces.md
 create mode 100644 docs/src/learn/queueing-a-series-of-state-updates.md
 create mode 100644 docs/src/learn/react-developer-tools.md
 create mode 100644 docs/src/learn/reacting-to-input-with-state.md
 create mode 100644 docs/src/learn/referencing-values-with-refs.md
 create mode 100644 docs/src/learn/removing-effect-dependencies.md
 create mode 100644 docs/src/learn/render-and-commit.md
 create mode 100644 docs/src/learn/rendering-lists.md
 create mode 100644 docs/src/learn/responding-to-events.md
 create mode 100644 docs/src/learn/reusing-logic-with-custom-hooks.md
 create mode 100644 docs/src/learn/scaling-up-with-reducer-and-context.md
 create mode 100644 docs/src/learn/separating-events-from-effects.md
 create mode 100644 docs/src/learn/sharing-state-between-components.md
 create mode 100644 docs/src/learn/start-a-new-react-project.md
 create mode 100644 docs/src/learn/state-a-components-memory.md
 create mode 100644 docs/src/learn/state-as-a-snapshot.md
 create mode 100644 docs/src/learn/synchronizing-with-effects.md
 create mode 100644 docs/src/learn/thinking-in-react.md
 create mode 100644 docs/src/learn/tutorial-material-ui.md
 create mode 100644 docs/src/learn/tutorial-react-bootstrap.md
 create mode 100644 docs/src/learn/tutorial-tic-tac-toe.md
 create mode 100644 docs/src/learn/updating-arrays-in-state.md
 create mode 100644 docs/src/learn/updating-objects-in-state.md
 create mode 100644 docs/src/learn/vdom-mutations.md
 create mode 100644 docs/src/learn/writing-markup-with-psx.md
 create mode 100644 docs/src/learn/you-might-not-need-an-effect.md
 create mode 100644 docs/src/learn/your-first-component.md
 create mode 100644 docs/src/reference/client-api.md
 create mode 100644 docs/src/reference/common-events.md
 create mode 100644 docs/src/reference/common-props.md
 create mode 100644 docs/src/reference/common-types.md
 create mode 100644 docs/src/reference/django.md
 create mode 100644 docs/src/reference/fastapi.md
 create mode 100644 docs/src/reference/flask.md
 create mode 100644 docs/src/reference/jupyter.md
 create mode 100644 docs/src/reference/plotly-dash.md
 create mode 100644 docs/src/reference/protocol-structure.md
 create mode 100644 docs/src/reference/sanic.md
 create mode 100644 docs/src/reference/starlette.md
 create mode 100644 docs/src/reference/tornado.md
 create mode 100644 docs/src/reference/usage.md
 create mode 100644 docs/src/reference/use-callback.md
 create mode 100644 docs/src/reference/use-connection.md
 create mode 100644 docs/src/reference/use-context.md
 create mode 100644 docs/src/reference/use-debug-value.md
 create mode 100644 docs/src/reference/use-effect.md
 create mode 100644 docs/src/reference/use-location.md
 create mode 100644 docs/src/reference/use-memo.md
 create mode 100644 docs/src/reference/use-reducer.md
 create mode 100644 docs/src/reference/use-ref.md
 create mode 100644 docs/src/reference/use-scope.md
 create mode 100644 docs/src/reference/use-state.md
 create mode 100644 docs/src/static/css/extra.css
 create mode 100644 docs/src/static/images/s_thinking-in-react_ui.png
 create mode 100644 docs/src/static/images/s_thinking-in-react_ui_outline.png
 create mode 100644 docs/src/static/js/extra.js
 create mode 100644 mkdocs.yml

diff --git a/.github/workflows/.hatch-run.yml b/.github/workflows/.hatch-run.yml
deleted file mode 100644
index b312869e4..000000000
--- a/.github/workflows/.hatch-run.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: hatch-run
-
-on:
-  workflow_call:
-    inputs:
-      job-name:
-        required: true
-        type: string
-      hatch-run:
-        required: true
-        type: string
-      runs-on-array:
-        required: false
-        type: string
-        default: '["ubuntu-latest"]'
-      python-version-array:
-        required: false
-        type: string
-        default: '["3.x"]'
-      node-registry-url:
-        required: false
-        type: string
-        default: ""
-    secrets:
-      node-auth-token:
-        required: false
-      pypi-username:
-        required: false
-      pypi-password:
-        required: false
-
-jobs:
-  hatch:
-    name: ${{ format(inputs.job-name, matrix.python-version, matrix.runs-on) }}
-    strategy:
-      matrix:
-        python-version: ${{ fromJson(inputs.python-version-array) }}
-        runs-on: ${{ fromJson(inputs.runs-on-array) }}
-    runs-on: ${{ matrix.runs-on }}
-    steps:
-      - uses: actions/checkout@v2
-      - uses: actions/setup-node@v2
-        with:
-          node-version: "14.x"
-          registry-url: ${{ inputs.node-registry-url }}
-      - name: Pin NPM Version
-        run: npm install -g npm@8.19.3
-      - name: Use Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v2
-        with:
-          python-version: ${{ matrix.python-version }}
-      - name: Install Python Dependencies
-        run: pip install hatch poetry
-      - name: Run Scripts
-        env:
-          NODE_AUTH_TOKEN: ${{ secrets.node-auth-token }}
-          PYPI_USERNAME: ${{ secrets.pypi-username }}
-          PYPI_PASSWORD: ${{ secrets.pypi-password }}
-        run: hatch run ${{ inputs.hatch-run }}
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
deleted file mode 100644
index af768579c..000000000
--- a/.github/workflows/check.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-name: check
-
-on:
-  push:
-    branches:
-      - main
-  pull_request:
-    branches:
-      - main
-  schedule:
-    - cron: "0 0 * * 0"
-
-jobs:
-  test-py-cov:
-    uses: ./.github/workflows/.hatch-run.yml
-    with:
-      job-name: "python-{0}"
-      hatch-run: "test-py"
-  lint-py:
-    uses: ./.github/workflows/.hatch-run.yml
-    with:
-      job-name: "python-{0}"
-      hatch-run: "lint-py"
-  test-py-matrix:
-    uses: ./.github/workflows/.hatch-run.yml
-    with:
-      job-name: "python-{0} {1}"
-      hatch-run: "test-py --no-cov"
-      runs-on-array: '["ubuntu-latest", "macos-latest", "windows-latest"]'
-      python-version-array: '["3.9", "3.10", "3.11"]'
-  test-docs:
-    uses: ./.github/workflows/.hatch-run.yml
-    with:
-      job-name: "python-{0}"
-      hatch-run: "test-docs"
-  test-js:
-    uses: ./.github/workflows/.hatch-run.yml
-    with:
-      job-name: "{1}"
-      hatch-run: "test-js"
-  lint-js:
-    uses: ./.github/workflows/.hatch-run.yml
-    with:
-      job-name: "{1}"
-      hatch-run: "lint-js"
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
deleted file mode 100644
index b4f77ee00..000000000
--- a/.github/workflows/codeql-analysis.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-# For most projects, this workflow file will not need changing; you simply need
-# to commit it to your repository.
-#
-# You may wish to alter this file to override the set of languages analyzed,
-# or to provide custom queries or build logic.
-#
-# ******** NOTE ********
-# We have attempted to detect the languages in your repository. Please check
-# the `language` matrix defined below to confirm you have the correct set of
-# supported CodeQL languages.
-#
-name: codeql
-
-on:
-  push:
-    branches: [main]
-  pull_request:
-    # The branches below must be a subset of the branches above
-    branches: [main]
-  schedule:
-    - cron: "43 3 * * 3"
-
-jobs:
-  analyze:
-    name: Analyze
-    runs-on: ubuntu-latest
-    permissions:
-      actions: read
-      contents: read
-      security-events: write
-
-    strategy:
-      fail-fast: false
-      matrix:
-        language: ["javascript", "python"]
-        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
-        # Learn more:
-        # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
-
-    steps:
-      - name: Checkout repository
-        uses: actions/checkout@v2
-
-      # Initializes the CodeQL tools for scanning.
-      - name: Initialize CodeQL
-        uses: github/codeql-action/init@v1
-        with:
-          languages: ${{ matrix.language }}
-          # If you wish to specify custom queries, you can do so here or in a config file.
-          # By default, queries listed here will override any specified in a config file.
-          # Prefix the list here with "+" to use these queries and those in the config file.
-          # queries: ./path/to/local/query, your-org/your-repo/queries@main
-
-      # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
-      # If this step fails, then you should remove it and run the build manually (see below)
-      - name: Autobuild
-        uses: github/codeql-action/autobuild@v1
-
-      # ℹ️ Command-line programs to run using the OS shell.
-      # 📚 https://git.io/JvXDl
-
-      # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
-      #    and modify them (or add more) to build your code if your project
-      #    uses a compiled language
-
-      #- run: |
-      #   make bootstrap
-      #   make release
-
-      - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
deleted file mode 100644
index 7337f505b..000000000
--- a/.github/workflows/deploy-docs.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# This workflows will upload a Python Package using Twine when a release is created
-# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
-
-name: deploy-docs
-
-on:
-  push:
-    branches:
-      - "main"
-    tags:
-      - "*"
-
-jobs:
-  deploy-documentation:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out src from Git
-        uses: actions/checkout@v2
-      - name: Get history and tags for SCM versioning to work
-        run: |
-          git fetch --prune --unshallow
-          git fetch --depth=1 origin +refs/tags/*:refs/tags/*
-      - name: Login to Heroku Container Registry
-        run: echo ${{ secrets.HEROKU_API_KEY }} | docker login -u ${{ secrets.HEROKU_EMAIL }} --password-stdin registry.heroku.com
-      - name: Build Docker Image
-        run: docker build . --file docs/Dockerfile --tag registry.heroku.com/${{ secrets.HEROKU_APP_NAME }}/web
-      - name: Push Docker Image
-        run: docker push registry.heroku.com/${{ secrets.HEROKU_APP_NAME }}/web
-      - name: Deploy
-        run: HEROKU_API_KEY=${{ secrets.HEROKU_API_KEY }} heroku container:release web --app ${{ secrets.HEROKU_APP_NAME }}
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
deleted file mode 100644
index e9271cbd5..000000000
--- a/.github/workflows/publish.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-# This workflows will upload a Javscript Package using NPM to npmjs.org when a release is created
-# For more information see: https://docs.github.com/en/actions/guides/publishing-nodejs-packages
-
-name: publish
-
-on:
-  release:
-    types: [published]
-
-jobs:
-  publish:
-    uses: ./.github/workflows/.hatch-run.yml
-    with:
-      job-name: "publish"
-      hatch-run: "publish"
-      node-registry-url: "https://registry.npmjs.org"
-    secrets:
-      node-auth-token: ${{ secrets.NODE_AUTH_TOKEN }}
-      pypi-username: ${{ secrets.PYPI_USERNAME }}
-      pypi-password: ${{ secrets.PYPI_PASSWORD }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000..5ae0eb0af
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,199 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+<!--attr-start-->
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+<!--attr-end-->
+
+<!--
+Using the following categories, list your changes in this order:
+    - "Added" for new features.
+    - "Changed" for changes in existing functionality.
+    - "Deprecated" for soon-to-be removed features.
+    - "Removed" for now removed features.
+    - "Fixed" for any bug fixes.
+    - "Security" in case of vulnerabilities.
+ -->
+
+<!--changelog-start-->
+
+## [Unreleased]
+
+-   Nothing (yet)
+
+## [2.2.0] - 2022-12-28
+
+### Added
+
+-   Add `options: QueryOptions` parameter to `use_query` to allow for configuration of this hook.
+
+### Changed
+
+-   By default, `use_query` will recursively prefetch all many-to-many or many-to-one relationships to prevent `SynchronousOnlyOperation` exceptions.
+
+### Removed
+
+-   `django_idom.hooks._fetch_lazy_fields` has been deleted. The equivalent replacement is `django_idom.utils.django_query_postprocessor`.
+
+## [2.1.0] - 2022-11-01
+
+### Changed
+
+-   Minimum `channels` version is now `4.0.0`.
+
+### Fixed
+
+-   Change type hint on `view_to_component` callable to have `request` argument be optional.
+-   Change type hint on `view_to_component` to represent it as a decorator with parenthesis (such as `@view_to_component(compatibility=True)`)
+
+### Security
+
+-   Add note to docs about potential information exposure via `view_to_component` when using `compatibility=True`.
+
+## [2.0.1] - 2022-10-18
+
+### Fixed
+
+-   Ability to use `key=...` parameter on all prefabricated components.
+
+## [2.0.0] - 2022-10-17
+
+### Added
+
+-   `use_origin` hook for returning the browser's `location.origin`.
+
+### Changed
+
+-   `view_to_component` now returns a `Callable`, instead of directly returning a `Component`. Check the docs for new usage info.
+-   `use_mutation` and `use_query` will now log any query failures.
+
+### Fixed
+
+-   Allow `use_mutation` to have `refetch=None`, as the docs suggest is possible.
+-   `use_query` will now prefetch all fields to prevent `SynchronousOnlyOperation` exceptions.
+-   `view_to_component`, `django_css`, and `django_js` type hints will now display like normal functions.
+-   IDOM preloader no longer attempts to parse commented out IDOM components.
+-   Tests are now fully functional on Windows
+
+## [1.2.0] - 2022-09-19
+
+### Added
+
+-   `auth_required` decorator to prevent your components from rendering to unauthenticated users.
+-   `use_query` hook for fetching database values.
+-   `use_mutation` hook for modifying database values.
+-   `view_to_component` utility to convert legacy Django views to IDOM components.
+
+### Changed
+
+-   Bumped the minimum IDOM version to 0.40.2
+-   Testing suite now uses `playwright` instead of `selenium`
+
+### Fixed
+
+-   IDOM preloader is no longer sensitive to whitespace within template tags.
+
+## [1.1.0] - 2022-07-01
+
+### Added
+
+-   `django_css` and `django_js` components to defer loading CSS & JS files until needed.
+
+### Changed
+
+-   Bumped the minimum IDOM version to 0.39.0
+
+## [1.0.0] - 2022-05-22
+
+### Added
+
+-   Django-specific hooks! `use_websocket`, `use_scope`, and `use_location` are now available within the `django_idom.hooks` module.
+-   Documentation has been placed into a formal docs webpage.
+-   Logging for when a component fails to import, or if no components were found within Django.
+
+### Changed
+
+-   `idom_component` template tag has been renamed to `component`
+-   Bumped the minimum IDOM version to 0.38.0
+
+### Removed
+
+-   `websocket` parameter for components has been removed. Functionally, it is replaced with `django_idom.hooks.use_websocket`.
+
+## [0.0.5] - 2022-04-04
+
+### Changed
+
+-   Bumped the minimum IDOM version to 0.37.2
+
+### Fixed
+
+-   ModuleNotFoundError: No module named `idom.core.proto` caused by IDOM 0.37.2
+
+## [0.0.4] - 2022-03-05
+
+### Changed
+
+-   Bumped the minimum IDOM version to 0.37.1
+
+## [0.0.3] - 2022-02-19
+
+### Changed
+
+-   Bumped the minimum IDOM version to 0.36.3
+
+## [0.0.2] - 2022-01-30
+
+### Added
+
+-   Ability to declare the HTML class of the top-level component `div`
+-   `name = ...` parameter to IDOM HTTP paths for use with `django.urls.reverse()`
+-   Cache versioning to automatically invalidate old web module files from the cache back-end
+-   Automatic pre-population of the IDOM component registry
+-   Type hinting for `IdomWebsocket`
+
+### Changed
+
+-   Fetching web modules from disk and/or cache is now fully async
+-   Static files are now contained within a `django_idom/` parent folder
+-   Upgraded IDOM to version `0.36.0`
+-   Minimum Django version required is now `4.0`
+-   Minimum Python version required is now `3.8`
+
+### Removed
+
+-   `IDOM_WEB_MODULES_PATH` has been replaced with Django `include(...)`
+-   `IDOM_WS_MAX_RECONNECT_DELAY` has been renamed to `IDOM_WS_MAX_RECONNECT_TIMEOUT`
+-   `idom_web_modules` cache back-end has been renamed to `idom`
+
+### Fixed
+
+-   Increase test timeout values to prevent false positives
+-   Windows compatibility for building Django-IDOM
+
+### Security
+
+-   Fixed potential directory traversal attack on the IDOM web modules URL
+
+## [0.0.1] - 2021-08-18
+
+### Added
+
+-   Support for IDOM within the Django
+
+[unreleased]: https://github.com/idom-team/django-idom/compare/2.2.0...HEAD
+[2.2.0]: https://github.com/idom-team/django-idom/compare/2.1.0...2.2.0
+[2.1.0]: https://github.com/idom-team/django-idom/compare/2.0.1...2.1.0
+[2.0.1]: https://github.com/idom-team/django-idom/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/idom-team/django-idom/compare/1.2.0...2.0.0
+[1.2.0]: https://github.com/idom-team/django-idom/compare/1.1.0...1.2.0
+[1.1.0]: https://github.com/idom-team/django-idom/compare/1.0.0...1.1.0
+[1.0.0]: https://github.com/idom-team/django-idom/compare/0.0.5...1.0.0
+[0.0.5]: https://github.com/idom-team/django-idom/compare/0.0.4...0.0.5
+[0.0.4]: https://github.com/idom-team/django-idom/compare/0.0.3...0.0.4
+[0.0.3]: https://github.com/idom-team/django-idom/compare/0.0.2...0.0.3
+[0.0.2]: https://github.com/idom-team/django-idom/compare/0.0.1...0.0.2
+[0.0.1]: https://github.com/idom-team/django-idom/releases/tag/0.0.1
diff --git a/README.md b/README.md
index 83241e19a..0086a306a 100644
--- a/README.md
+++ b/README.md
@@ -1,72 +1,5 @@
-# <img src="https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg" align="left" height="45"/> ReactPy
+Temporary branch being used to rewrite ReactPy's documentation.
 
-<p>
-    <a href="https://github.com/reactive-python/reactpy/actions">
-        <img src="https://github.com/reactive-python/reactpy/workflows/test/badge.svg?event=push">
-    </a>
-    <a href="https://pypi.org/project/reactpy/">
-        <img src="https://img.shields.io/pypi/v/reactpy.svg?label=PyPI">
-    </a>
-    <a href="https://github.com/reactive-python/reactpy/blob/main/LICENSE">
-        <img src="https://img.shields.io/badge/License-MIT-purple.svg">
-    </a>
-    <a href="https://reactpy.dev/">
-        <img src="https://img.shields.io/website?down_message=offline&label=Docs&logo=read-the-docs&logoColor=white&up_message=online&url=https%3A%2F%2Freactpy.dev%2Fdocs%2Findex.html">
-    </a>
-    <a href="https://discord.gg/uNb5P4hA9X">
-        <img src="https://img.shields.io/discord/1111078259854168116?label=Discord&logo=discord">
-    </a>
-</p>
+Many of these pages are in progress, and are using the [original ReactJS pages](https://beta.reactjs.org/learn) as placeholders.
 
-
-[ReactPy](https://reactpy.dev/) is a library for building user interfaces in Python without Javascript. ReactPy interfaces are made from components that look and behave similar to those found in [ReactJS](https://reactjs.org/). Designed with simplicity in mind, ReactPy can be used by those without web development experience while also being powerful enough to grow with your ambitions.
-
-<table align="center">
-    <thead>
-        <tr>
-            <th colspan="2" style="text-align: center">Supported Backends</th>
-        <tr>
-            <th style="text-align: center">Built-in</th>
-            <th style="text-align: center">External</th>
-        </tr>
-    </thead>
-    <tbody>
-        <tr>
-        <td>
-            <a href="https://reactpy.dev/docs/guides/getting-started/installing-reactpy.html#officially-supported-servers">
-                Flask, FastAPI, Sanic, Tornado
-            </a>
-        </td>
-        <td>
-            <a href="https://github.com/reactive-python/reactpy-django">Django</a>,
-            <a href="https://github.com/reactive-python/reactpy-jupyter">Jupyter</a>,
-            <a href="https://github.com/idom-team/idom-dash">Plotly-Dash</a>
-        </td>
-        </tr>
-    </tbody>
-</table>
-
-# At a Glance
-
-To get a rough idea of how to write apps in ReactPy, take a look at this tiny _Hello World_ application.
-
-```python
-from reactpy import component, html, run
-
-@component
-def hello_world():
-    return html.h1("Hello, World!")
-
-run(hello_world)
-```
-
-# Resources
-
-Follow the links below to find out more about this project.
-
--   [Try ReactPy (Jupyter Notebook)](https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb)
--   [Documentation](https://reactpy.dev/)
--   [GitHub Discussions](https://github.com/reactive-python/reactpy/discussions)
--   [Discord](https://discord.gg/uNb5P4hA9X)
--   [Contributor Guide](https://reactpy.dev/docs/about/contributor-guide.html)
--   [Code of Conduct](https://github.com/reactive-python/reactpy/blob/main/CODE_OF_CONDUCT.md)
+See live preview here: https://archmonger.github.io/reactpy-docs/
diff --git a/docs/.gitignore b/docs/.gitignore
deleted file mode 100644
index ea38eebf8..000000000
--- a/docs/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-build
-source/_auto
-source/_static/custom.js
-source/vdom-json-schema.json
diff --git a/docs/Dockerfile b/docs/Dockerfile
deleted file mode 100644
index 76a8ad7ee..000000000
--- a/docs/Dockerfile
+++ /dev/null
@@ -1,40 +0,0 @@
-FROM python:3.9
-
-WORKDIR /app/
-
-# Install NodeJS
-# --------------
-RUN curl -sL https://deb.nodesource.com/setup_14.x  | bash -
-RUN apt-get install -yq nodejs build-essential
-RUN npm install -g npm@8.5.0
-
-# Install Poetry
-# --------------
-RUN pip install poetry
-
-# Create/Activate Python Venv
-# ---------------------------
-ENV VIRTUAL_ENV=/opt/venv
-RUN python3 -m venv $VIRTUAL_ENV
-ENV PATH="$VIRTUAL_ENV/bin:$PATH"
-RUN pip install --upgrade pip
-
-# Copy Files
-# ----------
-COPY LICENSE ./
-COPY src ./src
-COPY docs ./docs
-COPY branding ./branding
-
-# Install and Build Docs
-# ----------------------
-WORKDIR /app/docs
-RUN poetry install
-RUN sphinx-build -v -W -b html source build
-
-# Define Entrypoint
-# -----------------
-ENV PORT 5000
-ENV REACTPY_DEBUG_MODE=1
-ENV REACTPY_CHECK_VDOM_SPEC=0
-CMD python main.py
diff --git a/docs/LICENSE.md b/docs/LICENSE.md
new file mode 100644
index 000000000..d21a91a91
--- /dev/null
+++ b/docs/LICENSE.md
@@ -0,0 +1,393 @@
+Attribution 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+     Considerations for licensors: Our public licenses are
+     intended for use by those authorized to give the public
+     permission to use material in ways otherwise restricted by
+     copyright and certain other rights. Our licenses are
+     irrevocable. Licensors should read and understand the terms
+     and conditions of the license they choose before applying it.
+     Licensors should also secure all rights necessary before
+     applying our licenses so that the public can reuse the
+     material as expected. Licensors should clearly mark any
+     material not subject to the license. This includes other CC-
+     licensed material, or material used under an exception or
+     limitation to copyright. More considerations for licensors:
+  wiki.creativecommons.org/Considerations_for_licensors
+
+     Considerations for the public: By using one of our public
+     licenses, a licensor grants the public permission to use the
+     licensed material under specified terms and conditions. If
+     the licensor's permission is not necessary for any reason--for
+     example, because of any applicable exception or limitation to
+     copyright--then that use is not regulated by the license. Our
+     licenses grant only permissions under copyright and certain
+     other rights that a licensor has authority to grant. Use of
+     the licensed material may still be restricted for other
+     reasons, including because others have copyright or other
+     rights in the material. A licensor may make special requests,
+     such as asking that all changes be marked or described.
+     Although not required by our licenses, you are encouraged to
+     respect those requests where reasonable. More_considerations
+     for the public:
+  wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution 4.0 International Public License ("Public License"). To the
+extent this Public License may be interpreted as a contract, You are
+granted the Licensed Rights in consideration of Your acceptance of
+these terms and conditions, and the Licensor grants You such rights in
+consideration of benefits the Licensor receives from making the
+Licensed Material available under these terms and conditions.
+
+
+Section 1 -- Definitions.
+
+  a. Adapted Material means material subject to Copyright and Similar
+     Rights that is derived from or based upon the Licensed Material
+     and in which the Licensed Material is translated, altered,
+     arranged, transformed, or otherwise modified in a manner requiring
+     permission under the Copyright and Similar Rights held by the
+     Licensor. For purposes of this Public License, where the Licensed
+     Material is a musical work, performance, or sound recording,
+     Adapted Material is always produced where the Licensed Material is
+     synched in timed relation with a moving image.
+
+  b. Adapter's License means the license You apply to Your Copyright
+     and Similar Rights in Your contributions to Adapted Material in
+     accordance with the terms and conditions of this Public License.
+
+  c. Copyright and Similar Rights means copyright and/or similar rights
+     closely related to copyright including, without limitation,
+     performance, broadcast, sound recording, and Sui Generis Database
+     Rights, without regard to how the rights are labeled or
+     categorized. For purposes of this Public License, the rights
+     specified in Section 2(b)(1)-(2) are not Copyright and Similar
+     Rights.
+
+  d. Effective Technological Measures means those measures that, in the
+     absence of proper authority, may not be circumvented under laws
+     fulfilling obligations under Article 11 of the WIPO Copyright
+     Treaty adopted on December 20, 1996, and/or similar international
+     agreements.
+
+  e. Exceptions and Limitations means fair use, fair dealing, and/or
+     any other exception or limitation to Copyright and Similar Rights
+     that applies to Your use of the Licensed Material.
+
+  f. Licensed Material means the artistic or literary work, database,
+     or other material to which the Licensor applied this Public
+     License.
+
+  g. Licensed Rights means the rights granted to You subject to the
+     terms and conditions of this Public License, which are limited to
+     all Copyright and Similar Rights that apply to Your use of the
+     Licensed Material and that the Licensor has authority to license.
+
+  h. Licensor means the individual(s) or entity(ies) granting rights
+     under this Public License.
+
+  i. Share means to provide material to the public by any means or
+     process that requires permission under the Licensed Rights, such
+     as reproduction, public display, public performance, distribution,
+     dissemination, communication, or importation, and to make material
+     available to the public including in ways that members of the
+     public may access the material from a place and at a time
+     individually chosen by them.
+
+  j. Sui Generis Database Rights means rights other than copyright
+     resulting from Directive 96/9/EC of the European Parliament and of
+     the Council of 11 March 1996 on the legal protection of databases,
+     as amended and/or succeeded, as well as other essentially
+     equivalent rights anywhere in the world.
+
+  k. You means the individual or entity exercising the Licensed Rights
+     under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+  a. License grant.
+
+       1. Subject to the terms and conditions of this Public License,
+          the Licensor hereby grants You a worldwide, royalty-free,
+          non-sublicensable, non-exclusive, irrevocable license to
+          exercise the Licensed Rights in the Licensed Material to:
+
+            a. reproduce and Share the Licensed Material, in whole or
+               in part; and
+
+            b. produce, reproduce, and Share Adapted Material.
+
+       2. Exceptions and Limitations. For the avoidance of doubt, where
+          Exceptions and Limitations apply to Your use, this Public
+          License does not apply, and You do not need to comply with
+          its terms and conditions.
+
+       3. Term. The term of this Public License is specified in Section
+          6(a).
+
+       4. Media and formats; technical modifications allowed. The
+          Licensor authorizes You to exercise the Licensed Rights in
+          all media and formats whether now known or hereafter created,
+          and to make technical modifications necessary to do so. The
+          Licensor waives and/or agrees not to assert any right or
+          authority to forbid You from making technical modifications
+          necessary to exercise the Licensed Rights, including
+          technical modifications necessary to circumvent Effective
+          Technological Measures. For purposes of this Public License,
+          simply making modifications authorized by this Section 2(a)
+          (4) never produces Adapted Material.
+
+       5. Downstream recipients.
+
+            a. Offer from the Licensor -- Licensed Material. Every
+               recipient of the Licensed Material automatically
+               receives an offer from the Licensor to exercise the
+               Licensed Rights under the terms and conditions of this
+               Public License.
+
+            b. No downstream restrictions. You may not offer or impose
+               any additional or different terms or conditions on, or
+               apply any Effective Technological Measures to, the
+               Licensed Material if doing so restricts exercise of the
+               Licensed Rights by any recipient of the Licensed
+               Material.
+
+       6. No endorsement. Nothing in this Public License constitutes or
+          may be construed as permission to assert or imply that You
+          are, or that Your use of the Licensed Material is, connected
+          with, or sponsored, endorsed, or granted official status by,
+          the Licensor or others designated to receive attribution as
+          provided in Section 3(a)(1)(A)(i).
+
+  b. Other rights.
+
+       1. Moral rights, such as the right of integrity, are not
+          licensed under this Public License, nor are publicity,
+          privacy, and/or other similar personality rights; however, to
+          the extent possible, the Licensor waives and/or agrees not to
+          assert any such rights held by the Licensor to the limited
+          extent necessary to allow You to exercise the Licensed
+          Rights, but not otherwise.
+
+       2. Patent and trademark rights are not licensed under this
+          Public License.
+
+       3. To the extent possible, the Licensor waives any right to
+          collect royalties from You for the exercise of the Licensed
+          Rights, whether directly or through a collecting society
+          under any voluntary or waivable statutory or compulsory
+          licensing scheme. In all other cases the Licensor expressly
+          reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+  a. Attribution.
+
+       1. If You Share the Licensed Material (including in modified
+          form), You must:
+
+            a. retain the following if it is supplied by the Licensor
+               with the Licensed Material:
+
+                 i. identification of the creator(s) of the Licensed
+                    Material and any others designated to receive
+                    attribution, in any reasonable manner requested by
+                    the Licensor (including by pseudonym if
+                    designated);
+
+                ii. a copyright notice;
+
+               iii. a notice that refers to this Public License;
+
+                iv. a notice that refers to the disclaimer of
+                    warranties;
+
+                 v. a URI or hyperlink to the Licensed Material to the
+                    extent reasonably practicable;
+
+            b. indicate if You modified the Licensed Material and
+               retain an indication of any previous modifications; and
+
+            c. indicate the Licensed Material is licensed under this
+               Public License, and include the text of, or the URI or
+               hyperlink to, this Public License.
+
+       2. You may satisfy the conditions in Section 3(a)(1) in any
+          reasonable manner based on the medium, means, and context in
+          which You Share the Licensed Material. For example, it may be
+          reasonable to satisfy the conditions by providing a URI or
+          hyperlink to a resource that includes the required
+          information.
+
+       3. If requested by the Licensor, You must remove any of the
+          information required by Section 3(a)(1)(A) to the extent
+          reasonably practicable.
+
+       4. If You Share Adapted Material You produce, the Adapter's
+          License You apply must not prevent recipients of the Adapted
+          Material from complying with this Public License.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+  a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+     to extract, reuse, reproduce, and Share all or a substantial
+     portion of the contents of the database;
+
+  b. if You include all or a substantial portion of the database
+     contents in a database in which You have Sui Generis Database
+     Rights, then the database in which You have Sui Generis Database
+     Rights (but not its individual contents) is Adapted Material; and
+
+  c. You must comply with the conditions in Section 3(a) if You Share
+     all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+  c. The disclaimer of warranties and limitation of liability provided
+     above shall be interpreted in a manner that, to the extent
+     possible, most closely approximates an absolute disclaimer and
+     waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+  a. This Public License applies for the term of the Copyright and
+     Similar Rights licensed here. However, if You fail to comply with
+     this Public License, then Your rights under this Public License
+     terminate automatically.
+
+  b. Where Your right to use the Licensed Material has terminated under
+     Section 6(a), it reinstates:
+
+       1. automatically as of the date the violation is cured, provided
+          it is cured within 30 days of Your discovery of the
+          violation; or
+
+       2. upon express reinstatement by the Licensor.
+
+     For the avoidance of doubt, this Section 6(b) does not affect any
+     right the Licensor may have to seek remedies for Your violations
+     of this Public License.
+
+  c. For the avoidance of doubt, the Licensor may also offer the
+     Licensed Material under separate terms or conditions or stop
+     distributing the Licensed Material at any time; however, doing so
+     will not terminate this Public License.
+
+  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+     License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+  a. The Licensor shall not be bound by any additional or different
+     terms or conditions communicated by You unless expressly agreed.
+
+  b. Any arrangements, understandings, or agreements regarding the
+     Licensed Material not stated herein are separate from and
+     independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+  a. For the avoidance of doubt, this Public License does not, and
+     shall not be interpreted to, reduce, limit, restrict, or impose
+     conditions on any use of the Licensed Material that could lawfully
+     be made without permission under this Public License.
+
+  b. To the extent possible, if any provision of this Public License is
+     deemed unenforceable, it shall be automatically reformed to the
+     minimum extent necessary to make it enforceable. If the provision
+     cannot be reformed, it shall be severed from this Public License
+     without affecting the enforceability of the remaining terms and
+     conditions.
+
+  c. No term or condition of this Public License will be waived and no
+     failure to comply consented to unless expressly agreed to by the
+     Licensor.
+
+  d. Nothing in this Public License constitutes or may be interpreted
+     as a limitation upon, or waiver of, any privileges and immunities
+     that apply to the Licensor or You, including from the legal
+     processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public licenses.
+Notwithstanding, Creative Commons may elect to apply one of its public
+licenses to material it publishes and in those instances will be
+considered the "Licensor." Except for the limited purpose of indicating
+that material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the public
+licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/docs/README.md b/docs/README.md
deleted file mode 100644
index 1360bc825..000000000
--- a/docs/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# ReactPy's Documentation
-
-We provide two main ways to run the docs. Both use
-[`nox`](https://pypi.org/project/nox/):
-
-- `nox -s docs` - displays the docs and rebuilds when files are modified.
-- `nox -s docs-in-docker` - builds a docker image and runs the docs from there.
-
-If any changes to the core of the documentation are made (i.e. to non-`*.rst` files),
-then you should run a manual test of the documentation using the `docs_in_docker`
-session.
-
-If you wish to build and run the docs by hand you need to perform two commands, each
-being run from the root of the repository:
-
-- `sphinx-build -b html docs/source docs/build`
-- `python scripts/run_docs.py`
-
-The first command constructs the static HTML and any Javascript. The latter actually
-runs the web server that serves the content.
diff --git a/docs/docs_app/app.py b/docs/docs_app/app.py
deleted file mode 100644
index 3fe4669ff..000000000
--- a/docs/docs_app/app.py
+++ /dev/null
@@ -1,59 +0,0 @@
-from logging import getLogger
-from pathlib import Path
-
-from sanic import Sanic, response
-
-from docs_app.examples import get_normalized_example_name, load_examples
-from reactpy import component
-from reactpy.backend.sanic import Options, configure, use_request
-from reactpy.core.types import ComponentConstructor
-
-THIS_DIR = Path(__file__).parent
-DOCS_DIR = THIS_DIR.parent
-DOCS_BUILD_DIR = DOCS_DIR / "build"
-
-REACTPY_MODEL_SERVER_URL_PREFIX = "/_reactpy"
-
-logger = getLogger(__name__)
-
-
-REACTPY_MODEL_SERVER_URL_PREFIX = "/_reactpy"
-
-
-@component
-def Example():
-    raw_view_id = use_request().get_args().get("view_id")
-    view_id = get_normalized_example_name(raw_view_id)
-    return _get_examples()[view_id]()
-
-
-def _get_examples():
-    if not _EXAMPLES:
-        _EXAMPLES.update(load_examples())
-    return _EXAMPLES
-
-
-def reload_examples():
-    _EXAMPLES.clear()
-    _EXAMPLES.update(load_examples())
-
-
-_EXAMPLES: dict[str, ComponentConstructor] = {}
-
-
-def make_app(name: str):
-    app = Sanic(name)
-
-    app.static("/docs", str(DOCS_BUILD_DIR))
-
-    @app.route("/")
-    async def forward_to_index(_):
-        return response.redirect("/docs/index.html")
-
-    configure(
-        app,
-        Example,
-        Options(url_prefix=REACTPY_MODEL_SERVER_URL_PREFIX),
-    )
-
-    return app
diff --git a/docs/docs_app/dev.py b/docs/docs_app/dev.py
deleted file mode 100644
index 5d661924d..000000000
--- a/docs/docs_app/dev.py
+++ /dev/null
@@ -1,104 +0,0 @@
-import asyncio
-import os
-import threading
-import time
-import webbrowser
-
-from sphinx_autobuild.cli import (
-    Server,
-    _get_build_args,
-    _get_ignore_handler,
-    find_free_port,
-    get_builder,
-    get_parser,
-)
-
-from docs_app.app import make_app, reload_examples
-from reactpy.backend.sanic import serve_development_app
-from reactpy.testing import clear_reactpy_web_modules_dir
-
-# these environment variable are used in custom Sphinx extensions
-os.environ["REACTPY_DOC_EXAMPLE_SERVER_HOST"] = "127.0.0.1:5555"
-os.environ["REACTPY_DOC_STATIC_SERVER_HOST"] = ""
-
-
-def wrap_builder(old_builder):
-    # This is the bit that we're injecting to get the example components to reload too
-
-    app = make_app("docs_dev_app")
-
-    thread_started = threading.Event()
-
-    def run_in_thread():
-        loop = asyncio.new_event_loop()
-        asyncio.set_event_loop(loop)
-
-        server_started = asyncio.Event()
-
-        async def set_thread_event_when_started():
-            await server_started.wait()
-            thread_started.set()
-
-        loop.run_until_complete(
-            asyncio.gather(
-                serve_development_app(app, "127.0.0.1", 5555, server_started),
-                set_thread_event_when_started(),
-            )
-        )
-
-    threading.Thread(target=run_in_thread, daemon=True).start()
-
-    thread_started.wait()
-
-    def new_builder():
-        clear_reactpy_web_modules_dir()
-        reload_examples()
-        old_builder()
-
-    return new_builder
-
-
-def main():
-    # Mostly copied from https://github.com/executablebooks/sphinx-autobuild/blob/b54fb08afc5112bfcda1d844a700c5a20cd6ba5e/src/sphinx_autobuild/cli.py
-    parser = get_parser()
-    args = parser.parse_args()
-
-    srcdir = os.path.realpath(args.sourcedir)
-    outdir = os.path.realpath(args.outdir)
-    if not os.path.exists(outdir):
-        os.makedirs(outdir)
-
-    server = Server()
-
-    build_args, pre_build_commands = _get_build_args(args)
-    builder = wrap_builder(
-        get_builder(
-            server.watcher,
-            build_args,
-            host=args.host,
-            port=args.port,
-            pre_build_commands=pre_build_commands,
-        )
-    )
-
-    ignore_handler = _get_ignore_handler(args)
-    server.watch(srcdir, builder, ignore=ignore_handler)
-    for dirpath in args.additional_watched_dirs:
-        real_dirpath = os.path.realpath(dirpath)
-        server.watch(real_dirpath, builder, ignore=ignore_handler)
-    server.watch(outdir, ignore=ignore_handler)
-
-    if not args.no_initial_build:
-        builder()
-
-    # Find the free port
-    portn = args.port or find_free_port()
-    if args.openbrowser is True:
-
-        def opener():
-            time.sleep(args.delay)
-            webbrowser.open(f"http://{args.host}:{args.port}/index.html")
-
-        threading.Thread(target=opener, daemon=True).start()
-
-    server.serve(port=portn, host=args.host, root=outdir)
diff --git a/docs/docs_app/examples.py b/docs/docs_app/examples.py
deleted file mode 100644
index a71a0b111..000000000
--- a/docs/docs_app/examples.py
+++ /dev/null
@@ -1,177 +0,0 @@
-from __future__ import annotations
-
-from collections.abc import Iterator
-from io import StringIO
-from pathlib import Path
-from traceback import format_exc
-from typing import Callable
-
-import reactpy
-from reactpy.types import ComponentType
-
-HERE = Path(__file__)
-SOURCE_DIR = HERE.parent.parent / "source"
-CONF_FILE = SOURCE_DIR / "conf.py"
-RUN_ReactPy = reactpy.run
-
-
-def load_examples() -> Iterator[tuple[str, Callable[[], ComponentType]]]:
-    for name in all_example_names():
-        yield name, load_one_example(name)
-
-
-def all_example_names() -> set[str]:
-    names = set()
-    for file in _iter_example_files(SOURCE_DIR):
-        path = file.parent if file.name == "main.py" else file
-        names.add("/".join(path.relative_to(SOURCE_DIR).with_suffix("").parts))
-    return names
-
-
-def load_one_example(file_or_name: Path | str) -> Callable[[], ComponentType]:
-    return lambda: (
-        # we use a lambda to ensure each instance is fresh
-        _load_one_example(file_or_name)
-    )
-
-
-def get_normalized_example_name(
-    name: str, relative_to: str | Path | None = SOURCE_DIR
-) -> str:
-    return "/".join(
-        _get_root_example_path_by_name(name, relative_to).relative_to(SOURCE_DIR).parts
-    )
-
-
-def get_main_example_file_by_name(
-    name: str, relative_to: str | Path | None = SOURCE_DIR
-) -> Path:
-    path = _get_root_example_path_by_name(name, relative_to)
-    if path.is_dir():
-        return path / "main.py"
-    else:
-        return path.with_suffix(".py")
-
-
-def get_example_files_by_name(
-    name: str, relative_to: str | Path | None = SOURCE_DIR
-) -> list[Path]:
-    path = _get_root_example_path_by_name(name, relative_to)
-    if path.is_dir():
-        return [p for p in path.glob("*") if not p.is_dir()]
-    else:
-        path = path.with_suffix(".py")
-        return [path] if path.exists() else []
-
-
-def _iter_example_files(root: Path) -> Iterator[Path]:
-    for path in root.iterdir():
-        if path.is_dir():
-            if not path.name.startswith("_") or path.name == "_examples":
-                yield from _iter_example_files(path)
-        elif path.suffix == ".py" and path != CONF_FILE:
-            yield path
-
-
-def _load_one_example(file_or_name: Path | str) -> ComponentType:
-    if isinstance(file_or_name, str):
-        file = get_main_example_file_by_name(file_or_name)
-    else:
-        file = file_or_name
-
-    if not file.exists():
-        raise FileNotFoundError(str(file))
-
-    print_buffer = _PrintBuffer()
-
-    def capture_print(*args, **kwargs):
-        buffer = StringIO()
-        print(*args, file=buffer, **kwargs)
-        print_buffer.write(buffer.getvalue())
-
-    captured_component_constructor = None
-
-    def capture_component(component_constructor):
-        nonlocal captured_component_constructor
-        captured_component_constructor = component_constructor
-
-    reactpy.run = capture_component
-    try:
-        code = compile(file.read_text(), str(file), "exec")
-        exec(
-            code,
-            {
-                "print": capture_print,
-                "__file__": str(file),
-                "__name__": file.stem,
-            },
-        )
-    except Exception:
-        return _make_error_display(format_exc())
-    finally:
-        reactpy.run = RUN_ReactPy
-
-    if captured_component_constructor is None:
-        return _make_example_did_not_run(str(file))
-
-    @reactpy.component
-    def Wrapper():
-        return reactpy.html.div(captured_component_constructor(), PrintView())
-
-    @reactpy.component
-    def PrintView():
-        text, set_text = reactpy.hooks.use_state(print_buffer.getvalue())
-        print_buffer.set_callback(set_text)
-        return (
-            reactpy.html.pre({"class_name": "printout"}, text)
-            if text
-            else reactpy.html.div()
-        )
-
-    return Wrapper()
-
-
-def _get_root_example_path_by_name(name: str, relative_to: str | Path | None) -> Path:
-    if not name.startswith("/") and relative_to is not None:
-        rel_path = Path(relative_to)
-        rel_path = rel_path.parent if rel_path.is_file() else rel_path
-    else:
-        rel_path = SOURCE_DIR
-    return rel_path.joinpath(*name.split("/")).resolve()
-
-
-class _PrintBuffer:
-    def __init__(self, max_lines: int = 10):
-        self._callback = None
-        self._lines = ()
-        self._max_lines = max_lines
-
-    def set_callback(self, function: Callable[[str], None]) -> None:
-        self._callback = function
-
-    def getvalue(self) -> str:
-        return "".join(self._lines)
-
-    def write(self, text: str) -> None:
-        if len(self._lines) == self._max_lines:
-            self._lines = self._lines[1:] + (text,)
-        else:
-            self._lines += (text,)
-        if self._callback is not None:
-            self._callback(self.getvalue())
-
-
-def _make_example_did_not_run(example_name):
-    @reactpy.component
-    def ExampleDidNotRun():
-        return reactpy.html.code(f"Example {example_name} did not run")
-
-    return ExampleDidNotRun()
-
-
-def _make_error_display(message):
-    @reactpy.component
-    def ShowError():
-        return reactpy.html.pre(message)
-
-    return ShowError()
diff --git a/docs/docs_app/prod.py b/docs/docs_app/prod.py
deleted file mode 100644
index 0acf12432..000000000
--- a/docs/docs_app/prod.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import os
-
-from docs_app.app import make_app
-
-app = make_app("docs_prod_app")
-
-
-def main() -> None:
-    app.run(
-        host="0.0.0.0",  # noqa: S104
-        port=int(os.environ.get("PORT", 5000)),
-        workers=int(os.environ.get("WEB_CONCURRENCY", 1)),
-        debug=bool(int(os.environ.get("DEBUG", "0"))),
-    )
diff --git a/docs/examples/css/quick_start/adding_styles.css b/docs/examples/css/quick_start/adding_styles.css
new file mode 100644
index 000000000..4d02060e1
--- /dev/null
+++ b/docs/examples/css/quick_start/adding_styles.css
@@ -0,0 +1,4 @@
+/* In your CSS */
+.avatar {
+	border-radius: 50%;
+}
diff --git a/docs/examples/css/quick_start/displaying_data.css b/docs/examples/css/quick_start/displaying_data.css
new file mode 100644
index 000000000..9f5a392c1
--- /dev/null
+++ b/docs/examples/css/quick_start/displaying_data.css
@@ -0,0 +1,7 @@
+.avatar {
+	border-radius: 50%;
+}
+
+.large {
+	border: 4px solid gold;
+}
diff --git a/docs/examples/css/quick_start/sharing_data_between_components.css b/docs/examples/css/quick_start/sharing_data_between_components.css
new file mode 100644
index 000000000..6081b7ef4
--- /dev/null
+++ b/docs/examples/css/quick_start/sharing_data_between_components.css
@@ -0,0 +1,4 @@
+button {
+	display: block;
+	margin-bottom: 5px;
+}
diff --git a/docs/examples/css/quick_start/updating_the_screen.css b/docs/examples/css/quick_start/updating_the_screen.css
new file mode 100644
index 000000000..6081b7ef4
--- /dev/null
+++ b/docs/examples/css/quick_start/updating_the_screen.css
@@ -0,0 +1,4 @@
+button {
+	display: block;
+	margin-bottom: 5px;
+}
diff --git a/docs/examples/css/tutorial-tic-tac-toe/tic_tac_toe.css b/docs/examples/css/tutorial-tic-tac-toe/tic_tac_toe.css
new file mode 100644
index 000000000..87876ec02
--- /dev/null
+++ b/docs/examples/css/tutorial-tic-tac-toe/tic_tac_toe.css
@@ -0,0 +1,42 @@
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
diff --git a/docs/docs_app/__init__.py b/docs/examples/python/__init__.py
similarity index 100%
rename from docs/docs_app/__init__.py
rename to docs/examples/python/__init__.py
diff --git a/docs/examples/python/quick_start/__init__.py b/docs/examples/python/quick_start/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/docs/examples/python/quick_start/adding_styles.py b/docs/examples/python/quick_start/adding_styles.py
new file mode 100644
index 000000000..cdc9a7b99
--- /dev/null
+++ b/docs/examples/python/quick_start/adding_styles.py
@@ -0,0 +1,4 @@
+from reactpy import html
+
+# start
+html.img({"class_name": "avatar"})
diff --git a/docs/examples/python/quick_start/conditional_rendering.py b/docs/examples/python/quick_start/conditional_rendering.py
new file mode 100644
index 000000000..d89e097a4
--- /dev/null
+++ b/docs/examples/python/quick_start/conditional_rendering.py
@@ -0,0 +1,22 @@
+from reactpy import component, html
+
+
+def admin_panel():
+    return []
+
+
+def login_form():
+    return []
+
+
+is_logged_in = True
+
+
+# start
+@component
+def my_component():
+    if is_logged_in:
+        content = admin_panel()
+    else:
+        content = login_form()
+    return html.div(content)
diff --git a/docs/examples/python/quick_start/conditional_rendering_logical_and.py b/docs/examples/python/quick_start/conditional_rendering_logical_and.py
new file mode 100644
index 000000000..07e752bba
--- /dev/null
+++ b/docs/examples/python/quick_start/conditional_rendering_logical_and.py
@@ -0,0 +1,14 @@
+from reactpy import component, html
+
+
+def admin_panel():
+    return []
+
+
+is_logged_in = True
+
+
+# start
+@component
+def my_component():
+    return html.div(is_logged_in and admin_panel())
diff --git a/docs/examples/python/quick_start/conditional_rendering_ternary.py b/docs/examples/python/quick_start/conditional_rendering_ternary.py
new file mode 100644
index 000000000..2490cb5f9
--- /dev/null
+++ b/docs/examples/python/quick_start/conditional_rendering_ternary.py
@@ -0,0 +1,18 @@
+from reactpy import component, html
+
+
+def admin_panel():
+    return []
+
+
+def login_form():
+    return []
+
+
+is_logged_in = True
+
+
+# start
+@component
+def my_component():
+    return html.div(admin_panel() if is_logged_in else login_form())
diff --git a/docs/examples/python/quick_start/creating_and_nesting_components.py b/docs/examples/python/quick_start/creating_and_nesting_components.py
new file mode 100644
index 000000000..0841e9514
--- /dev/null
+++ b/docs/examples/python/quick_start/creating_and_nesting_components.py
@@ -0,0 +1,21 @@
+from reactpy import component, html
+
+
+@component
+def my_button():
+    return html.button("I'm a button!")
+
+
+@component
+def my_app():
+    return html.div(
+        html.h1("Welcome to my app"),
+        my_button(),
+    )
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+
+    run(my_app)
diff --git a/docs/examples/python/quick_start/displaying_data.py b/docs/examples/python/quick_start/displaying_data.py
new file mode 100644
index 000000000..d4caa09c9
--- /dev/null
+++ b/docs/examples/python/quick_start/displaying_data.py
@@ -0,0 +1,32 @@
+from reactpy import component, html
+
+user = {
+    "name": "Hedy Lamarr",
+    "image_url": "https://i.imgur.com/yXOvdOSs.jpg",
+    "image_size": 90,
+}
+
+
+@component
+def profile():
+    return html.div(
+        html.h3(user["name"]),
+        html.img(
+            {
+                "class_name": "avatar",
+                "src": user["image_url"],
+                "alt": f"Photo of {user['name']}",
+                "style": {
+                    "width": user["image_size"],
+                    "height": user["image_size"],
+                },
+            }
+        ),
+    )
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+
+    run(profile)
diff --git a/docs/examples/python/quick_start/my_app.py b/docs/examples/python/quick_start/my_app.py
new file mode 100644
index 000000000..1616d54d1
--- /dev/null
+++ b/docs/examples/python/quick_start/my_app.py
@@ -0,0 +1,12 @@
+from reactpy import component, html
+
+from .my_button import my_button
+
+
+# start
+@component
+def my_app():
+    return html.div(
+        html.h1("Welcome to my app"),
+        my_button(),
+    )
diff --git a/docs/examples/python/quick_start/my_button.py b/docs/examples/python/quick_start/my_button.py
new file mode 100644
index 000000000..0016632ca
--- /dev/null
+++ b/docs/examples/python/quick_start/my_button.py
@@ -0,0 +1,7 @@
+from reactpy import component, html
+
+
+# start
+@component
+def my_button():
+    return html.button("I'm a button!")
diff --git a/docs/examples/python/quick_start/rendering_lists.py b/docs/examples/python/quick_start/rendering_lists.py
new file mode 100644
index 000000000..35ec3e069
--- /dev/null
+++ b/docs/examples/python/quick_start/rendering_lists.py
@@ -0,0 +1,30 @@
+from reactpy import component, html
+
+products = [
+    {"title": "Cabbage", "is_fruit": False, "id": 1},
+    {"title": "Garlic", "is_fruit": False, "id": 2},
+    {"title": "Apple", "is_fruit": True, "id": 3},
+]
+
+
+@component
+def shopping_list():
+    list_items = [
+        html.li(
+            {
+                "key": product["id"],
+                "style": {"color": "magenta" if product["is_fruit"] else "darkgreen"},
+            },
+            product["title"],
+        )
+        for product in products
+    ]
+
+    return html.ul(list_items)
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+
+    run(shopping_list)
diff --git a/docs/examples/python/quick_start/rendering_lists_list_items.py b/docs/examples/python/quick_start/rendering_lists_list_items.py
new file mode 100644
index 000000000..43e108f36
--- /dev/null
+++ b/docs/examples/python/quick_start/rendering_lists_list_items.py
@@ -0,0 +1,6 @@
+from reactpy import html
+
+from .rendering_lists_products import products
+
+# start
+list_items = [html.li({"key": product["id"]}, product["title"]) for product in products]
diff --git a/docs/examples/python/quick_start/rendering_lists_products.py b/docs/examples/python/quick_start/rendering_lists_products.py
new file mode 100644
index 000000000..c2d6a5e31
--- /dev/null
+++ b/docs/examples/python/quick_start/rendering_lists_products.py
@@ -0,0 +1,5 @@
+products = [
+    {"title": "Cabbage", "id": 1},
+    {"title": "Garlic", "id": 2},
+    {"title": "Apple", "id": 3},
+]
diff --git a/docs/examples/python/quick_start/responding_to_events.py b/docs/examples/python/quick_start/responding_to_events.py
new file mode 100644
index 000000000..c893353cf
--- /dev/null
+++ b/docs/examples/python/quick_start/responding_to_events.py
@@ -0,0 +1,13 @@
+from reactpy import component, html
+
+
+# start
+@component
+def my_button():
+    def handle_click(event):
+        print("You clicked me!")
+
+    return html.button(
+        {"on_click": handle_click},
+        "Click me",
+    )
diff --git a/docs/examples/python/quick_start/sharing_data_between_components.py b/docs/examples/python/quick_start/sharing_data_between_components.py
new file mode 100644
index 000000000..7c4d9904d
--- /dev/null
+++ b/docs/examples/python/quick_start/sharing_data_between_components.py
@@ -0,0 +1,27 @@
+from reactpy import component, html, use_state
+
+
+@component
+def my_app():
+    count, set_count = use_state(0)
+
+    def handle_click(event):
+        set_count(count + 1)
+
+    return html.div(
+        html.h1("Counters that update together"),
+        my_button(count, handle_click),
+        my_button(count, handle_click),
+    )
+
+
+@component
+def my_button(count, on_click):
+    return html.button({"on_click": on_click}, f"Clicked {count} times")
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+
+    run(my_app)
diff --git a/docs/examples/python/quick_start/sharing_data_between_components_button.py b/docs/examples/python/quick_start/sharing_data_between_components_button.py
new file mode 100644
index 000000000..b96dadfa6
--- /dev/null
+++ b/docs/examples/python/quick_start/sharing_data_between_components_button.py
@@ -0,0 +1,7 @@
+from reactpy import component, html
+
+
+# start
+@component
+def my_button(count, on_click):
+    return html.button({"on_click": on_click}, f"Clicked {count} times")
diff --git a/docs/examples/python/quick_start/sharing_data_between_components_move_state.py b/docs/examples/python/quick_start/sharing_data_between_components_move_state.py
new file mode 100644
index 000000000..a3c6126c2
--- /dev/null
+++ b/docs/examples/python/quick_start/sharing_data_between_components_move_state.py
@@ -0,0 +1,20 @@
+from reactpy import component, html, use_state
+
+# start
+@component
+def my_app():
+    count, set_count = use_state(0)
+
+    def handle_click(event):
+        set_count(count + 1)
+
+    return html.div(
+        html.h1("Counters that update separately"),
+        my_button(),
+        my_button(),
+    )
+
+
+@component
+def my_button():
+    # ... we're moving code from here ...
diff --git a/docs/examples/python/quick_start/sharing_data_between_components_props.py b/docs/examples/python/quick_start/sharing_data_between_components_props.py
new file mode 100644
index 000000000..52294076a
--- /dev/null
+++ b/docs/examples/python/quick_start/sharing_data_between_components_props.py
@@ -0,0 +1,22 @@
+from reactpy import component, html, use_state
+
+
+# start
+@component
+def my_app():
+    count, set_count = use_state(0)
+
+    def handle_click(event):
+        set_count(count + 1)
+
+    return html.div(
+        html.h1("Counters that update together"),
+        my_button(count, handle_click),
+        my_button(count, handle_click),
+    )
+    # end
+
+
+@component
+def my_button(count, on_click):
+    ...
diff --git a/docs/examples/python/quick_start/updating_the_screen.py b/docs/examples/python/quick_start/updating_the_screen.py
new file mode 100644
index 000000000..906a0718f
--- /dev/null
+++ b/docs/examples/python/quick_start/updating_the_screen.py
@@ -0,0 +1,27 @@
+from reactpy import component, html, use_state
+
+
+@component
+def my_app():
+    return html.div(
+        html.h1("Counters that update separately"),
+        my_button(),
+        my_button(),
+    )
+
+
+@component
+def my_button():
+    count, set_count = use_state(0)
+
+    def handle_click(event):
+        set_count(count + 1)
+
+    return html.button({"on_click": handle_click}, f"Clicked {count} times")
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+
+    run(my_app)
diff --git a/docs/examples/python/quick_start/updating_the_screen_event.py b/docs/examples/python/quick_start/updating_the_screen_event.py
new file mode 100644
index 000000000..2829c481c
--- /dev/null
+++ b/docs/examples/python/quick_start/updating_the_screen_event.py
@@ -0,0 +1,12 @@
+from reactpy import component, html, use_state
+
+
+# start
+@component
+def my_button():
+    count, set_count = use_state(0)
+
+    def handle_click(event):
+        set_count(count + 1)
+
+    return html.button({"on_click": handle_click}, f"Clicked {count} times")
diff --git a/docs/examples/python/quick_start/updating_the_screen_use_state.py b/docs/examples/python/quick_start/updating_the_screen_use_state.py
new file mode 100644
index 000000000..010487c33
--- /dev/null
+++ b/docs/examples/python/quick_start/updating_the_screen_use_state.py
@@ -0,0 +1,5 @@
+from reactpy import use_state
+
+# end
+
+use_state()
diff --git a/docs/examples/python/quick_start/updating_the_screen_use_state_button.py b/docs/examples/python/quick_start/updating_the_screen_use_state_button.py
new file mode 100644
index 000000000..c331ee6c9
--- /dev/null
+++ b/docs/examples/python/quick_start/updating_the_screen_use_state_button.py
@@ -0,0 +1,8 @@
+from reactpy import component, use_state
+
+
+# start
+@component
+def my_button():
+    count, set_count = use_state(0)
+    # ...
diff --git a/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py b/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py
new file mode 100644
index 000000000..9a5fc40cc
--- /dev/null
+++ b/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py
@@ -0,0 +1,117 @@
+from copy import deepcopy
+
+from reactpy import component, html, use_state
+
+
+@component
+def square(value, on_square_click):
+    return html.button(
+        {"className": "square", "on_click": on_square_click},
+        value or "",
+    )
+
+
+@component
+def board(x_is_next, squares, on_play):
+    def handle_click(i):
+        def event(_event):
+            if calculate_winner(squares) or squares[i]:
+                return
+
+            next_squares = squares.copy()
+            next_squares[i] = "X" if x_is_next else "O"
+            on_play(next_squares)
+
+        return event
+
+    winner = calculate_winner(squares)
+    status = (
+        f"Winner: {winner}" if winner else "Next player: " + ("X" if x_is_next else "O")
+    )
+
+    return html._(
+        html.div({"className": "status"}, status),
+        html.div(
+            {"className": "board-row"},
+            square(squares[0], handle_click(0)),
+            square(squares[1], handle_click(1)),
+            square(squares[2], handle_click(2)),
+        ),
+        html.div(
+            {"className": "board-row"},
+            square(squares[3], handle_click(3)),
+            square(squares[4], handle_click(4)),
+            square(squares[5], handle_click(5)),
+        ),
+        html.div(
+            {"className": "board-row"},
+            square(squares[6], handle_click(6)),
+            square(squares[7], handle_click(7)),
+            square(squares[8], handle_click(8)),
+        ),
+    )
+
+
+@component
+def game():
+    history, set_history = use_state([[None] * 9])
+    current_move, set_current_move = use_state(0)
+    x_is_next = current_move % 2 == 0
+    current_squares = history[current_move]
+
+    def handle_play(next_squares):
+        next_history = deepcopy(history[: current_move + 1])
+        next_history.append(next_squares)
+        set_history(next_history)
+        set_current_move(len(next_history) - 1)
+
+    def jump_to(next_move):
+        return lambda _event: set_current_move(next_move)
+
+    moves = []
+    for move, _squares in enumerate(history):
+        description = f"Go to move #{move}" if move > 0 else "Go to game start"
+
+        moves.append(
+            html.li(
+                {"key": move},
+                html.button({"on_click": jump_to(move)}, description),
+            )
+        )
+
+    return html.div(
+        {"className": "game"},
+        html.div(
+            {"className": "game-board"},
+            board(x_is_next, current_squares, handle_play),
+        ),
+        html.div({"className": "game-info"}, html.ol(moves)),
+    )
+
+
+def calculate_winner(squares):
+    lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ]
+    for line in lines:
+        a, b, c = line
+        if not squares:
+            continue
+        if squares[a] and squares[a] == squares[b] and squares[a] == squares[c]:
+            return squares[a]
+
+    return None
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+
+    run(game)
diff --git a/docs/main.py b/docs/main.py
deleted file mode 100644
index e3181f393..000000000
--- a/docs/main.py
+++ /dev/null
@@ -1,9 +0,0 @@
-import sys
-
-from docs_app import dev, prod
-
-if __name__ == "__main__":
-    if len(sys.argv) == 1:
-        prod.main()
-    else:
-        dev.main()
diff --git a/docs/overrides/main.html b/docs/overrides/main.html
new file mode 100644
index 000000000..e70aa10c8
--- /dev/null
+++ b/docs/overrides/main.html
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+
+{% block content %}
+{{ super() }}
+
+{% if git_page_authors %}
+<div class="md-source-date">
+    <small>
+        Authors: {{ git_page_authors | default('enable mkdocs-git-authors-plugin') }}
+    </small>
+</div>
+{% endif %}
+{% endblock %}
diff --git a/docs/poetry.lock b/docs/poetry.lock
deleted file mode 100644
index 8e1daef24..000000000
--- a/docs/poetry.lock
+++ /dev/null
@@ -1,2269 +0,0 @@
-# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
-
-[[package]]
-name = "aiofiles"
-version = "23.1.0"
-description = "File support for asyncio."
-optional = false
-python-versions = ">=3.7,<4.0"
-files = [
-    {file = "aiofiles-23.1.0-py3-none-any.whl", hash = "sha256:9312414ae06472eb6f1d163f555e466a23aed1c8f60c30cccf7121dba2e53eb2"},
-    {file = "aiofiles-23.1.0.tar.gz", hash = "sha256:edd247df9a19e0db16534d4baaf536d6609a43e1de5401d7a4c1c148753a1635"},
-]
-
-[[package]]
-name = "alabaster"
-version = "0.7.13"
-description = "A configurable sidebar-enabled Sphinx theme"
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"},
-    {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"},
-]
-
-[[package]]
-name = "anyio"
-version = "3.7.0"
-description = "High level compatibility layer for multiple asynchronous event loop implementations"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0"},
-    {file = "anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce"},
-]
-
-[package.dependencies]
-exceptiongroup = {version = "*", markers = "python_version < \"3.11\""}
-idna = ">=2.8"
-sniffio = ">=1.1"
-
-[package.extras]
-doc = ["Sphinx (>=6.1.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme", "sphinxcontrib-jquery"]
-test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (<0.22)"]
-
-[[package]]
-name = "asgiref"
-version = "3.7.2"
-description = "ASGI specs, helper code, and adapters"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"},
-    {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"},
-]
-
-[package.dependencies]
-typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""}
-
-[package.extras]
-tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
-
-[[package]]
-name = "babel"
-version = "2.12.1"
-description = "Internationalization utilities"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"},
-    {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"},
-]
-
-[[package]]
-name = "beautifulsoup4"
-version = "4.12.2"
-description = "Screen-scraping library"
-optional = false
-python-versions = ">=3.6.0"
-files = [
-    {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"},
-    {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"},
-]
-
-[package.dependencies]
-soupsieve = ">1.2"
-
-[package.extras]
-html5lib = ["html5lib"]
-lxml = ["lxml"]
-
-[[package]]
-name = "certifi"
-version = "2023.5.7"
-description = "Python package for providing Mozilla's CA Bundle."
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"},
-    {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"},
-]
-
-[[package]]
-name = "charset-normalizer"
-version = "3.1.0"
-description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
-optional = false
-python-versions = ">=3.7.0"
-files = [
-    {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"},
-    {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"},
-    {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"},
-    {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"},
-    {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"},
-    {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"},
-    {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"},
-]
-
-[[package]]
-name = "click"
-version = "8.1.3"
-description = "Composable command line interface toolkit"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
-    {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
-]
-
-[package.dependencies]
-colorama = {version = "*", markers = "platform_system == \"Windows\""}
-
-[[package]]
-name = "colorama"
-version = "0.4.6"
-description = "Cross-platform colored terminal text."
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
-files = [
-    {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
-    {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
-]
-
-[[package]]
-name = "colorlog"
-version = "6.7.0"
-description = "Add colours to the output of Python's logging module."
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "colorlog-6.7.0-py2.py3-none-any.whl", hash = "sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662"},
-    {file = "colorlog-6.7.0.tar.gz", hash = "sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5"},
-]
-
-[package.dependencies]
-colorama = {version = "*", markers = "sys_platform == \"win32\""}
-
-[package.extras]
-development = ["black", "flake8", "mypy", "pytest", "types-colorama"]
-
-[[package]]
-name = "contourpy"
-version = "1.0.7"
-description = "Python library for calculating contours of 2D quadrilateral grids"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"},
-    {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"},
-    {file = "contourpy-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8acf74b5d383414401926c1598ed77825cd530ac7b463ebc2e4f46638f56cce6"},
-    {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c71fdd8f1c0f84ffd58fca37d00ca4ebaa9e502fb49825484da075ac0b0b803"},
-    {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99e9486bf1bb979d95d5cffed40689cb595abb2b841f2991fc894b3452290e8"},
-    {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f4d8941a9564cda3f7fa6a6cd9b32ec575830780677932abdec7bcb61717b0"},
-    {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e20e5a1908e18aaa60d9077a6d8753090e3f85ca25da6e25d30dc0a9e84c2c6"},
-    {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a877ada905f7d69b2a31796c4b66e31a8068b37aa9b78832d41c82fc3e056ddd"},
-    {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6381fa66866b0ea35e15d197fc06ac3840a9b2643a6475c8fff267db8b9f1e69"},
-    {file = "contourpy-1.0.7-cp310-cp310-win32.whl", hash = "sha256:3c184ad2433635f216645fdf0493011a4667e8d46b34082f5a3de702b6ec42e3"},
-    {file = "contourpy-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:3caea6365b13119626ee996711ab63e0c9d7496f65641f4459c60a009a1f3e80"},
-    {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed33433fc3820263a6368e532f19ddb4c5990855e4886088ad84fd7c4e561c71"},
-    {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38e2e577f0f092b8e6774459317c05a69935a1755ecfb621c0a98f0e3c09c9a5"},
-    {file = "contourpy-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae90d5a8590e5310c32a7630b4b8618cef7563cebf649011da80874d0aa8f414"},
-    {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130230b7e49825c98edf0b428b7aa1125503d91732735ef897786fe5452b1ec2"},
-    {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58569c491e7f7e874f11519ef46737cea1d6eda1b514e4eb5ac7dab6aa864d02"},
-    {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d43960d809c4c12508a60b66cb936e7ed57d51fb5e30b513934a4a23874fae"},
-    {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:152fd8f730c31fd67fe0ffebe1df38ab6a669403da93df218801a893645c6ccc"},
-    {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9056c5310eb1daa33fc234ef39ebfb8c8e2533f088bbf0bc7350f70a29bde1ac"},
-    {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a9d7587d2fdc820cc9177139b56795c39fb8560f540bba9ceea215f1f66e1566"},
-    {file = "contourpy-1.0.7-cp311-cp311-win32.whl", hash = "sha256:4ee3ee247f795a69e53cd91d927146fb16c4e803c7ac86c84104940c7d2cabf0"},
-    {file = "contourpy-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:5caeacc68642e5f19d707471890f037a13007feba8427eb7f2a60811a1fc1350"},
-    {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd7dc0e6812b799a34f6d12fcb1000539098c249c8da54f3566c6a6461d0dbad"},
-    {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0f9d350b639db6c2c233d92c7f213d94d2e444d8e8fc5ca44c9706cf72193772"},
-    {file = "contourpy-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e96a08b62bb8de960d3a6afbc5ed8421bf1a2d9c85cc4ea73f4bc81b4910500f"},
-    {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031154ed61f7328ad7f97662e48660a150ef84ee1bc8876b6472af88bf5a9b98"},
-    {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e9ebb4425fc1b658e13bace354c48a933b842d53c458f02c86f371cecbedecc"},
-    {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb8f6d08ca7998cf59eaf50c9d60717f29a1a0a09caa46460d33b2924839dbd"},
-    {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6c180d89a28787e4b73b07e9b0e2dac7741261dbdca95f2b489c4f8f887dd810"},
-    {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b8d587cc39057d0afd4166083d289bdeff221ac6d3ee5046aef2d480dc4b503c"},
-    {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:769eef00437edf115e24d87f8926955f00f7704bede656ce605097584f9966dc"},
-    {file = "contourpy-1.0.7-cp38-cp38-win32.whl", hash = "sha256:62398c80ef57589bdbe1eb8537127321c1abcfdf8c5f14f479dbbe27d0322e66"},
-    {file = "contourpy-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:57119b0116e3f408acbdccf9eb6ef19d7fe7baf0d1e9aaa5381489bc1aa56556"},
-    {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30676ca45084ee61e9c3da589042c24a57592e375d4b138bd84d8709893a1ba4"},
-    {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e927b3868bd1e12acee7cc8f3747d815b4ab3e445a28d2e5373a7f4a6e76ba1"},
-    {file = "contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:366a0cf0fc079af5204801786ad7a1c007714ee3909e364dbac1729f5b0849e5"},
-    {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ba9bb365446a22411f0673abf6ee1fea3b2cf47b37533b970904880ceb72f3"},
-    {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b0bf0c30d432278793d2141362ac853859e87de0a7dee24a1cea35231f0d50"},
-    {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7281244c99fd7c6f27c1c6bfafba878517b0b62925a09b586d88ce750a016d2"},
-    {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6d0f9e1d39dbfb3977f9dd79f156c86eb03e57a7face96f199e02b18e58d32a"},
-    {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7f6979d20ee5693a1057ab53e043adffa1e7418d734c1532e2d9e915b08d8ec2"},
-    {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5dd34c1ae752515318224cba7fc62b53130c45ac6a1040c8b7c1a223c46e8967"},
-    {file = "contourpy-1.0.7-cp39-cp39-win32.whl", hash = "sha256:c5210e5d5117e9aec8c47d9156d1d3835570dd909a899171b9535cb4a3f32693"},
-    {file = "contourpy-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:60835badb5ed5f4e194a6f21c09283dd6e007664a86101431bf870d9e86266c4"},
-    {file = "contourpy-1.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce41676b3d0dd16dbcfabcc1dc46090aaf4688fd6e819ef343dbda5a57ef0161"},
-    {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a011cf354107b47c58ea932d13b04d93c6d1d69b8b6dce885e642531f847566"},
-    {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31a55dccc8426e71817e3fe09b37d6d48ae40aae4ecbc8c7ad59d6893569c436"},
-    {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69f8ff4db108815addd900a74df665e135dbbd6547a8a69333a68e1f6e368ac2"},
-    {file = "contourpy-1.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efe99298ba37e37787f6a2ea868265465410822f7bea163edcc1bd3903354ea9"},
-    {file = "contourpy-1.0.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a1e97b86f73715e8670ef45292d7cc033548266f07d54e2183ecb3c87598888f"},
-    {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc331c13902d0f50845099434cd936d49d7a2ca76cb654b39691974cb1e4812d"},
-    {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24847601071f740837aefb730e01bd169fbcaa610209779a78db7ebb6e6a7051"},
-    {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abf298af1e7ad44eeb93501e40eb5a67abbf93b5d90e468d01fc0c4451971afa"},
-    {file = "contourpy-1.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:64757f6460fc55d7e16ed4f1de193f362104285c667c112b50a804d482777edd"},
-    {file = "contourpy-1.0.7.tar.gz", hash = "sha256:d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e"},
-]
-
-[package.dependencies]
-numpy = ">=1.16"
-
-[package.extras]
-bokeh = ["bokeh", "chromedriver", "selenium"]
-docs = ["furo", "sphinx-copybutton"]
-mypy = ["contourpy[bokeh]", "docutils-stubs", "mypy (==0.991)", "types-Pillow"]
-test = ["Pillow", "matplotlib", "pytest"]
-test-no-images = ["pytest"]
-
-[[package]]
-name = "cycler"
-version = "0.11.0"
-description = "Composable style cycles"
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
-    {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
-]
-
-[[package]]
-name = "docutils"
-version = "0.17.1"
-description = "Docutils -- Python Documentation Utilities"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-files = [
-    {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"},
-    {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"},
-]
-
-[[package]]
-name = "exceptiongroup"
-version = "1.1.1"
-description = "Backport of PEP 654 (exception groups)"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"},
-    {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"},
-]
-
-[package.extras]
-test = ["pytest (>=6)"]
-
-[[package]]
-name = "fastapi"
-version = "0.96.0"
-description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "fastapi-0.96.0-py3-none-any.whl", hash = "sha256:b8e11fe81e81eab4e1504209917338e0b80f783878a42c2b99467e5e1019a1e9"},
-    {file = "fastapi-0.96.0.tar.gz", hash = "sha256:71232d47c2787446991c81c41c249f8a16238d52d779c0e6b43927d3773dbe3c"},
-]
-
-[package.dependencies]
-pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0"
-starlette = ">=0.27.0,<0.28.0"
-
-[package.extras]
-all = ["email-validator (>=1.1.1)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
-dev = ["pre-commit (>=2.17.0,<3.0.0)", "ruff (==0.0.138)", "uvicorn[standard] (>=0.12.0,<0.21.0)"]
-doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "typer-cli (>=0.0.13,<0.0.14)", "typer[all] (>=0.6.1,<0.8.0)"]
-test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==23.1.0)", "coverage[toml] (>=6.5.0,<8.0)", "databases[sqlite] (>=0.3.2,<0.7.0)", "email-validator (>=1.1.1,<2.0.0)", "flask (>=1.1.2,<3.0.0)", "httpx (>=0.23.0,<0.24.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.982)", "orjson (>=3.2.1,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "peewee (>=3.13.3,<4.0.0)", "pytest (>=7.1.3,<8.0.0)", "python-jose[cryptography] (>=3.3.0,<4.0.0)", "python-multipart (>=0.0.5,<0.0.7)", "pyyaml (>=5.3.1,<7.0.0)", "ruff (==0.0.138)", "sqlalchemy (>=1.3.18,<1.4.43)", "types-orjson (==3.6.2)", "types-ujson (==5.7.0.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)"]
-
-[[package]]
-name = "fastjsonschema"
-version = "2.17.1"
-description = "Fastest Python implementation of JSON schema"
-optional = false
-python-versions = "*"
-files = [
-    {file = "fastjsonschema-2.17.1-py3-none-any.whl", hash = "sha256:4b90b252628ca695280924d863fe37234eebadc29c5360d322571233dc9746e0"},
-    {file = "fastjsonschema-2.17.1.tar.gz", hash = "sha256:f4eeb8a77cef54861dbf7424ac8ce71306f12cbb086c45131bcba2c6a4f726e3"},
-]
-
-[package.extras]
-devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
-
-[[package]]
-name = "flask"
-version = "2.1.3"
-description = "A simple framework for building complex web applications."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "Flask-2.1.3-py3-none-any.whl", hash = "sha256:9013281a7402ad527f8fd56375164f3aa021ecfaff89bfe3825346c24f87e04c"},
-    {file = "Flask-2.1.3.tar.gz", hash = "sha256:15972e5017df0575c3d6c090ba168b6db90259e620ac8d7ea813a396bad5b6cb"},
-]
-
-[package.dependencies]
-click = ">=8.0"
-importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""}
-itsdangerous = ">=2.0"
-Jinja2 = ">=3.0"
-Werkzeug = ">=2.0"
-
-[package.extras]
-async = ["asgiref (>=3.2)"]
-dotenv = ["python-dotenv"]
-
-[[package]]
-name = "flask-cors"
-version = "3.0.10"
-description = "A Flask extension adding a decorator for CORS support"
-optional = false
-python-versions = "*"
-files = [
-    {file = "Flask-Cors-3.0.10.tar.gz", hash = "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"},
-    {file = "Flask_Cors-3.0.10-py2.py3-none-any.whl", hash = "sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438"},
-]
-
-[package.dependencies]
-Flask = ">=0.9"
-Six = "*"
-
-[[package]]
-name = "flask-sock"
-version = "0.6.0"
-description = "WebSocket support for Flask"
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "flask-sock-0.6.0.tar.gz", hash = "sha256:435cf81bb497ac7622cd1dda554fbfa3e369e629daea0a1d21b73a24f1bd6229"},
-    {file = "flask_sock-0.6.0-py3-none-any.whl", hash = "sha256:593fffb186928080a5b5b03d717efc56dac2d5ed690ce6bfff333b3597a2f518"},
-]
-
-[package.dependencies]
-flask = ">=2"
-simple-websocket = ">=0.5.1"
-
-[[package]]
-name = "fonttools"
-version = "4.39.4"
-description = "Tools to manipulate font files"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "fonttools-4.39.4-py3-none-any.whl", hash = "sha256:106caf6167c4597556b31a8d9175a3fdc0356fdcd70ab19973c3b0d4c893c461"},
-    {file = "fonttools-4.39.4.zip", hash = "sha256:dba8d7cdb8e2bac1b3da28c5ed5960de09e59a2fe7e63bb73f5a59e57b0430d2"},
-]
-
-[package.extras]
-all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.0.0)", "xattr", "zopfli (>=0.1.4)"]
-graphite = ["lz4 (>=1.7.4.2)"]
-interpolatable = ["munkres", "scipy"]
-lxml = ["lxml (>=4.0,<5)"]
-pathops = ["skia-pathops (>=0.5.0)"]
-plot = ["matplotlib"]
-repacker = ["uharfbuzz (>=0.23.0)"]
-symfont = ["sympy"]
-type1 = ["xattr"]
-ufo = ["fs (>=2.2.0,<3)"]
-unicode = ["unicodedata2 (>=15.0.0)"]
-woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"]
-
-[[package]]
-name = "furo"
-version = "2022.4.7"
-description = "A clean customisable Sphinx documentation theme."
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "furo-2022.4.7-py3-none-any.whl", hash = "sha256:7f3e3d2fb977483590f8ecb2c2cd511bd82661b79c18efb24de9558bc9cdf2d7"},
-    {file = "furo-2022.4.7.tar.gz", hash = "sha256:96204ab7cd047e4b6c523996e0279c4c629a8fc31f4f109b2efd470c17f49c80"},
-]
-
-[package.dependencies]
-beautifulsoup4 = "*"
-pygments = ">=2.7,<3.0"
-sphinx = ">=4.0,<5.0"
-
-[[package]]
-name = "greenlet"
-version = "2.0.2"
-description = "Lightweight in-process concurrent programming"
-optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
-files = [
-    {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"},
-    {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"},
-    {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"},
-    {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"},
-    {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"},
-    {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"},
-    {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"},
-    {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"},
-    {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"},
-    {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"},
-    {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"},
-    {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"},
-    {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"},
-    {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"},
-    {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"},
-    {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"},
-    {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"},
-    {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"},
-    {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"},
-    {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"},
-    {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"},
-    {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"},
-    {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"},
-    {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"},
-    {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"},
-    {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"},
-    {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"},
-    {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"},
-    {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"},
-    {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"},
-    {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"},
-    {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"},
-    {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"},
-    {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"},
-    {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"},
-    {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"},
-    {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"},
-    {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"},
-    {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"},
-    {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"},
-    {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"},
-    {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"},
-    {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"},
-    {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"},
-    {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"},
-    {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"},
-    {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"},
-    {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"},
-    {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"},
-    {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"},
-    {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"},
-    {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"},
-    {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"},
-    {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"},
-    {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"},
-    {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"},
-    {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"},
-    {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"},
-    {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"},
-    {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"},
-]
-
-[package.extras]
-docs = ["Sphinx", "docutils (<0.18)"]
-test = ["objgraph", "psutil"]
-
-[[package]]
-name = "h11"
-version = "0.14.0"
-description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
-    {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
-]
-
-[[package]]
-name = "html5tagger"
-version = "1.3.0"
-description = "Pythonic HTML generation/templating (no template files)"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "html5tagger-1.3.0-py3-none-any.whl", hash = "sha256:ce14313515edffec8ed8a36c5890d023922641171b4e6e5774ad1a74998f5351"},
-    {file = "html5tagger-1.3.0.tar.gz", hash = "sha256:84fa3dfb49e5c83b79bbd856ab7b1de8e2311c3bb46a8be925f119e3880a8da9"},
-]
-
-[[package]]
-name = "httptools"
-version = "0.5.0"
-description = "A collection of framework independent HTTP protocol utils."
-optional = false
-python-versions = ">=3.5.0"
-files = [
-    {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8f470c79061599a126d74385623ff4744c4e0f4a0997a353a44923c0b561ee51"},
-    {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e90491a4d77d0cb82e0e7a9cb35d86284c677402e4ce7ba6b448ccc7325c5421"},
-    {file = "httptools-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1d2357f791b12d86faced7b5736dea9ef4f5ecdc6c3f253e445ee82da579449"},
-    {file = "httptools-0.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f90cd6fd97c9a1b7fe9215e60c3bd97336742a0857f00a4cb31547bc22560c2"},
-    {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5230a99e724a1bdbbf236a1b58d6e8504b912b0552721c7c6b8570925ee0ccde"},
-    {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a47a34f6015dd52c9eb629c0f5a8a5193e47bf2a12d9a3194d231eaf1bc451a"},
-    {file = "httptools-0.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:24bb4bb8ac3882f90aa95403a1cb48465de877e2d5298ad6ddcfdebec060787d"},
-    {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e67d4f8734f8054d2c4858570cc4b233bf753f56e85217de4dfb2495904cf02e"},
-    {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e5eefc58d20e4c2da82c78d91b2906f1a947ef42bd668db05f4ab4201a99f49"},
-    {file = "httptools-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0297822cea9f90a38df29f48e40b42ac3d48a28637368f3ec6d15eebefd182f9"},
-    {file = "httptools-0.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:557be7fbf2bfa4a2ec65192c254e151684545ebab45eca5d50477d562c40f986"},
-    {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:54465401dbbec9a6a42cf737627fb0f014d50dc7365a6b6cd57753f151a86ff0"},
-    {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4d9ebac23d2de960726ce45f49d70eb5466725c0087a078866043dad115f850f"},
-    {file = "httptools-0.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:e8a34e4c0ab7b1ca17b8763613783e2458e77938092c18ac919420ab8655c8c1"},
-    {file = "httptools-0.5.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f659d7a48401158c59933904040085c200b4be631cb5f23a7d561fbae593ec1f"},
-    {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1616b3ba965cd68e6f759eeb5d34fbf596a79e84215eeceebf34ba3f61fdc7"},
-    {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3625a55886257755cb15194efbf209584754e31d336e09e2ffe0685a76cb4b60"},
-    {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:72ad589ba5e4a87e1d404cc1cb1b5780bfcb16e2aec957b88ce15fe879cc08ca"},
-    {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:850fec36c48df5a790aa735417dca8ce7d4b48d59b3ebd6f83e88a8125cde324"},
-    {file = "httptools-0.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f222e1e9d3f13b68ff8a835574eda02e67277d51631d69d7cf7f8e07df678c86"},
-    {file = "httptools-0.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3cb8acf8f951363b617a8420768a9f249099b92e703c052f9a51b66342eea89b"},
-    {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550059885dc9c19a072ca6d6735739d879be3b5959ec218ba3e013fd2255a11b"},
-    {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a04fe458a4597aa559b79c7f48fe3dceabef0f69f562daf5c5e926b153817281"},
-    {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d0c1044bce274ec6711f0770fd2d5544fe392591d204c68328e60a46f88843b"},
-    {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c6eeefd4435055a8ebb6c5cc36111b8591c192c56a95b45fe2af22d9881eee25"},
-    {file = "httptools-0.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5b65be160adcd9de7a7e6413a4966665756e263f0d5ddeffde277ffeee0576a5"},
-    {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fe9c766a0c35b7e3d6b6939393c8dfdd5da3ac5dec7f971ec9134f284c6c36d6"},
-    {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85b392aba273566c3d5596a0a490978c085b79700814fb22bfd537d381dd230c"},
-    {file = "httptools-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5e3088f4ed33947e16fd865b8200f9cfae1144f41b64a8cf19b599508e096bc"},
-    {file = "httptools-0.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c2a56b6aad7cc8f5551d8e04ff5a319d203f9d870398b94702300de50190f63"},
-    {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b571b281a19762adb3f48a7731f6842f920fa71108aff9be49888320ac3e24d"},
-    {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa47ffcf70ba6f7848349b8a6f9b481ee0f7637931d91a9860a1838bfc586901"},
-    {file = "httptools-0.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:bede7ee075e54b9a5bde695b4fc8f569f30185891796b2e4e09e2226801d09bd"},
-    {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:64eba6f168803a7469866a9c9b5263a7463fa8b7a25b35e547492aa7322036b6"},
-    {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4b098e4bb1174096a93f48f6193e7d9aa7071506a5877da09a783509ca5fff42"},
-    {file = "httptools-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9423a2de923820c7e82e18980b937893f4aa8251c43684fa1772e341f6e06887"},
-    {file = "httptools-0.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca1b7becf7d9d3ccdbb2f038f665c0f4857e08e1d8481cbcc1a86a0afcfb62b2"},
-    {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:50d4613025f15f4b11f1c54bbed4761c0020f7f921b95143ad6d58c151198142"},
-    {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ffce9d81c825ac1deaa13bc9694c0562e2840a48ba21cfc9f3b4c922c16f372"},
-    {file = "httptools-0.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:1af91b3650ce518d226466f30bbba5b6376dbd3ddb1b2be8b0658c6799dd450b"},
-    {file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"},
-]
-
-[package.extras]
-test = ["Cython (>=0.29.24,<0.30.0)"]
-
-[[package]]
-name = "idna"
-version = "3.4"
-description = "Internationalized Domain Names in Applications (IDNA)"
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
-    {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
-]
-
-[[package]]
-name = "imagesize"
-version = "1.4.1"
-description = "Getting image size from png/jpeg/jpeg2000/gif file"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
-    {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"},
-    {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"},
-]
-
-[[package]]
-name = "importlib-metadata"
-version = "6.6.0"
-description = "Read metadata from Python packages"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"},
-    {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"},
-]
-
-[package.dependencies]
-zipp = ">=0.5"
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-perf = ["ipython"]
-testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"]
-
-[[package]]
-name = "importlib-resources"
-version = "5.12.0"
-description = "Read resources from Python packages"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"},
-    {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"},
-]
-
-[package.dependencies]
-zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
-
-[[package]]
-name = "itsdangerous"
-version = "2.1.2"
-description = "Safely pass data to untrusted environments and back."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"},
-    {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"},
-]
-
-[[package]]
-name = "jinja2"
-version = "3.1.2"
-description = "A very fast and expressive template engine."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
-    {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
-]
-
-[package.dependencies]
-MarkupSafe = ">=2.0"
-
-[package.extras]
-i18n = ["Babel (>=2.7)"]
-
-[[package]]
-name = "jsonpatch"
-version = "1.32"
-description = "Apply JSON-Patches (RFC 6902)"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-files = [
-    {file = "jsonpatch-1.32-py2.py3-none-any.whl", hash = "sha256:26ac385719ac9f54df8a2f0827bb8253aa3ea8ab7b3368457bcdb8c14595a397"},
-    {file = "jsonpatch-1.32.tar.gz", hash = "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2"},
-]
-
-[package.dependencies]
-jsonpointer = ">=1.9"
-
-[[package]]
-name = "jsonpointer"
-version = "2.3"
-description = "Identify specific nodes in a JSON document (RFC 6901)"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
-    {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"},
-    {file = "jsonpointer-2.3.tar.gz", hash = "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a"},
-]
-
-[[package]]
-name = "kiwisolver"
-version = "1.4.4"
-description = "A fast implementation of the Cassowary constraint solver"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"},
-    {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"},
-    {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"},
-    {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"},
-    {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"},
-    {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"},
-    {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"},
-    {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"},
-    {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"},
-    {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"},
-    {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"},
-    {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"},
-    {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"},
-    {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"},
-    {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"},
-    {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"},
-    {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"},
-    {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"},
-    {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"},
-    {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"},
-    {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"},
-]
-
-[[package]]
-name = "livereload"
-version = "2.6.3"
-description = "Python LiveReload is an awesome tool for web developers"
-optional = false
-python-versions = "*"
-files = [
-    {file = "livereload-2.6.3-py2.py3-none-any.whl", hash = "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4"},
-    {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"},
-]
-
-[package.dependencies]
-six = "*"
-tornado = {version = "*", markers = "python_version > \"2.7\""}
-
-[[package]]
-name = "lxml"
-version = "4.9.2"
-description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
-files = [
-    {file = "lxml-4.9.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:76cf573e5a365e790396a5cc2b909812633409306c6531a6877c59061e42c4f2"},
-    {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b1f42b6921d0e81b1bcb5e395bc091a70f41c4d4e55ba99c6da2b31626c44892"},
-    {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9f102706d0ca011de571de32c3247c6476b55bb6bc65a20f682f000b07a4852a"},
-    {file = "lxml-4.9.2-cp27-cp27m-win32.whl", hash = "sha256:8d0b4612b66ff5d62d03bcaa043bb018f74dfea51184e53f067e6fdcba4bd8de"},
-    {file = "lxml-4.9.2-cp27-cp27m-win_amd64.whl", hash = "sha256:4c8f293f14abc8fd3e8e01c5bd86e6ed0b6ef71936ded5bf10fe7a5efefbaca3"},
-    {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2899456259589aa38bfb018c364d6ae7b53c5c22d8e27d0ec7609c2a1ff78b50"},
-    {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6749649eecd6a9871cae297bffa4ee76f90b4504a2a2ab528d9ebe912b101975"},
-    {file = "lxml-4.9.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a08cff61517ee26cb56f1e949cca38caabe9ea9fbb4b1e10a805dc39844b7d5c"},
-    {file = "lxml-4.9.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:85cabf64adec449132e55616e7ca3e1000ab449d1d0f9d7f83146ed5bdcb6d8a"},
-    {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8340225bd5e7a701c0fa98284c849c9b9fc9238abf53a0ebd90900f25d39a4e4"},
-    {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1ab8f1f932e8f82355e75dda5413a57612c6ea448069d4fb2e217e9a4bed13d4"},
-    {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:699a9af7dffaf67deeae27b2112aa06b41c370d5e7633e0ee0aea2e0b6c211f7"},
-    {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9cc34af337a97d470040f99ba4282f6e6bac88407d021688a5d585e44a23184"},
-    {file = "lxml-4.9.2-cp310-cp310-win32.whl", hash = "sha256:d02a5399126a53492415d4906ab0ad0375a5456cc05c3fc0fc4ca11771745cda"},
-    {file = "lxml-4.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:a38486985ca49cfa574a507e7a2215c0c780fd1778bb6290c21193b7211702ab"},
-    {file = "lxml-4.9.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c83203addf554215463b59f6399835201999b5e48019dc17f182ed5ad87205c9"},
-    {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2a87fa548561d2f4643c99cd13131acb607ddabb70682dcf1dff5f71f781a4bf"},
-    {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:d6b430a9938a5a5d85fc107d852262ddcd48602c120e3dbb02137c83d212b380"},
-    {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3efea981d956a6f7173b4659849f55081867cf897e719f57383698af6f618a92"},
-    {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:df0623dcf9668ad0445e0558a21211d4e9a149ea8f5666917c8eeec515f0a6d1"},
-    {file = "lxml-4.9.2-cp311-cp311-win32.whl", hash = "sha256:da248f93f0418a9e9d94b0080d7ebc407a9a5e6d0b57bb30db9b5cc28de1ad33"},
-    {file = "lxml-4.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:3818b8e2c4b5148567e1b09ce739006acfaa44ce3156f8cbbc11062994b8e8dd"},
-    {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca989b91cf3a3ba28930a9fc1e9aeafc2a395448641df1f387a2d394638943b0"},
-    {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:822068f85e12a6e292803e112ab876bc03ed1f03dddb80154c395f891ca6b31e"},
-    {file = "lxml-4.9.2-cp35-cp35m-win32.whl", hash = "sha256:be7292c55101e22f2a3d4d8913944cbea71eea90792bf914add27454a13905df"},
-    {file = "lxml-4.9.2-cp35-cp35m-win_amd64.whl", hash = "sha256:998c7c41910666d2976928c38ea96a70d1aa43be6fe502f21a651e17483a43c5"},
-    {file = "lxml-4.9.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:b26a29f0b7fc6f0897f043ca366142d2b609dc60756ee6e4e90b5f762c6adc53"},
-    {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:ab323679b8b3030000f2be63e22cdeea5b47ee0abd2d6a1dc0c8103ddaa56cd7"},
-    {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:689bb688a1db722485e4610a503e3e9210dcc20c520b45ac8f7533c837be76fe"},
-    {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f49e52d174375a7def9915c9f06ec4e569d235ad428f70751765f48d5926678c"},
-    {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:36c3c175d34652a35475a73762b545f4527aec044910a651d2bf50de9c3352b1"},
-    {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a35f8b7fa99f90dd2f5dc5a9fa12332642f087a7641289ca6c40d6e1a2637d8e"},
-    {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:58bfa3aa19ca4c0f28c5dde0ff56c520fbac6f0daf4fac66ed4c8d2fb7f22e74"},
-    {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc718cd47b765e790eecb74d044cc8d37d58562f6c314ee9484df26276d36a38"},
-    {file = "lxml-4.9.2-cp36-cp36m-win32.whl", hash = "sha256:d5bf6545cd27aaa8a13033ce56354ed9e25ab0e4ac3b5392b763d8d04b08e0c5"},
-    {file = "lxml-4.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:3ab9fa9d6dc2a7f29d7affdf3edebf6ece6fb28a6d80b14c3b2fb9d39b9322c3"},
-    {file = "lxml-4.9.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:05ca3f6abf5cf78fe053da9b1166e062ade3fa5d4f92b4ed688127ea7d7b1d03"},
-    {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:a5da296eb617d18e497bcf0a5c528f5d3b18dadb3619fbdadf4ed2356ef8d941"},
-    {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:04876580c050a8c5341d706dd464ff04fd597095cc8c023252566a8826505726"},
-    {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c9ec3eaf616d67db0764b3bb983962b4f385a1f08304fd30c7283954e6a7869b"},
-    {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2a29ba94d065945944016b6b74e538bdb1751a1db6ffb80c9d3c2e40d6fa9894"},
-    {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a82d05da00a58b8e4c0008edbc8a4b6ec5a4bc1e2ee0fb6ed157cf634ed7fa45"},
-    {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:223f4232855ade399bd409331e6ca70fb5578efef22cf4069a6090acc0f53c0e"},
-    {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d17bc7c2ccf49c478c5bdd447594e82692c74222698cfc9b5daae7ae7e90743b"},
-    {file = "lxml-4.9.2-cp37-cp37m-win32.whl", hash = "sha256:b64d891da92e232c36976c80ed7ebb383e3f148489796d8d31a5b6a677825efe"},
-    {file = "lxml-4.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a0a336d6d3e8b234a3aae3c674873d8f0e720b76bc1d9416866c41cd9500ffb9"},
-    {file = "lxml-4.9.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:da4dd7c9c50c059aba52b3524f84d7de956f7fef88f0bafcf4ad7dde94a064e8"},
-    {file = "lxml-4.9.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:821b7f59b99551c69c85a6039c65b75f5683bdc63270fec660f75da67469ca24"},
-    {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e5168986b90a8d1f2f9dc1b841467c74221bd752537b99761a93d2d981e04889"},
-    {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8e20cb5a47247e383cf4ff523205060991021233ebd6f924bca927fcf25cf86f"},
-    {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13598ecfbd2e86ea7ae45ec28a2a54fb87ee9b9fdb0f6d343297d8e548392c03"},
-    {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:880bbbcbe2fca64e2f4d8e04db47bcdf504936fa2b33933efd945e1b429bea8c"},
-    {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d2278d59425777cfcb19735018d897ca8303abe67cc735f9f97177ceff8027f"},
-    {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5344a43228767f53a9df6e5b253f8cdca7dfc7b7aeae52551958192f56d98457"},
-    {file = "lxml-4.9.2-cp38-cp38-win32.whl", hash = "sha256:925073b2fe14ab9b87e73f9a5fde6ce6392da430f3004d8b72cc86f746f5163b"},
-    {file = "lxml-4.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:9b22c5c66f67ae00c0199f6055705bc3eb3fcb08d03d2ec4059a2b1b25ed48d7"},
-    {file = "lxml-4.9.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5f50a1c177e2fa3ee0667a5ab79fdc6b23086bc8b589d90b93b4bd17eb0e64d1"},
-    {file = "lxml-4.9.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:090c6543d3696cbe15b4ac6e175e576bcc3f1ccfbba970061b7300b0c15a2140"},
-    {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:63da2ccc0857c311d764e7d3d90f429c252e83b52d1f8f1d1fe55be26827d1f4"},
-    {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5b4545b8a40478183ac06c073e81a5ce4cf01bf1734962577cf2bb569a5b3bbf"},
-    {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2e430cd2824f05f2d4f687701144556646bae8f249fd60aa1e4c768ba7018947"},
-    {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6804daeb7ef69e7b36f76caddb85cccd63d0c56dedb47555d2fc969e2af6a1a5"},
-    {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a6e441a86553c310258aca15d1c05903aaf4965b23f3bc2d55f200804e005ee5"},
-    {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca34efc80a29351897e18888c71c6aca4a359247c87e0b1c7ada14f0ab0c0fb2"},
-    {file = "lxml-4.9.2-cp39-cp39-win32.whl", hash = "sha256:6b418afe5df18233fc6b6093deb82a32895b6bb0b1155c2cdb05203f583053f1"},
-    {file = "lxml-4.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1496ea22ca2c830cbcbd473de8f114a320da308438ae65abad6bab7867fe38f"},
-    {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b264171e3143d842ded311b7dccd46ff9ef34247129ff5bf5066123c55c2431c"},
-    {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0dc313ef231edf866912e9d8f5a042ddab56c752619e92dfd3a2c277e6a7299a"},
-    {file = "lxml-4.9.2-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:16efd54337136e8cd72fb9485c368d91d77a47ee2d42b057564aae201257d419"},
-    {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0f2b1e0d79180f344ff9f321327b005ca043a50ece8713de61d1cb383fb8ac05"},
-    {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:7b770ed79542ed52c519119473898198761d78beb24b107acf3ad65deae61f1f"},
-    {file = "lxml-4.9.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efa29c2fe6b4fdd32e8ef81c1528506895eca86e1d8c4657fda04c9b3786ddf9"},
-    {file = "lxml-4.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7e91ee82f4199af8c43d8158024cbdff3d931df350252288f0d4ce656df7f3b5"},
-    {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b23e19989c355ca854276178a0463951a653309fb8e57ce674497f2d9f208746"},
-    {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:01d36c05f4afb8f7c20fd9ed5badca32a2029b93b1750f571ccc0b142531caf7"},
-    {file = "lxml-4.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7b515674acfdcadb0eb5d00d8a709868173acece5cb0be3dd165950cbfdf5409"},
-    {file = "lxml-4.9.2.tar.gz", hash = "sha256:2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67"},
-]
-
-[package.extras]
-cssselect = ["cssselect (>=0.7)"]
-html5 = ["html5lib"]
-htmlsoup = ["BeautifulSoup4"]
-source = ["Cython (>=0.29.7)"]
-
-[[package]]
-name = "markupsafe"
-version = "2.0.1"
-description = "Safely add untrusted strings to HTML/XML markup."
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
-    {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
-    {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
-    {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
-    {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
-    {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
-    {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
-]
-
-[[package]]
-name = "matplotlib"
-version = "3.7.1"
-description = "Python plotting package"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:95cbc13c1fc6844ab8812a525bbc237fa1470863ff3dace7352e910519e194b1"},
-    {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:08308bae9e91aca1ec6fd6dda66237eef9f6294ddb17f0d0b3c863169bf82353"},
-    {file = "matplotlib-3.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:544764ba51900da4639c0f983b323d288f94f65f4024dc40ecb1542d74dc0500"},
-    {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56d94989191de3fcc4e002f93f7f1be5da476385dde410ddafbb70686acf00ea"},
-    {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99bc9e65901bb9a7ce5e7bb24af03675cbd7c70b30ac670aa263240635999a4"},
-    {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb7d248c34a341cd4c31a06fd34d64306624c8cd8d0def7abb08792a5abfd556"},
-    {file = "matplotlib-3.7.1-cp310-cp310-win32.whl", hash = "sha256:ce463ce590f3825b52e9fe5c19a3c6a69fd7675a39d589e8b5fbe772272b3a24"},
-    {file = "matplotlib-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d7bc90727351fb841e4d8ae620d2d86d8ed92b50473cd2b42ce9186104ecbba"},
-    {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:770a205966d641627fd5cf9d3cb4b6280a716522cd36b8b284a8eb1581310f61"},
-    {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f67bfdb83a8232cb7a92b869f9355d677bce24485c460b19d01970b64b2ed476"},
-    {file = "matplotlib-3.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2bf092f9210e105f414a043b92af583c98f50050559616930d884387d0772aba"},
-    {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89768d84187f31717349c6bfadc0e0d8c321e8eb34522acec8a67b1236a66332"},
-    {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83111e6388dec67822e2534e13b243cc644c7494a4bb60584edbff91585a83c6"},
-    {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a867bf73a7eb808ef2afbca03bcdb785dae09595fbe550e1bab0cd023eba3de0"},
-    {file = "matplotlib-3.7.1-cp311-cp311-win32.whl", hash = "sha256:fbdeeb58c0cf0595efe89c05c224e0a502d1aa6a8696e68a73c3efc6bc354304"},
-    {file = "matplotlib-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:c0bd19c72ae53e6ab979f0ac6a3fafceb02d2ecafa023c5cca47acd934d10be7"},
-    {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6eb88d87cb2c49af00d3bbc33a003f89fd9f78d318848da029383bfc08ecfbfb"},
-    {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:cf0e4f727534b7b1457898c4f4ae838af1ef87c359b76dcd5330fa31893a3ac7"},
-    {file = "matplotlib-3.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46a561d23b91f30bccfd25429c3c706afe7d73a5cc64ef2dfaf2b2ac47c1a5dc"},
-    {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8704726d33e9aa8a6d5215044b8d00804561971163563e6e6591f9dcf64340cc"},
-    {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4cf327e98ecf08fcbb82685acaf1939d3338548620ab8dfa02828706402c34de"},
-    {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:617f14ae9d53292ece33f45cba8503494ee199a75b44de7717964f70637a36aa"},
-    {file = "matplotlib-3.7.1-cp38-cp38-win32.whl", hash = "sha256:7c9a4b2da6fac77bcc41b1ea95fadb314e92508bf5493ceff058e727e7ecf5b0"},
-    {file = "matplotlib-3.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:14645aad967684e92fc349493fa10c08a6da514b3d03a5931a1bac26e6792bd1"},
-    {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:81a6b377ea444336538638d31fdb39af6be1a043ca5e343fe18d0f17e098770b"},
-    {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:28506a03bd7f3fe59cd3cd4ceb2a8d8a2b1db41afede01f66c42561b9be7b4b7"},
-    {file = "matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c587963b85ce41e0a8af53b9b2de8dddbf5ece4c34553f7bd9d066148dc719c"},
-    {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bf26ade3ff0f27668989d98c8435ce9327d24cffb7f07d24ef609e33d582439"},
-    {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:def58098f96a05f90af7e92fd127d21a287068202aa43b2a93476170ebd99e87"},
-    {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f883a22a56a84dba3b588696a2b8a1ab0d2c3d41be53264115c71b0a942d8fdb"},
-    {file = "matplotlib-3.7.1-cp39-cp39-win32.whl", hash = "sha256:4f99e1b234c30c1e9714610eb0c6d2f11809c9c78c984a613ae539ea2ad2eb4b"},
-    {file = "matplotlib-3.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:3ba2af245e36990facf67fde840a760128ddd71210b2ab6406e640188d69d136"},
-    {file = "matplotlib-3.7.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3032884084f541163f295db8a6536e0abb0db464008fadca6c98aaf84ccf4717"},
-    {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a2cb34336110e0ed8bb4f650e817eed61fa064acbefeb3591f1b33e3a84fd96"},
-    {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b867e2f952ed592237a1828f027d332d8ee219ad722345b79a001f49df0936eb"},
-    {file = "matplotlib-3.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:57bfb8c8ea253be947ccb2bc2d1bb3862c2bccc662ad1b4626e1f5e004557042"},
-    {file = "matplotlib-3.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:438196cdf5dc8d39b50a45cb6e3f6274edbcf2254f85fa9b895bf85851c3a613"},
-    {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21e9cff1a58d42e74d01153360de92b326708fb205250150018a52c70f43c290"},
-    {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d4725d70b7c03e082bbb8a34639ede17f333d7247f56caceb3801cb6ff703d"},
-    {file = "matplotlib-3.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97cc368a7268141afb5690760921765ed34867ffb9655dd325ed207af85c7529"},
-    {file = "matplotlib-3.7.1.tar.gz", hash = "sha256:7b73305f25eab4541bd7ee0b96d87e53ae9c9f1823be5659b806cd85786fe882"},
-]
-
-[package.dependencies]
-contourpy = ">=1.0.1"
-cycler = ">=0.10"
-fonttools = ">=4.22.0"
-importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""}
-kiwisolver = ">=1.0.1"
-numpy = ">=1.20"
-packaging = ">=20.0"
-pillow = ">=6.2.0"
-pyparsing = ">=2.3.1"
-python-dateutil = ">=2.7"
-
-[[package]]
-name = "multidict"
-version = "6.0.4"
-description = "multidict implementation"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"},
-    {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"},
-    {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"},
-    {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"},
-    {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"},
-    {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"},
-    {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"},
-    {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"},
-    {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"},
-    {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"},
-    {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"},
-    {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"},
-    {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"},
-    {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"},
-    {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"},
-    {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"},
-    {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"},
-    {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"},
-    {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"},
-    {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"},
-    {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"},
-    {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"},
-    {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"},
-    {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"},
-    {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"},
-    {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"},
-    {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"},
-    {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"},
-    {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"},
-    {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"},
-    {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"},
-    {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"},
-    {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"},
-    {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"},
-    {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"},
-    {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"},
-    {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"},
-    {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"},
-    {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"},
-    {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"},
-    {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"},
-    {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"},
-    {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"},
-    {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"},
-    {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"},
-    {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"},
-    {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"},
-    {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"},
-    {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"},
-    {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"},
-    {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"},
-    {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"},
-    {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"},
-    {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"},
-    {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"},
-    {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"},
-    {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"},
-    {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"},
-    {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"},
-    {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"},
-    {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"},
-    {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"},
-    {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"},
-    {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"},
-    {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"},
-    {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"},
-    {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"},
-    {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"},
-    {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"},
-    {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"},
-    {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"},
-    {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"},
-    {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"},
-    {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"},
-]
-
-[[package]]
-name = "mypy-extensions"
-version = "1.0.0"
-description = "Type system extensions for programs checked with the mypy type checker."
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
-    {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
-]
-
-[[package]]
-name = "numpy"
-version = "1.24.3"
-description = "Fundamental package for array computing in Python"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c1104d3c036fb81ab923f507536daedc718d0ad5a8707c6061cdfd6d184e570"},
-    {file = "numpy-1.24.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:202de8f38fc4a45a3eea4b63e2f376e5f2dc64ef0fa692838e31a808520efaf7"},
-    {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8535303847b89aa6b0f00aa1dc62867b5a32923e4d1681a35b5eef2d9591a463"},
-    {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d926b52ba1367f9acb76b0df6ed21f0b16a1ad87c6720a1121674e5cf63e2b6"},
-    {file = "numpy-1.24.3-cp310-cp310-win32.whl", hash = "sha256:f21c442fdd2805e91799fbe044a7b999b8571bb0ab0f7850d0cb9641a687092b"},
-    {file = "numpy-1.24.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab5f23af8c16022663a652d3b25dcdc272ac3f83c3af4c02eb8b824e6b3ab9d7"},
-    {file = "numpy-1.24.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9a7721ec204d3a237225db3e194c25268faf92e19338a35f3a224469cb6039a3"},
-    {file = "numpy-1.24.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d6cc757de514c00b24ae8cf5c876af2a7c3df189028d68c0cb4eaa9cd5afc2bf"},
-    {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e3f4e85fc5d4fd311f6e9b794d0c00e7002ec122be271f2019d63376f1d385"},
-    {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1d3c026f57ceaad42f8231305d4653d5f05dc6332a730ae5c0bea3513de0950"},
-    {file = "numpy-1.24.3-cp311-cp311-win32.whl", hash = "sha256:c91c4afd8abc3908e00a44b2672718905b8611503f7ff87390cc0ac3423fb096"},
-    {file = "numpy-1.24.3-cp311-cp311-win_amd64.whl", hash = "sha256:5342cf6aad47943286afa6f1609cad9b4266a05e7f2ec408e2cf7aea7ff69d80"},
-    {file = "numpy-1.24.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7776ea65423ca6a15255ba1872d82d207bd1e09f6d0894ee4a64678dd2204078"},
-    {file = "numpy-1.24.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae8d0be48d1b6ed82588934aaaa179875e7dc4f3d84da18d7eae6eb3f06c242c"},
-    {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecde0f8adef7dfdec993fd54b0f78183051b6580f606111a6d789cd14c61ea0c"},
-    {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4749e053a29364d3452c034827102ee100986903263e89884922ef01a0a6fd2f"},
-    {file = "numpy-1.24.3-cp38-cp38-win32.whl", hash = "sha256:d933fabd8f6a319e8530d0de4fcc2e6a61917e0b0c271fded460032db42a0fe4"},
-    {file = "numpy-1.24.3-cp38-cp38-win_amd64.whl", hash = "sha256:56e48aec79ae238f6e4395886b5eaed058abb7231fb3361ddd7bfdf4eed54289"},
-    {file = "numpy-1.24.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4719d5aefb5189f50887773699eaf94e7d1e02bf36c1a9d353d9f46703758ca4"},
-    {file = "numpy-1.24.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ec87a7084caa559c36e0a2309e4ecb1baa03b687201d0a847c8b0ed476a7187"},
-    {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea8282b9bcfe2b5e7d491d0bf7f3e2da29700cec05b49e64d6246923329f2b02"},
-    {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210461d87fb02a84ef243cac5e814aad2b7f4be953b32cb53327bb49fd77fbb4"},
-    {file = "numpy-1.24.3-cp39-cp39-win32.whl", hash = "sha256:784c6da1a07818491b0ffd63c6bbe5a33deaa0e25a20e1b3ea20cf0e43f8046c"},
-    {file = "numpy-1.24.3-cp39-cp39-win_amd64.whl", hash = "sha256:d5036197ecae68d7f491fcdb4df90082b0d4960ca6599ba2659957aafced7c17"},
-    {file = "numpy-1.24.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:352ee00c7f8387b44d19f4cada524586f07379c0d49270f87233983bc5087ca0"},
-    {file = "numpy-1.24.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d6acc2e7524c9955e5c903160aa4ea083736fde7e91276b0e5d98e6332812"},
-    {file = "numpy-1.24.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:35400e6a8d102fd07c71ed7dcadd9eb62ee9a6e84ec159bd48c28235bbb0f8e4"},
-    {file = "numpy-1.24.3.tar.gz", hash = "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155"},
-]
-
-[[package]]
-name = "packaging"
-version = "23.1"
-description = "Core utilities for Python packages"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"},
-    {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"},
-]
-
-[[package]]
-name = "pillow"
-version = "9.5.0"
-description = "Python Imaging Library (Fork)"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"},
-    {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"},
-    {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"},
-    {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"},
-    {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"},
-    {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"},
-    {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"},
-    {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"},
-    {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"},
-    {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"},
-    {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"},
-    {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"},
-    {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"},
-    {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"},
-    {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"},
-    {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"},
-    {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"},
-    {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"},
-    {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"},
-    {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"},
-    {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"},
-    {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"},
-    {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"},
-    {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"},
-    {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"},
-    {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"},
-    {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"},
-    {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"},
-    {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"},
-    {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"},
-    {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"},
-    {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"},
-    {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"},
-    {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"},
-    {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"},
-    {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"},
-    {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"},
-    {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"},
-    {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"},
-    {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"},
-    {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"},
-    {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"},
-    {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"},
-    {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"},
-    {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"},
-    {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"},
-    {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"},
-    {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"},
-    {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"},
-    {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"},
-    {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"},
-    {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"},
-    {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"},
-    {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"},
-    {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"},
-    {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"},
-    {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"},
-    {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"},
-    {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"},
-    {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"},
-    {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"},
-    {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"},
-    {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"},
-    {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"},
-    {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"},
-    {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"},
-]
-
-[package.extras]
-docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
-tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
-
-[[package]]
-name = "playwright"
-version = "1.34.0"
-description = "A high-level API to automate web browsers"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "playwright-1.34.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:69bb9b3296e366a23a99277b4c7673cb54ce71a3f5d630f114f7701b61f98f25"},
-    {file = "playwright-1.34.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:402d946631c8458436e099d7731bbf54cf79c9e62e3acae0ea8421e72616926b"},
-    {file = "playwright-1.34.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:462251cda0fcbb273497d357dbe14b11e43ebceb0bac9b892beda041ff209aa9"},
-    {file = "playwright-1.34.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:a8ba124ea302596a03a66993cd500484fb255cbc10fe0757fa4d49f974267a80"},
-    {file = "playwright-1.34.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf0cb6aac49d24335fe361868aea72b11f276a95e7809f1a5d1c69b4120c46ac"},
-    {file = "playwright-1.34.0-py3-none-win32.whl", hash = "sha256:c50fef189d87243cc09ae0feb8e417fbe434359ccbcc863fb19ba06d46d31c33"},
-    {file = "playwright-1.34.0-py3-none-win_amd64.whl", hash = "sha256:42e16c930e1e910461f4c551a72fc1b900f37124431bf2b6a6d9ddae70042db4"},
-]
-
-[package.dependencies]
-greenlet = "2.0.2"
-pyee = "9.0.4"
-
-[[package]]
-name = "pydantic"
-version = "1.10.8"
-description = "Data validation and settings management using python type hints"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "pydantic-1.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1243d28e9b05003a89d72e7915fdb26ffd1d39bdd39b00b7dbe4afae4b557f9d"},
-    {file = "pydantic-1.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0ab53b609c11dfc0c060d94335993cc2b95b2150e25583bec37a49b2d6c6c3f"},
-    {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9613fadad06b4f3bc5db2653ce2f22e0de84a7c6c293909b48f6ed37b83c61f"},
-    {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df7800cb1984d8f6e249351139667a8c50a379009271ee6236138a22a0c0f319"},
-    {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0c6fafa0965b539d7aab0a673a046466d23b86e4b0e8019d25fd53f4df62c277"},
-    {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e82d4566fcd527eae8b244fa952d99f2ca3172b7e97add0b43e2d97ee77f81ab"},
-    {file = "pydantic-1.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab523c31e22943713d80d8d342d23b6f6ac4b792a1e54064a8d0cf78fd64e800"},
-    {file = "pydantic-1.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:666bdf6066bf6dbc107b30d034615d2627e2121506c555f73f90b54a463d1f33"},
-    {file = "pydantic-1.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:35db5301b82e8661fa9c505c800d0990bc14e9f36f98932bb1d248c0ac5cada5"},
-    {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c1e29f447557e9e26afb1c4dbf8768a10cc676e3781b6a577841ade126b85"},
-    {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93e766b4a8226e0708ef243e843105bf124e21331694367f95f4e3b4a92bbb3f"},
-    {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88f195f582851e8db960b4a94c3e3ad25692c1c1539e2552f3df7a9e972ef60e"},
-    {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:34d327c81e68a1ecb52fe9c8d50c8a9b3e90d3c8ad991bfc8f953fb477d42fb4"},
-    {file = "pydantic-1.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:d532bf00f381bd6bc62cabc7d1372096b75a33bc197a312b03f5838b4fb84edd"},
-    {file = "pydantic-1.10.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7d5b8641c24886d764a74ec541d2fc2c7fb19f6da2a4001e6d580ba4a38f7878"},
-    {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1f6cb446470b7ddf86c2e57cd119a24959af2b01e552f60705910663af09a4"},
-    {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c33b60054b2136aef8cf190cd4c52a3daa20b2263917c49adad20eaf381e823b"},
-    {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1952526ba40b220b912cdc43c1c32bcf4a58e3f192fa313ee665916b26befb68"},
-    {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bb14388ec45a7a0dc429e87def6396f9e73c8c77818c927b6a60706603d5f2ea"},
-    {file = "pydantic-1.10.8-cp37-cp37m-win_amd64.whl", hash = "sha256:16f8c3e33af1e9bb16c7a91fc7d5fa9fe27298e9f299cff6cb744d89d573d62c"},
-    {file = "pydantic-1.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ced8375969673929809d7f36ad322934c35de4af3b5e5b09ec967c21f9f7887"},
-    {file = "pydantic-1.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93e6bcfccbd831894a6a434b0aeb1947f9e70b7468f274154d03d71fabb1d7c6"},
-    {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:191ba419b605f897ede9892f6c56fb182f40a15d309ef0142212200a10af4c18"},
-    {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:052d8654cb65174d6f9490cc9b9a200083a82cf5c3c5d3985db765757eb3b375"},
-    {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ceb6a23bf1ba4b837d0cfe378329ad3f351b5897c8d4914ce95b85fba96da5a1"},
-    {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f2e754d5566f050954727c77f094e01793bcb5725b663bf628fa6743a5a9108"},
-    {file = "pydantic-1.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:6a82d6cda82258efca32b40040228ecf43a548671cb174a1e81477195ed3ed56"},
-    {file = "pydantic-1.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e59417ba8a17265e632af99cc5f35ec309de5980c440c255ab1ca3ae96a3e0e"},
-    {file = "pydantic-1.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84d80219c3f8d4cad44575e18404099c76851bc924ce5ab1c4c8bb5e2a2227d0"},
-    {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e4148e635994d57d834be1182a44bdb07dd867fa3c2d1b37002000646cc5459"},
-    {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f7b0bf8553e310e530e9f3a2f5734c68699f42218bf3568ef49cd9b0e44df4"},
-    {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42aa0c4b5c3025483240a25b09f3c09a189481ddda2ea3a831a9d25f444e03c1"},
-    {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17aef11cc1b997f9d574b91909fed40761e13fac438d72b81f902226a69dac01"},
-    {file = "pydantic-1.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:66a703d1983c675a6e0fed8953b0971c44dba48a929a2000a493c3772eb61a5a"},
-    {file = "pydantic-1.10.8-py3-none-any.whl", hash = "sha256:7456eb22ed9aaa24ff3e7b4757da20d9e5ce2a81018c1b3ebd81a0b88a18f3b2"},
-    {file = "pydantic-1.10.8.tar.gz", hash = "sha256:1410275520dfa70effadf4c21811d755e7ef9bb1f1d077a21958153a92c8d9ca"},
-]
-
-[package.dependencies]
-typing-extensions = ">=4.2.0"
-
-[package.extras]
-dotenv = ["python-dotenv (>=0.10.4)"]
-email = ["email-validator (>=1.0.3)"]
-
-[[package]]
-name = "pyee"
-version = "9.0.4"
-description = "A port of node.js's EventEmitter to python."
-optional = false
-python-versions = "*"
-files = [
-    {file = "pyee-9.0.4-py2.py3-none-any.whl", hash = "sha256:9f066570130c554e9cc12de5a9d86f57c7ee47fece163bbdaa3e9c933cfbdfa5"},
-    {file = "pyee-9.0.4.tar.gz", hash = "sha256:2770c4928abc721f46b705e6a72b0c59480c4a69c9a83ca0b00bb994f1ea4b32"},
-]
-
-[package.dependencies]
-typing-extensions = "*"
-
-[[package]]
-name = "pygments"
-version = "2.15.1"
-description = "Pygments is a syntax highlighting package written in Python."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"},
-    {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"},
-]
-
-[package.extras]
-plugins = ["importlib-metadata"]
-
-[[package]]
-name = "pyparsing"
-version = "3.0.9"
-description = "pyparsing module - Classes and methods to define and execute parsing grammars"
-optional = false
-python-versions = ">=3.6.8"
-files = [
-    {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
-    {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
-]
-
-[package.extras]
-diagrams = ["jinja2", "railroad-diagrams"]
-
-[[package]]
-name = "python-dateutil"
-version = "2.8.2"
-description = "Extensions to the standard Python datetime module"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-files = [
-    {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
-    {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
-]
-
-[package.dependencies]
-six = ">=1.5"
-
-[[package]]
-name = "python-dotenv"
-version = "1.0.0"
-description = "Read key-value pairs from a .env file and set them as environment variables"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"},
-    {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"},
-]
-
-[package.extras]
-cli = ["click (>=5.0)"]
-
-[[package]]
-name = "pyyaml"
-version = "6.0"
-description = "YAML parser and emitter for Python"
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
-    {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
-    {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
-    {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
-    {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
-    {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
-    {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
-    {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
-    {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
-    {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
-    {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
-    {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
-    {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
-    {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
-    {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
-    {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
-    {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
-    {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
-    {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
-    {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
-    {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
-    {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
-    {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
-    {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
-    {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
-    {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
-    {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
-    {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
-    {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
-    {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
-    {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
-    {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
-    {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
-    {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
-    {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
-    {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
-    {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
-    {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
-    {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
-    {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
-]
-
-[[package]]
-name = "reactpy"
-version = "1.0.0"
-description = "Reactive user interfaces with pure Python"
-optional = false
-python-versions = ">=3.9"
-files = []
-develop = false
-
-[package.dependencies]
-anyio = ">=3"
-asgiref = ">=3"
-colorlog = ">=6"
-fastapi = {version = ">=0.63.0", optional = true, markers = "extra == \"fastapi\""}
-fastjsonschema = ">=2.14.5"
-flask = {version = "*", optional = true, markers = "extra == \"flask\""}
-flask-cors = {version = "*", optional = true, markers = "extra == \"flask\""}
-flask-sock = {version = "*", optional = true, markers = "extra == \"flask\""}
-jsonpatch = ">=1.32"
-lxml = ">=4"
-markupsafe = {version = ">=1.1.1,<2.1", optional = true, markers = "extra == \"flask\""}
-mypy-extensions = ">=0.4.3"
-playwright = {version = "*", optional = true, markers = "extra == \"testing\""}
-requests = ">=2"
-sanic = {version = ">=21", optional = true, markers = "extra == \"sanic\""}
-sanic-cors = {version = "*", optional = true, markers = "extra == \"sanic\""}
-starlette = {version = ">=0.13.6", optional = true, markers = "extra == \"starlette\""}
-tornado = {version = "*", optional = true, markers = "extra == \"tornado\""}
-typing-extensions = ">=3.10"
-uvicorn = {version = ">=0.19.0", extras = ["standard"], optional = true, markers = "extra == \"fastapi\" or extra == \"sanic\" or extra == \"starlette\""}
-
-[package.extras]
-all = ["reactpy[fastapi,flask,sanic,starlette,testing,tornado]"]
-fastapi = ["fastapi (>=0.63.0)", "uvicorn[standard] (>=0.19.0)"]
-flask = ["flask", "flask-cors", "flask-sock", "markupsafe (>=1.1.1,<2.1)"]
-sanic = ["sanic (>=21)", "sanic-cors", "uvicorn[standard] (>=0.19.0)"]
-starlette = ["starlette (>=0.13.6)", "uvicorn[standard] (>=0.19.0)"]
-testing = ["playwright"]
-tornado = ["tornado"]
-
-[package.source]
-type = "directory"
-url = "../src/py/reactpy"
-
-[[package]]
-name = "requests"
-version = "2.31.0"
-description = "Python HTTP for Humans."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
-    {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
-]
-
-[package.dependencies]
-certifi = ">=2017.4.17"
-charset-normalizer = ">=2,<4"
-idna = ">=2.5,<4"
-urllib3 = ">=1.21.1,<3"
-
-[package.extras]
-socks = ["PySocks (>=1.5.6,!=1.5.7)"]
-use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
-
-[[package]]
-name = "sanic"
-version = "23.3.0"
-description = "A web server and web framework that's written to go fast. Build fast. Run fast."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "sanic-23.3.0-py3-none-any.whl", hash = "sha256:7cafbd63da9c6c6d8aeb8cb4304addf8a274352ab812014386c63e55f474fbee"},
-    {file = "sanic-23.3.0.tar.gz", hash = "sha256:b80ebc5c38c983cb45ae5ecc7a669a54c823ec1dff297fbd5f817b1e9e9e49af"},
-]
-
-[package.dependencies]
-aiofiles = ">=0.6.0"
-html5tagger = ">=1.2.1"
-httptools = ">=0.0.10"
-multidict = ">=5.0,<7.0"
-sanic-routing = ">=22.8.0"
-tracerite = ">=1.0.0"
-ujson = {version = ">=1.35", markers = "sys_platform != \"win32\" and implementation_name == \"cpython\""}
-uvloop = {version = ">=0.15.0", markers = "sys_platform != \"win32\" and implementation_name == \"cpython\""}
-websockets = ">=10.0"
-
-[package.extras]
-all = ["bandit", "beautifulsoup4", "black", "chardet (==3.*)", "coverage", "cryptography", "docutils", "enum-tools[sphinx]", "flake8", "isort (>=5.0.0)", "m2r2", "mistune (<2.0.0)", "mypy (>=0.901,<0.910)", "pygments", "pytest (==7.1.*)", "pytest-benchmark", "pytest-sanic", "sanic-testing (>=23.3.0)", "slotscheck (>=0.8.0,<1)", "sphinx (>=2.1.2)", "sphinx-rtd-theme (>=0.4.3)", "towncrier", "tox", "types-ujson", "uvicorn (<0.15.0)"]
-dev = ["bandit", "beautifulsoup4", "black", "chardet (==3.*)", "coverage", "cryptography", "docutils", "flake8", "isort (>=5.0.0)", "mypy (>=0.901,<0.910)", "pygments", "pytest (==7.1.*)", "pytest-benchmark", "pytest-sanic", "sanic-testing (>=23.3.0)", "slotscheck (>=0.8.0,<1)", "towncrier", "tox", "types-ujson", "uvicorn (<0.15.0)"]
-docs = ["docutils", "enum-tools[sphinx]", "m2r2", "mistune (<2.0.0)", "pygments", "sphinx (>=2.1.2)", "sphinx-rtd-theme (>=0.4.3)"]
-ext = ["sanic-ext"]
-http3 = ["aioquic"]
-test = ["bandit", "beautifulsoup4", "black", "chardet (==3.*)", "coverage", "docutils", "flake8", "isort (>=5.0.0)", "mypy (>=0.901,<0.910)", "pygments", "pytest (==7.1.*)", "pytest-benchmark", "pytest-sanic", "sanic-testing (>=23.3.0)", "slotscheck (>=0.8.0,<1)", "types-ujson", "uvicorn (<0.15.0)"]
-
-[[package]]
-name = "sanic-cors"
-version = "2.2.0"
-description = "A Sanic extension adding a decorator for CORS support. Based on flask-cors by Cory Dolphin."
-optional = false
-python-versions = "*"
-files = [
-    {file = "Sanic-Cors-2.2.0.tar.gz", hash = "sha256:f8d7515da4c8b837871d422c66314c4b5704396a78894b59c50e26aa72a95873"},
-    {file = "Sanic_Cors-2.2.0-py2.py3-none-any.whl", hash = "sha256:c3b133ff1f0bb609a53db35f727f5c371dc4ebeb6be4cc2c37c19dd8b9301115"},
-]
-
-[package.dependencies]
-packaging = ">=21.3"
-sanic = ">=21.9.3"
-
-[[package]]
-name = "sanic-routing"
-version = "22.8.0"
-description = "Core routing component for Sanic"
-optional = false
-python-versions = "*"
-files = [
-    {file = "sanic-routing-22.8.0.tar.gz", hash = "sha256:305729b4e0bf01f074044a2a315ff401fa7eeffb009eec1d2c81d35e1038ddfc"},
-    {file = "sanic_routing-22.8.0-py3-none-any.whl", hash = "sha256:9a928ed9e19a36bc019223be90a5da0ab88cdd76b101e032510b6a7073c017e9"},
-]
-
-[[package]]
-name = "simple-websocket"
-version = "0.10.0"
-description = "Simple WebSocket server and client for Python"
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "simple-websocket-0.10.0.tar.gz", hash = "sha256:82c0b0b1006d5490f09ff66392394d90dd758285635edad241e093e9a8abd3eb"},
-    {file = "simple_websocket-0.10.0-py3-none-any.whl", hash = "sha256:fc1bc56c393a187e7268f8ab99da1a8e8da9b5dfb7769a2f3b8dada00067745b"},
-]
-
-[package.dependencies]
-wsproto = "*"
-
-[[package]]
-name = "six"
-version = "1.16.0"
-description = "Python 2 and 3 compatibility utilities"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-files = [
-    {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
-    {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
-]
-
-[[package]]
-name = "sniffio"
-version = "1.3.0"
-description = "Sniff out which async library your code is running under"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
-    {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
-]
-
-[[package]]
-name = "snowballstemmer"
-version = "2.2.0"
-description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
-optional = false
-python-versions = "*"
-files = [
-    {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
-    {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
-]
-
-[[package]]
-name = "soupsieve"
-version = "2.4.1"
-description = "A modern CSS selector implementation for Beautiful Soup."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"},
-    {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"},
-]
-
-[[package]]
-name = "sphinx"
-version = "4.5.0"
-description = "Python documentation generator"
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"},
-    {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"},
-]
-
-[package.dependencies]
-alabaster = ">=0.7,<0.8"
-babel = ">=1.3"
-colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
-docutils = ">=0.14,<0.18"
-imagesize = "*"
-importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""}
-Jinja2 = ">=2.3"
-packaging = "*"
-Pygments = ">=2.0"
-requests = ">=2.5.0"
-snowballstemmer = ">=1.1"
-sphinxcontrib-applehelp = "*"
-sphinxcontrib-devhelp = "*"
-sphinxcontrib-htmlhelp = ">=2.0.0"
-sphinxcontrib-jsmath = "*"
-sphinxcontrib-qthelp = "*"
-sphinxcontrib-serializinghtml = ">=1.1.5"
-
-[package.extras]
-docs = ["sphinxcontrib-websupport"]
-lint = ["docutils-stubs", "flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "types-requests", "types-typed-ast"]
-test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"]
-
-[[package]]
-name = "sphinx-autobuild"
-version = "2021.3.14"
-description = "Rebuild Sphinx documentation on changes, with live-reload in the browser."
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "sphinx-autobuild-2021.3.14.tar.gz", hash = "sha256:de1ca3b66e271d2b5b5140c35034c89e47f263f2cd5db302c9217065f7443f05"},
-    {file = "sphinx_autobuild-2021.3.14-py3-none-any.whl", hash = "sha256:8fe8cbfdb75db04475232f05187c776f46f6e9e04cacf1e49ce81bdac649ccac"},
-]
-
-[package.dependencies]
-colorama = "*"
-livereload = "*"
-sphinx = "*"
-
-[package.extras]
-test = ["pytest", "pytest-cov"]
-
-[[package]]
-name = "sphinx-autodoc-typehints"
-version = "1.19.1"
-description = "Type hints (PEP 484) support for the Sphinx autodoc extension"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "sphinx_autodoc_typehints-1.19.1-py3-none-any.whl", hash = "sha256:9be46aeeb1b315eb5df1f3a7cb262149895d16c7d7dcd77b92513c3c3a1e85e6"},
-    {file = "sphinx_autodoc_typehints-1.19.1.tar.gz", hash = "sha256:6c841db55e0e9be0483ff3962a2152b60e79306f4288d8c4e7e86ac84486a5ea"},
-]
-
-[package.dependencies]
-Sphinx = ">=4.5"
-
-[package.extras]
-testing = ["covdefaults (>=2.2)", "coverage (>=6.3)", "diff-cover (>=6.4)", "nptyping (>=2.1.2)", "pytest (>=7.1)", "pytest-cov (>=3)", "sphobjinv (>=2)", "typing-extensions (>=4.1)"]
-type-comments = ["typed-ast (>=1.5.2)"]
-
-[[package]]
-name = "sphinx-copybutton"
-version = "0.5.2"
-description = "Add a copy button to each of your code cells."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "sphinx-copybutton-0.5.2.tar.gz", hash = "sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd"},
-    {file = "sphinx_copybutton-0.5.2-py3-none-any.whl", hash = "sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e"},
-]
-
-[package.dependencies]
-sphinx = ">=1.8"
-
-[package.extras]
-code-style = ["pre-commit (==2.12.1)"]
-rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme", "sphinx-examples"]
-
-[[package]]
-name = "sphinx-design"
-version = "0.4.1"
-description = "A sphinx extension for designing beautiful, view size responsive web components."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "sphinx_design-0.4.1-py3-none-any.whl", hash = "sha256:23bf5705eb31296d4451f68b0222a698a8a84396ffe8378dfd9319ba7ab8efd9"},
-    {file = "sphinx_design-0.4.1.tar.gz", hash = "sha256:5b6418ba4a2dc3d83592ea0ff61a52a891fe72195a4c3a18b2fa1c7668ce4708"},
-]
-
-[package.dependencies]
-sphinx = ">=4,<7"
-
-[package.extras]
-code-style = ["pre-commit (>=2.12,<3.0)"]
-rtd = ["myst-parser (>=0.18.0,<2)"]
-testing = ["myst-parser (>=0.18.0,<2)", "pytest (>=7.1,<8.0)", "pytest-cov", "pytest-regressions"]
-theme-furo = ["furo (>=2022.06.04,<2022.07)"]
-theme-pydata = ["pydata-sphinx-theme (>=0.9.0,<0.10.0)"]
-theme-rtd = ["sphinx-rtd-theme (>=1.0,<2.0)"]
-theme-sbt = ["sphinx-book-theme (>=0.3.0,<0.4.0)"]
-
-[[package]]
-name = "sphinx-reredirects"
-version = "0.1.2"
-description = "Handles redirects for moved pages in Sphinx documentation projects"
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "sphinx_reredirects-0.1.2-py3-none-any.whl", hash = "sha256:3a22161771aadd448bb608a4fe7277252182a337af53c18372b7104531d71489"},
-    {file = "sphinx_reredirects-0.1.2.tar.gz", hash = "sha256:a0e7213304759b01edc22f032f1715a1c61176fc8f167164e7a52b9feec9ac64"},
-]
-
-[package.dependencies]
-sphinx = "*"
-
-[[package]]
-name = "sphinx-resolve-py-references"
-version = "0.1.0"
-description = "Better python object resolution in Sphinx"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "sphinx_resolve_py_references-0.1.0-py2.py3-none-any.whl", hash = "sha256:ccf44a6b62d75c3a568285f4e1815734088c1a7cab7bbb7935bb22fbf0d78bc2"},
-    {file = "sphinx_resolve_py_references-0.1.0.tar.gz", hash = "sha256:0f87c06b29ec128964aee2e40d170d1d3c0e5f4955b2618a89ca724f42385372"},
-]
-
-[package.dependencies]
-sphinx = "*"
-
-[[package]]
-name = "sphinxcontrib-applehelp"
-version = "1.0.4"
-description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"},
-    {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"},
-]
-
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
-
-[[package]]
-name = "sphinxcontrib-devhelp"
-version = "1.0.2"
-description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"},
-    {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"},
-]
-
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
-
-[[package]]
-name = "sphinxcontrib-htmlhelp"
-version = "2.0.1"
-description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"},
-    {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"},
-]
-
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["html5lib", "pytest"]
-
-[[package]]
-name = "sphinxcontrib-jsmath"
-version = "1.0.1"
-description = "A sphinx extension which renders display math in HTML via JavaScript"
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
-    {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"},
-]
-
-[package.extras]
-test = ["flake8", "mypy", "pytest"]
-
-[[package]]
-name = "sphinxcontrib-qthelp"
-version = "1.0.3"
-description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"},
-    {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"},
-]
-
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
-
-[[package]]
-name = "sphinxcontrib-serializinghtml"
-version = "1.1.5"
-description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"},
-    {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"},
-]
-
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
-
-[[package]]
-name = "sphinxext-opengraph"
-version = "0.8.2"
-description = "Sphinx Extension to enable OGP support"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "sphinxext-opengraph-0.8.2.tar.gz", hash = "sha256:45a693b6704052c426576f0a1f630649c55b4188bc49eb63e9587e24a923db39"},
-    {file = "sphinxext_opengraph-0.8.2-py3-none-any.whl", hash = "sha256:6a05bdfe5176d9dd0a1d58a504f17118362ab976631213cd36fb44c4c40544c9"},
-]
-
-[package.dependencies]
-matplotlib = "*"
-sphinx = ">=4.0"
-
-[[package]]
-name = "starlette"
-version = "0.27.0"
-description = "The little ASGI library that shines."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "starlette-0.27.0-py3-none-any.whl", hash = "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91"},
-    {file = "starlette-0.27.0.tar.gz", hash = "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75"},
-]
-
-[package.dependencies]
-anyio = ">=3.4.0,<5"
-typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
-
-[package.extras]
-full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"]
-
-[[package]]
-name = "tornado"
-version = "6.3.2"
-description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
-optional = false
-python-versions = ">= 3.8"
-files = [
-    {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:c367ab6c0393d71171123ca5515c61ff62fe09024fa6bf299cd1339dc9456829"},
-    {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b46a6ab20f5c7c1cb949c72c1994a4585d2eaa0be4853f50a03b5031e964fc7c"},
-    {file = "tornado-6.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2de14066c4a38b4ecbbcd55c5cc4b5340eb04f1c5e81da7451ef555859c833f"},
-    {file = "tornado-6.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05615096845cf50a895026f749195bf0b10b8909f9be672f50b0fe69cba368e4"},
-    {file = "tornado-6.3.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b17b1cf5f8354efa3d37c6e28fdfd9c1c1e5122f2cb56dac121ac61baa47cbe"},
-    {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:29e71c847a35f6e10ca3b5c2990a52ce38b233019d8e858b755ea6ce4dcdd19d"},
-    {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:834ae7540ad3a83199a8da8f9f2d383e3c3d5130a328889e4cc991acc81e87a0"},
-    {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6a0848f1aea0d196a7c4f6772197cbe2abc4266f836b0aac76947872cd29b411"},
-    {file = "tornado-6.3.2-cp38-abi3-win32.whl", hash = "sha256:7efcbcc30b7c654eb6a8c9c9da787a851c18f8ccd4a5a3a95b05c7accfa068d2"},
-    {file = "tornado-6.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:0c325e66c8123c606eea33084976c832aa4e766b7dff8aedd7587ea44a604cdf"},
-    {file = "tornado-6.3.2.tar.gz", hash = "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba"},
-]
-
-[[package]]
-name = "tracerite"
-version = "1.1.0"
-description = "Human-readable HTML tracebacks for Python exceptions"
-optional = false
-python-versions = "*"
-files = [
-    {file = "tracerite-1.1.0-py3-none-any.whl", hash = "sha256:4cccac04db05eeeabda45e72b57199e147fa2f73cf64d89cfd625df321bd2ab6"},
-    {file = "tracerite-1.1.0.tar.gz", hash = "sha256:041dab8fd4bb405f73506293ac7438a2d311e5f9044378ba7d9a6540392f9e4b"},
-]
-
-[package.dependencies]
-html5tagger = ">=1.2.1"
-
-[[package]]
-name = "typing-extensions"
-version = "4.6.3"
-description = "Backported and Experimental Type Hints for Python 3.7+"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"},
-    {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"},
-]
-
-[[package]]
-name = "ujson"
-version = "5.7.0"
-description = "Ultra fast JSON encoder and decoder for Python"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "ujson-5.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5eba5e69e4361ac3a311cf44fa71bc619361b6e0626768a494771aacd1c2f09b"},
-    {file = "ujson-5.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aae4d9e1b4c7b61780f0a006c897a4a1904f862fdab1abb3ea8f45bd11aa58f3"},
-    {file = "ujson-5.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2e43ccdba1cb5c6d3448eadf6fc0dae7be6c77e357a3abc968d1b44e265866d"},
-    {file = "ujson-5.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54384ce4920a6d35fa9ea8e580bc6d359e3eb961fa7e43f46c78e3ed162d56ff"},
-    {file = "ujson-5.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24ad1aa7fc4e4caa41d3d343512ce68e41411fb92adf7f434a4d4b3749dc8f58"},
-    {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:afff311e9f065a8f03c3753db7011bae7beb73a66189c7ea5fcb0456b7041ea4"},
-    {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e80f0d03e7e8646fc3d79ed2d875cebd4c83846e129737fdc4c2532dbd43d9e"},
-    {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:137831d8a0db302fb6828ee21c67ad63ac537bddc4376e1aab1c8573756ee21c"},
-    {file = "ujson-5.7.0-cp310-cp310-win32.whl", hash = "sha256:7df3fd35ebc14dafeea031038a99232b32f53fa4c3ecddb8bed132a43eefb8ad"},
-    {file = "ujson-5.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:af4639f684f425177d09ae409c07602c4096a6287027469157bfb6f83e01448b"},
-    {file = "ujson-5.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b0f2680ce8a70f77f5d70aaf3f013d53e6af6d7058727a35d8ceb4a71cdd4e9"},
-    {file = "ujson-5.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a19fd8e7d8cc58a169bea99fed5666023adf707a536d8f7b0a3c51dd498abf"},
-    {file = "ujson-5.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6abb8e6d8f1ae72f0ed18287245f5b6d40094e2656d1eab6d99d666361514074"},
-    {file = "ujson-5.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8cd622c069368d5074bd93817b31bdb02f8d818e57c29e206f10a1f9c6337dd"},
-    {file = "ujson-5.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14f9082669f90e18e64792b3fd0bf19f2b15e7fe467534a35ea4b53f3bf4b755"},
-    {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d7ff6ebb43bc81b057724e89550b13c9a30eda0f29c2f506f8b009895438f5a6"},
-    {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f7f241488879d91a136b299e0c4ce091996c684a53775e63bb442d1a8e9ae22a"},
-    {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5593263a7fcfb934107444bcfba9dde8145b282de0ee9f61e285e59a916dda0f"},
-    {file = "ujson-5.7.0-cp311-cp311-win32.whl", hash = "sha256:26c2b32b489c393106e9cb68d0a02e1a7b9d05a07429d875c46b94ee8405bdb7"},
-    {file = "ujson-5.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:ed24406454bb5a31df18f0a423ae14beb27b28cdfa34f6268e7ebddf23da807e"},
-    {file = "ujson-5.7.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18679484e3bf9926342b1c43a3bd640f93a9eeeba19ef3d21993af7b0c44785d"},
-    {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee295761e1c6c30400641f0a20d381633d7622633cdf83a194f3c876a0e4b7e"},
-    {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b738282e12a05f400b291966630a98d622da0938caa4bc93cf65adb5f4281c60"},
-    {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00343501dbaa5172e78ef0e37f9ebd08040110e11c12420ff7c1f9f0332d939e"},
-    {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c0d1f7c3908357ee100aa64c4d1cf91edf99c40ac0069422a4fd5fd23b263263"},
-    {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a5d2f44331cf04689eafac7a6596c71d6657967c07ac700b0ae1c921178645da"},
-    {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:16b2254a77b310f118717715259a196662baa6b1f63b1a642d12ab1ff998c3d7"},
-    {file = "ujson-5.7.0-cp37-cp37m-win32.whl", hash = "sha256:6faf46fa100b2b89e4db47206cf8a1ffb41542cdd34dde615b2fc2288954f194"},
-    {file = "ujson-5.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ff0004c3f5a9a6574689a553d1b7819d1a496b4f005a7451f339dc2d9f4cf98c"},
-    {file = "ujson-5.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:75204a1dd7ec6158c8db85a2f14a68d2143503f4bafb9a00b63fe09d35762a5e"},
-    {file = "ujson-5.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7312731c7826e6c99cdd3ac503cd9acd300598e7a80bcf41f604fee5f49f566c"},
-    {file = "ujson-5.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b9dc5a90e2149643df7f23634fe202fed5ebc787a2a1be95cf23632b4d90651"},
-    {file = "ujson-5.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6a6961fc48821d84b1198a09516e396d56551e910d489692126e90bf4887d29"},
-    {file = "ujson-5.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b01a9af52a0d5c46b2c68e3f258fdef2eacaa0ce6ae3e9eb97983f5b1166edb6"},
-    {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7316d3edeba8a403686cdcad4af737b8415493101e7462a70ff73dd0609eafc"},
-    {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ee997799a23227e2319a3f8817ce0b058923dbd31904761b788dc8f53bd3e30"},
-    {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dda9aa4c33435147262cd2ea87c6b7a1ca83ba9b3933ff7df34e69fee9fced0c"},
-    {file = "ujson-5.7.0-cp38-cp38-win32.whl", hash = "sha256:bea8d30e362180aafecabbdcbe0e1f0b32c9fa9e39c38e4af037b9d3ca36f50c"},
-    {file = "ujson-5.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:c96e3b872bf883090ddf32cc41957edf819c5336ab0007d0cf3854e61841726d"},
-    {file = "ujson-5.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6411aea4c94a8e93c2baac096fbf697af35ba2b2ed410b8b360b3c0957a952d3"},
-    {file = "ujson-5.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d3b3499c55911f70d4e074c626acdb79a56f54262c3c83325ffb210fb03e44d"},
-    {file = "ujson-5.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:341f891d45dd3814d31764626c55d7ab3fd21af61fbc99d070e9c10c1190680b"},
-    {file = "ujson-5.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f242eec917bafdc3f73a1021617db85f9958df80f267db69c76d766058f7b19"},
-    {file = "ujson-5.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3af9f9f22a67a8c9466a32115d9073c72a33ae627b11de6f592df0ee09b98b6"},
-    {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a3d794afbf134df3056a813e5c8a935208cddeae975bd4bc0ef7e89c52f0ce0"},
-    {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:800bf998e78dae655008dd10b22ca8dc93bdcfcc82f620d754a411592da4bbf2"},
-    {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b5ac3d5c5825e30b438ea92845380e812a476d6c2a1872b76026f2e9d8060fc2"},
-    {file = "ujson-5.7.0-cp39-cp39-win32.whl", hash = "sha256:cd90027e6d93e8982f7d0d23acf88c896d18deff1903dd96140613389b25c0dd"},
-    {file = "ujson-5.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:523ee146cdb2122bbd827f4dcc2a8e66607b3f665186bce9e4f78c9710b6d8ab"},
-    {file = "ujson-5.7.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e87cec407ec004cf1b04c0ed7219a68c12860123dfb8902ef880d3d87a71c172"},
-    {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bab10165db6a7994e67001733f7f2caf3400b3e11538409d8756bc9b1c64f7e8"},
-    {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b522be14a28e6ac1cf818599aeff1004a28b42df4ed4d7bc819887b9dac915fc"},
-    {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7592f40175c723c032cdbe9fe5165b3b5903604f774ab0849363386e99e1f253"},
-    {file = "ujson-5.7.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ed22f9665327a981f288a4f758a432824dc0314e4195a0eaeb0da56a477da94d"},
-    {file = "ujson-5.7.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:adf445a49d9a97a5a4c9bb1d652a1528de09dd1c48b29f79f3d66cea9f826bf6"},
-    {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64772a53f3c4b6122ed930ae145184ebaed38534c60f3d859d8c3f00911eb122"},
-    {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35209cb2c13fcb9d76d249286105b4897b75a5e7f0efb0c0f4b90f222ce48910"},
-    {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90712dfc775b2c7a07d4d8e059dd58636bd6ff1776d79857776152e693bddea6"},
-    {file = "ujson-5.7.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0e4e8981c6e7e9e637e637ad8ffe948a09e5434bc5f52ecbb82b4b4cfc092bfb"},
-    {file = "ujson-5.7.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:581c945b811a3d67c27566539bfcb9705ea09cb27c4be0002f7a553c8886b817"},
-    {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d36a807a24c7d44f71686685ae6fbc8793d784bca1adf4c89f5f780b835b6243"},
-    {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b4257307e3662aa65e2644a277ca68783c5d51190ed9c49efebdd3cbfd5fa44"},
-    {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea7423d8a2f9e160c5e011119741682414c5b8dce4ae56590a966316a07a4618"},
-    {file = "ujson-5.7.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4c592eb91a5968058a561d358d0fef59099ed152cfb3e1cd14eee51a7a93879e"},
-    {file = "ujson-5.7.0.tar.gz", hash = "sha256:e788e5d5dcae8f6118ac9b45d0b891a0d55f7ac480eddcb7f07263f2bcf37b23"},
-]
-
-[[package]]
-name = "urllib3"
-version = "2.0.2"
-description = "HTTP library with thread-safe connection pooling, file post, and more."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "urllib3-2.0.2-py3-none-any.whl", hash = "sha256:d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"},
-    {file = "urllib3-2.0.2.tar.gz", hash = "sha256:61717a1095d7e155cdb737ac7bb2f4324a858a1e2e6466f6d03ff630ca68d3cc"},
-]
-
-[package.extras]
-brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
-secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
-socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
-zstd = ["zstandard (>=0.18.0)"]
-
-[[package]]
-name = "uvicorn"
-version = "0.22.0"
-description = "The lightning-fast ASGI server."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "uvicorn-0.22.0-py3-none-any.whl", hash = "sha256:e9434d3bbf05f310e762147f769c9f21235ee118ba2d2bf1155a7196448bd996"},
-    {file = "uvicorn-0.22.0.tar.gz", hash = "sha256:79277ae03db57ce7d9aa0567830bbb51d7a612f54d6e1e3e92da3ef24c2c8ed8"},
-]
-
-[package.dependencies]
-click = ">=7.0"
-colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""}
-h11 = ">=0.8"
-httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""}
-python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
-pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""}
-uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""}
-watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
-websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""}
-
-[package.extras]
-standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
-
-[[package]]
-name = "uvloop"
-version = "0.17.0"
-description = "Fast implementation of asyncio event loop on top of libuv"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718"},
-    {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c"},
-    {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d"},
-    {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024"},
-    {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa"},
-    {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811"},
-    {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c"},
-    {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e"},
-    {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539"},
-    {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4"},
-    {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05"},
-    {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376"},
-    {file = "uvloop-0.17.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b"},
-    {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8"},
-    {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62"},
-    {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d"},
-    {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667"},
-    {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738"},
-    {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20"},
-    {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f"},
-    {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595"},
-    {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578"},
-    {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474"},
-    {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b"},
-    {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c"},
-    {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8"},
-    {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c"},
-    {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9"},
-    {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded"},
-    {file = "uvloop-0.17.0.tar.gz", hash = "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1"},
-]
-
-[package.extras]
-dev = ["Cython (>=0.29.32,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"]
-docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"]
-test = ["Cython (>=0.29.32,<0.30.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"]
-
-[[package]]
-name = "watchfiles"
-version = "0.19.0"
-description = "Simple, modern and high performance file watching and code reload in python."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "watchfiles-0.19.0-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:91633e64712df3051ca454ca7d1b976baf842d7a3640b87622b323c55f3345e7"},
-    {file = "watchfiles-0.19.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:b6577b8c6c8701ba8642ea9335a129836347894b666dd1ec2226830e263909d3"},
-    {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:18b28f6ad871b82df9542ff958d0c86bb0d8310bb09eb8e87d97318a3b5273af"},
-    {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fac19dc9cbc34052394dbe81e149411a62e71999c0a19e1e09ce537867f95ae0"},
-    {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:09ea3397aecbc81c19ed7f025e051a7387feefdb789cf768ff994c1228182fda"},
-    {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0376deac92377817e4fb8f347bf559b7d44ff556d9bc6f6208dd3f79f104aaf"},
-    {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c75eff897786ee262c9f17a48886f4e98e6cfd335e011c591c305e5d083c056"},
-    {file = "watchfiles-0.19.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb5d45c4143c1dd60f98a16187fd123eda7248f84ef22244818c18d531a249d1"},
-    {file = "watchfiles-0.19.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:79c533ff593db861ae23436541f481ec896ee3da4e5db8962429b441bbaae16e"},
-    {file = "watchfiles-0.19.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3d7d267d27aceeeaa3de0dd161a0d64f0a282264d592e335fff7958cc0cbae7c"},
-    {file = "watchfiles-0.19.0-cp37-abi3-win32.whl", hash = "sha256:176a9a7641ec2c97b24455135d58012a5be5c6217fc4d5fef0b2b9f75dbf5154"},
-    {file = "watchfiles-0.19.0-cp37-abi3-win_amd64.whl", hash = "sha256:945be0baa3e2440151eb3718fd8846751e8b51d8de7b884c90b17d271d34cae8"},
-    {file = "watchfiles-0.19.0-cp37-abi3-win_arm64.whl", hash = "sha256:0089c6dc24d436b373c3c57657bf4f9a453b13767150d17284fc6162b2791911"},
-    {file = "watchfiles-0.19.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cae3dde0b4b2078f31527acff6f486e23abed307ba4d3932466ba7cdd5ecec79"},
-    {file = "watchfiles-0.19.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f3920b1285a7d3ce898e303d84791b7bf40d57b7695ad549dc04e6a44c9f120"},
-    {file = "watchfiles-0.19.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9afd0d69429172c796164fd7fe8e821ade9be983f51c659a38da3faaaaac44dc"},
-    {file = "watchfiles-0.19.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68dce92b29575dda0f8d30c11742a8e2b9b8ec768ae414b54f7453f27bdf9545"},
-    {file = "watchfiles-0.19.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:5569fc7f967429d4bc87e355cdfdcee6aabe4b620801e2cf5805ea245c06097c"},
-    {file = "watchfiles-0.19.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5471582658ea56fca122c0f0d0116a36807c63fefd6fdc92c71ca9a4491b6b48"},
-    {file = "watchfiles-0.19.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b538014a87f94d92f98f34d3e6d2635478e6be6423a9ea53e4dd96210065e193"},
-    {file = "watchfiles-0.19.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20b44221764955b1e703f012c74015306fb7e79a00c15370785f309b1ed9aa8d"},
-    {file = "watchfiles-0.19.0.tar.gz", hash = "sha256:d9b073073e048081e502b6c6b0b88714c026a1a4c890569238d04aca5f9ca74b"},
-]
-
-[package.dependencies]
-anyio = ">=3.0.0"
-
-[[package]]
-name = "websockets"
-version = "11.0.3"
-description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3ccc8a0c387629aec40f2fc9fdcb4b9d5431954f934da3eaf16cdc94f67dbfac"},
-    {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d67ac60a307f760c6e65dad586f556dde58e683fab03323221a4e530ead6f74d"},
-    {file = "websockets-11.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84d27a4832cc1a0ee07cdcf2b0629a8a72db73f4cf6de6f0904f6661227f256f"},
-    {file = "websockets-11.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564"},
-    {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7622a89d696fc87af8e8d280d9b421db5133ef5b29d3f7a1ce9f1a7bf7fcfa11"},
-    {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bceab846bac555aff6427d060f2fcfff71042dba6f5fca7dc4f75cac815e57ca"},
-    {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:54c6e5b3d3a8936a4ab6870d46bdd6ec500ad62bde9e44462c32d18f1e9a8e54"},
-    {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:41f696ba95cd92dc047e46b41b26dd24518384749ed0d99bea0a941ca87404c4"},
-    {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86d2a77fd490ae3ff6fae1c6ceaecad063d3cc2320b44377efdde79880e11526"},
-    {file = "websockets-11.0.3-cp310-cp310-win32.whl", hash = "sha256:2d903ad4419f5b472de90cd2d40384573b25da71e33519a67797de17ef849b69"},
-    {file = "websockets-11.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:1d2256283fa4b7f4c7d7d3e84dc2ece74d341bce57d5b9bf385df109c2a1a82f"},
-    {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e848f46a58b9fcf3d06061d17be388caf70ea5b8cc3466251963c8345e13f7eb"},
-    {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa5003845cdd21ac0dc6c9bf661c5beddd01116f6eb9eb3c8e272353d45b3288"},
-    {file = "websockets-11.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b58cbf0697721120866820b89f93659abc31c1e876bf20d0b3d03cef14faf84d"},
-    {file = "websockets-11.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:660e2d9068d2bedc0912af508f30bbeb505bbbf9774d98def45f68278cea20d3"},
-    {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1f0524f203e3bd35149f12157438f406eff2e4fb30f71221c8a5eceb3617b6b"},
-    {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:def07915168ac8f7853812cc593c71185a16216e9e4fa886358a17ed0fd9fcf6"},
-    {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b30c6590146e53149f04e85a6e4fcae068df4289e31e4aee1fdf56a0dead8f97"},
-    {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:619d9f06372b3a42bc29d0cd0354c9bb9fb39c2cbc1a9c5025b4538738dbffaf"},
-    {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd"},
-    {file = "websockets-11.0.3-cp311-cp311-win32.whl", hash = "sha256:e1459677e5d12be8bbc7584c35b992eea142911a6236a3278b9b5ce3326f282c"},
-    {file = "websockets-11.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:e7837cb169eca3b3ae94cc5787c4fed99eef74c0ab9506756eea335e0d6f3ed8"},
-    {file = "websockets-11.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9f59a3c656fef341a99e3d63189852be7084c0e54b75734cde571182c087b152"},
-    {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2529338a6ff0eb0b50c7be33dc3d0e456381157a31eefc561771ee431134a97f"},
-    {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34fd59a4ac42dff6d4681d8843217137f6bc85ed29722f2f7222bd619d15e95b"},
-    {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:332d126167ddddec94597c2365537baf9ff62dfcc9db4266f263d455f2f031cb"},
-    {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6505c1b31274723ccaf5f515c1824a4ad2f0d191cec942666b3d0f3aa4cb4007"},
-    {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f467ba0050b7de85016b43f5a22b46383ef004c4f672148a8abf32bc999a87f0"},
-    {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9d9acd80072abcc98bd2c86c3c9cd4ac2347b5a5a0cae7ed5c0ee5675f86d9af"},
-    {file = "websockets-11.0.3-cp37-cp37m-win32.whl", hash = "sha256:e590228200fcfc7e9109509e4d9125eace2042fd52b595dd22bbc34bb282307f"},
-    {file = "websockets-11.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:b16fff62b45eccb9c7abb18e60e7e446998093cdcb50fed33134b9b6878836de"},
-    {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0"},
-    {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a34e13a62a59c871064dfd8ffb150867e54291e46d4a7cf11d02c94a5275bae"},
-    {file = "websockets-11.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4841ed00f1026dfbced6fca7d963c4e7043aa832648671b5138008dc5a8f6d99"},
-    {file = "websockets-11.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a073fc9ab1c8aff37c99f11f1641e16da517770e31a37265d2755282a5d28aa"},
-    {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68b977f21ce443d6d378dbd5ca38621755f2063d6fdb3335bda981d552cfff86"},
-    {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a99a7a71631f0efe727c10edfba09ea6bee4166a6f9c19aafb6c0b5917d09c"},
-    {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bee9fcb41db2a23bed96c6b6ead6489702c12334ea20a297aa095ce6d31370d0"},
-    {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4b253869ea05a5a073ebfdcb5cb3b0266a57c3764cf6fe114e4cd90f4bfa5f5e"},
-    {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1553cb82942b2a74dd9b15a018dce645d4e68674de2ca31ff13ebc2d9f283788"},
-    {file = "websockets-11.0.3-cp38-cp38-win32.whl", hash = "sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74"},
-    {file = "websockets-11.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f"},
-    {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:777354ee16f02f643a4c7f2b3eff8027a33c9861edc691a2003531f5da4f6bc8"},
-    {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c82f11964f010053e13daafdc7154ce7385ecc538989a354ccc7067fd7028fd"},
-    {file = "websockets-11.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3580dd9c1ad0701169e4d6fc41e878ffe05e6bdcaf3c412f9d559389d0c9e016"},
-    {file = "websockets-11.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f1a3f10f836fab6ca6efa97bb952300b20ae56b409414ca85bff2ad241d2a61"},
-    {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df41b9bc27c2c25b486bae7cf42fccdc52ff181c8c387bfd026624a491c2671b"},
-    {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:279e5de4671e79a9ac877427f4ac4ce93751b8823f276b681d04b2156713b9dd"},
-    {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1fdf26fa8a6a592f8f9235285b8affa72748dc12e964a5518c6c5e8f916716f7"},
-    {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69269f3a0b472e91125b503d3c0b3566bda26da0a3261c49f0027eb6075086d1"},
-    {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:97b52894d948d2f6ea480171a27122d77af14ced35f62e5c892ca2fae9344311"},
-    {file = "websockets-11.0.3-cp39-cp39-win32.whl", hash = "sha256:c7f3cb904cce8e1be667c7e6fef4516b98d1a6a0635a58a57528d577ac18a128"},
-    {file = "websockets-11.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c792ea4eabc0159535608fc5658a74d1a81020eb35195dd63214dcf07556f67e"},
-    {file = "websockets-11.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f2e58f2c36cc52d41f2659e4c0cbf7353e28c8c9e63e30d8c6d3494dc9fdedcf"},
-    {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de36fe9c02995c7e6ae6efe2e205816f5f00c22fd1fbf343d4d18c3d5ceac2f5"},
-    {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998"},
-    {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e052b8467dd07d4943936009f46ae5ce7b908ddcac3fda581656b1b19c083d9b"},
-    {file = "websockets-11.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42cc5452a54a8e46a032521d7365da775823e21bfba2895fb7b77633cce031bb"},
-    {file = "websockets-11.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e6316827e3e79b7b8e7d8e3b08f4e331af91a48e794d5d8b099928b6f0b85f20"},
-    {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8531fdcad636d82c517b26a448dcfe62f720e1922b33c81ce695d0edb91eb931"},
-    {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c114e8da9b475739dde229fd3bc6b05a6537a88a578358bc8eb29b4030fac9c9"},
-    {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e063b1865974611313a3849d43f2c3f5368093691349cf3c7c8f8f75ad7cb280"},
-    {file = "websockets-11.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:92b2065d642bf8c0a82d59e59053dd2fdde64d4ed44efe4870fa816c1232647b"},
-    {file = "websockets-11.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0ee68fe502f9031f19d495dae2c268830df2760c0524cbac5d759921ba8c8e82"},
-    {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcacf2c7a6c3a84e720d1bb2b543c675bf6c40e460300b628bab1b1efc7c034c"},
-    {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b67c6f5e5a401fc56394f191f00f9b3811fe843ee93f4a70df3c389d1adf857d"},
-    {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d5023a4b6a5b183dc838808087033ec5df77580485fc533e7dab2567851b0a4"},
-    {file = "websockets-11.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ed058398f55163a79bb9f06a90ef9ccc063b204bb346c4de78efc5d15abfe602"},
-    {file = "websockets-11.0.3-py3-none-any.whl", hash = "sha256:6681ba9e7f8f3b19440921e99efbb40fc89f26cd71bf539e45d8c8a25c976dc6"},
-    {file = "websockets-11.0.3.tar.gz", hash = "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016"},
-]
-
-[[package]]
-name = "werkzeug"
-version = "2.1.2"
-description = "The comprehensive WSGI web application library."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "Werkzeug-2.1.2-py3-none-any.whl", hash = "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255"},
-    {file = "Werkzeug-2.1.2.tar.gz", hash = "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6"},
-]
-
-[package.extras]
-watchdog = ["watchdog"]
-
-[[package]]
-name = "wsproto"
-version = "1.2.0"
-description = "WebSockets state-machine based protocol implementation"
-optional = false
-python-versions = ">=3.7.0"
-files = [
-    {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"},
-    {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"},
-]
-
-[package.dependencies]
-h11 = ">=0.9.0,<1"
-
-[[package]]
-name = "zipp"
-version = "3.15.0"
-description = "Backport of pathlib-compatible object wrapper for zip files"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"},
-    {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"},
-]
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
-
-[metadata]
-lock-version = "2.0"
-python-versions = "^3.9"
-content-hash = "629118cfac10f1dab4c39c6ccd50bd69ca68a7fc05dd2baf1d020082d6b19e4e"
diff --git a/docs/pyproject.toml b/docs/pyproject.toml
deleted file mode 100644
index d2f47c577..000000000
--- a/docs/pyproject.toml
+++ /dev/null
@@ -1,23 +0,0 @@
-[tool.poetry]
-name = "docs"
-version = "0.0.0"
-description = "docs"
-authors = ["rmorshea <ryan.morshead@gmail.com>"]
-readme = "README.md"
-
-[tool.poetry.dependencies]
-python = "^3.9"
-reactpy = { path = "../src/py/reactpy", extras = ["starlette", "sanic", "fastapi", "flask", "tornado", "testing"], develop = false }
-furo = "2022.04.07"
-sphinx = "*"
-sphinx-autodoc-typehints = "*"
-sphinx-copybutton = "*"
-sphinx-autobuild = "*"
-sphinx-reredirects = "*"
-sphinx-design = "*"
-sphinx-resolve-py-references = "*"
-sphinxext-opengraph = "*"
-
-[build-system]
-requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 000000000..9ae8fcf17
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,8 @@
+mkdocs
+mkdocs-git-revision-date-localized-plugin
+mkdocs-material
+mkdocs-include-markdown-plugin
+linkcheckmd
+mkdocs-spellcheck[all]
+mkdocs-git-authors-plugin
+mkdocs-minify-plugin
diff --git a/docs/source/_custom_js/README.md b/docs/source/_custom_js/README.md
deleted file mode 100644
index 4d5d75dc2..000000000
--- a/docs/source/_custom_js/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Custom Javascript for ReactPy's Docs
-
-Build the javascript with
-
-```
-npm run build
-```
-
-This will drop a javascript bundle into `../_static/custom.js`
diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json
deleted file mode 100644
index 98cbb7014..000000000
--- a/docs/source/_custom_js/package-lock.json
+++ /dev/null
@@ -1,766 +0,0 @@
-{
-  "name": "reactpy-docs-example-loader",
-  "version": "1.0.0",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "reactpy-docs-example-loader",
-      "version": "1.0.0",
-      "dependencies": {
-        "@reactpy/client": "file:../../../src/js/packages/@reactpy/client"
-      },
-      "devDependencies": {
-        "@rollup/plugin-commonjs": "^21.0.1",
-        "@rollup/plugin-node-resolve": "^13.1.1",
-        "@rollup/plugin-replace": "^3.0.0",
-        "prettier": "^2.2.1",
-        "rollup": "^2.35.1"
-      }
-    },
-    "../../../src/client/packages/@reactpy/client": {
-      "version": "0.3.1",
-      "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==",
-      "extraneous": true,
-      "license": "MIT",
-      "dependencies": {
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2"
-      },
-      "devDependencies": {
-        "@types/json-pointer": "^1.0.31",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "typescript": "^4.9.5"
-      },
-      "peerDependencies": {
-        "react": ">=16 <18",
-        "react-dom": ">=16 <18"
-      }
-    },
-    "../../../src/client/packages/client": {
-      "name": "@reactpy/client",
-      "version": "0.2.0",
-      "extraneous": true,
-      "license": "MIT",
-      "dependencies": {
-        "event-to-object": "^0.1.0",
-        "json-pointer": "^0.6.2"
-      },
-      "devDependencies": {
-        "@types/json-pointer": "^1.0.31",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "prettier": "^3.0.0-alpha.6",
-        "typescript": "^4.9.5"
-      },
-      "peerDependencies": {
-        "react": ">=16 <18",
-        "react-dom": ">=16 <18"
-      }
-    },
-    "../../../src/js/packages/@reactpy/client": {
-      "version": "0.3.1",
-      "license": "MIT",
-      "dependencies": {
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2"
-      },
-      "devDependencies": {
-        "@types/json-pointer": "^1.0.31",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "typescript": "^4.9.5"
-      },
-      "peerDependencies": {
-        "react": ">=16 <18",
-        "react-dom": ">=16 <18"
-      }
-    },
-    "node_modules/@reactpy/client": {
-      "resolved": "../../../src/js/packages/@reactpy/client",
-      "link": true
-    },
-    "node_modules/@rollup/plugin-commonjs": {
-      "version": "21.0.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz",
-      "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==",
-      "dev": true,
-      "dependencies": {
-        "@rollup/pluginutils": "^3.1.0",
-        "commondir": "^1.0.1",
-        "estree-walker": "^2.0.1",
-        "glob": "^7.1.6",
-        "is-reference": "^1.2.1",
-        "magic-string": "^0.25.7",
-        "resolve": "^1.17.0"
-      },
-      "engines": {
-        "node": ">= 8.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^2.38.3"
-      }
-    },
-    "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
-      "dev": true
-    },
-    "node_modules/@rollup/plugin-node-resolve": {
-      "version": "13.1.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.1.tgz",
-      "integrity": "sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==",
-      "dev": true,
-      "dependencies": {
-        "@rollup/pluginutils": "^3.1.0",
-        "@types/resolve": "1.17.1",
-        "builtin-modules": "^3.1.0",
-        "deepmerge": "^4.2.2",
-        "is-module": "^1.0.0",
-        "resolve": "^1.19.0"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^2.42.0"
-      }
-    },
-    "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": {
-      "version": "1.17.1",
-      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
-      "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@rollup/plugin-replace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz",
-      "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==",
-      "dev": true,
-      "dependencies": {
-        "@rollup/pluginutils": "^3.1.0",
-        "magic-string": "^0.25.7"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0 || ^2.0.0"
-      }
-    },
-    "node_modules/@rollup/pluginutils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
-      "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
-      "dev": true,
-      "dependencies": {
-        "@types/estree": "0.0.39",
-        "estree-walker": "^1.0.1",
-        "picomatch": "^2.2.2"
-      },
-      "engines": {
-        "node": ">= 8.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0||^2.0.0"
-      }
-    },
-    "node_modules/@rollup/pluginutils/node_modules/@types/estree": {
-      "version": "0.0.39",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
-      "dev": true
-    },
-    "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
-      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
-      "dev": true
-    },
-    "node_modules/@types/estree": {
-      "version": "0.0.48",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz",
-      "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==",
-      "dev": true
-    },
-    "node_modules/@types/node": {
-      "version": "15.12.2",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz",
-      "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==",
-      "dev": true
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/builtin-modules": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
-      "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
-      "dev": true
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
-    },
-    "node_modules/deepmerge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "node_modules/glob": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
-      "dev": true,
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "node_modules/is-core-module": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
-      "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
-      "dev": true,
-      "dependencies": {
-        "has": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
-      "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
-      "dev": true
-    },
-    "node_modules/is-reference": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
-      "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/estree": "*"
-      }
-    },
-    "node_modules/magic-string": {
-      "version": "0.25.7",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-      "dev": true,
-      "dependencies": {
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "node_modules/minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
-      "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/prettier": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz",
-      "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==",
-      "dev": true,
-      "bin": {
-        "prettier": "bin-prettier.js"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/resolve": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
-      "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
-      "dev": true,
-      "dependencies": {
-        "is-core-module": "^2.2.0",
-        "path-parse": "^1.0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "2.52.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.1.tgz",
-      "integrity": "sha512-/SPqz8UGnp4P1hq6wc9gdTqA2bXQXGx13TtoL03GBm6qGRI6Hm3p4Io7GeiHNLl0BsQAne1JNYY+q/apcY933w==",
-      "dev": true,
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "dev": true
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
-    }
-  },
-  "dependencies": {
-    "@reactpy/client": {
-      "version": "file:../../../src/js/packages/@reactpy/client",
-      "requires": {
-        "@types/json-pointer": "^1.0.31",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2",
-        "typescript": "^4.9.5"
-      }
-    },
-    "@rollup/plugin-commonjs": {
-      "version": "21.0.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz",
-      "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.1.0",
-        "commondir": "^1.0.1",
-        "estree-walker": "^2.0.1",
-        "glob": "^7.1.6",
-        "is-reference": "^1.2.1",
-        "magic-string": "^0.25.7",
-        "resolve": "^1.17.0"
-      },
-      "dependencies": {
-        "estree-walker": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-          "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
-          "dev": true
-        }
-      }
-    },
-    "@rollup/plugin-node-resolve": {
-      "version": "13.1.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.1.tgz",
-      "integrity": "sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.1.0",
-        "@types/resolve": "1.17.1",
-        "builtin-modules": "^3.1.0",
-        "deepmerge": "^4.2.2",
-        "is-module": "^1.0.0",
-        "resolve": "^1.19.0"
-      },
-      "dependencies": {
-        "@types/resolve": {
-          "version": "1.17.1",
-          "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
-          "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
-          "dev": true,
-          "requires": {
-            "@types/node": "*"
-          }
-        }
-      }
-    },
-    "@rollup/plugin-replace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz",
-      "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.1.0",
-        "magic-string": "^0.25.7"
-      }
-    },
-    "@rollup/pluginutils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
-      "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
-      "dev": true,
-      "requires": {
-        "@types/estree": "0.0.39",
-        "estree-walker": "^1.0.1",
-        "picomatch": "^2.2.2"
-      },
-      "dependencies": {
-        "@types/estree": {
-          "version": "0.0.39",
-          "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-          "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
-          "dev": true
-        },
-        "estree-walker": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
-          "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
-          "dev": true
-        }
-      }
-    },
-    "@types/estree": {
-      "version": "0.0.48",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz",
-      "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==",
-      "dev": true
-    },
-    "@types/node": {
-      "version": "15.12.2",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz",
-      "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==",
-      "dev": true
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "builtin-modules": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
-      "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
-      "dev": true
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
-      "dev": true
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
-    },
-    "deepmerge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
-      "dev": true
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "optional": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "glob": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
-      "dev": true,
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "is-core-module": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
-      "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "is-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
-      "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
-      "dev": true
-    },
-    "is-reference": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
-      "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
-      "dev": true,
-      "requires": {
-        "@types/estree": "*"
-      }
-    },
-    "magic-string": {
-      "version": "0.25.7",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-      "dev": true,
-      "requires": {
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "picomatch": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
-      "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
-      "dev": true
-    },
-    "prettier": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz",
-      "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==",
-      "dev": true
-    },
-    "resolve": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
-      "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
-      "dev": true,
-      "requires": {
-        "is-core-module": "^2.2.0",
-        "path-parse": "^1.0.6"
-      }
-    },
-    "rollup": {
-      "version": "2.52.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.1.tgz",
-      "integrity": "sha512-/SPqz8UGnp4P1hq6wc9gdTqA2bXQXGx13TtoL03GBm6qGRI6Hm3p4Io7GeiHNLl0BsQAne1JNYY+q/apcY933w==",
-      "dev": true,
-      "requires": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "dev": true
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
-    }
-  }
-}
diff --git a/docs/source/_custom_js/package.json b/docs/source/_custom_js/package.json
deleted file mode 100644
index 78d72b961..000000000
--- a/docs/source/_custom_js/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "reactpy-docs-example-loader",
-  "version": "1.0.0",
-  "description": "simple javascript client for ReactPy's documentation",
-  "main": "index.js",
-  "scripts": {
-    "build": "rollup --config",
-    "format": "prettier --ignore-path .gitignore --write ."
-  },
-  "devDependencies": {
-    "@rollup/plugin-commonjs": "^21.0.1",
-    "@rollup/plugin-node-resolve": "^13.1.1",
-    "@rollup/plugin-replace": "^3.0.0",
-    "prettier": "^2.2.1",
-    "rollup": "^2.35.1"
-  },
-  "dependencies": {
-    "@reactpy/client": "file:../../../src/js/packages/@reactpy/client"
-  }
-}
diff --git a/docs/source/_custom_js/rollup.config.js b/docs/source/_custom_js/rollup.config.js
deleted file mode 100644
index 48dd535cf..000000000
--- a/docs/source/_custom_js/rollup.config.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import resolve from "@rollup/plugin-node-resolve";
-import commonjs from "@rollup/plugin-commonjs";
-import replace from "@rollup/plugin-replace";
-
-export default {
-  input: "src/index.js",
-  output: {
-    file: "../_static/custom.js",
-    format: "esm",
-  },
-  plugins: [
-    resolve(),
-    commonjs(),
-    replace({
-      "process.env.NODE_ENV": JSON.stringify("production"),
-      preventAssignment: true,
-    }),
-  ],
-  onwarn: function (warning) {
-    if (warning.code === "THIS_IS_UNDEFINED") {
-      // skip warning where `this` is undefined at the top level of a module
-      return;
-    }
-    console.warn(warning.message);
-  },
-};
diff --git a/docs/source/_custom_js/src/index.js b/docs/source/_custom_js/src/index.js
deleted file mode 100644
index 505adedd0..000000000
--- a/docs/source/_custom_js/src/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-import { SimpleReactPyClient, mount } from "@reactpy/client";
-
-let didMountDebug = false;
-
-export function mountWidgetExample(
-  mountID,
-  viewID,
-  reactpyServerHost,
-  useActivateButton,
-) {
-  let reactpyHost, reactpyPort;
-  if (reactpyServerHost) {
-    [reactpyHost, reactpyPort] = reactpyServerHost.split(":", 2);
-  } else {
-    reactpyHost = window.location.hostname;
-    reactpyPort = window.location.port;
-  }
-
-  const client = new SimpleReactPyClient({
-    serverLocation: {
-      url: `${window.location.protocol}//${reactpyHost}:${reactpyPort}`,
-      route: "/",
-      query: `?view_id=${viewID}`,
-    },
-  });
-
-  const mountEl = document.getElementById(mountID);
-  let isMounted = false;
-  triggerIfInViewport(mountEl, () => {
-    if (!isMounted) {
-      activateView(mountEl, client, useActivateButton);
-      isMounted = true;
-    }
-  });
-}
-
-function activateView(mountEl, client, useActivateButton) {
-  if (!useActivateButton) {
-    mount(mountEl, client);
-    return;
-  }
-
-  const enableWidgetButton = document.createElement("button");
-  enableWidgetButton.appendChild(document.createTextNode("Activate"));
-  enableWidgetButton.setAttribute("class", "enable-widget-button");
-
-  enableWidgetButton.addEventListener("click", () =>
-    fadeOutElementThenCallback(enableWidgetButton, () => {
-      {
-        mountEl.removeChild(enableWidgetButton);
-        mountEl.setAttribute("class", "interactive widget-container");
-        mountWithLayoutServer(mountEl, serverInfo);
-      }
-    }),
-  );
-
-  function fadeOutElementThenCallback(element, callback) {
-    {
-      var op = 1; // initial opacity
-      var timer = setInterval(function () {
-        {
-          if (op < 0.001) {
-            {
-              clearInterval(timer);
-              element.style.display = "none";
-              callback();
-            }
-          }
-          element.style.opacity = op;
-          element.style.filter = "alpha(opacity=" + op * 100 + ")";
-          op -= op * 0.5;
-        }
-      }, 50);
-    }
-  }
-
-  mountEl.appendChild(enableWidgetButton);
-}
-
-function triggerIfInViewport(element, callback) {
-  const observer = new window.IntersectionObserver(
-    ([entry]) => {
-      if (entry.isIntersecting) {
-        callback();
-      }
-    },
-    {
-      root: null,
-      threshold: 0.1, // set offset 0.1 means trigger if at least 10% of element in viewport
-    },
-  );
-
-  observer.observe(element);
-}
diff --git a/docs/source/_exts/async_doctest.py b/docs/source/_exts/async_doctest.py
deleted file mode 100644
index 96024d488..000000000
--- a/docs/source/_exts/async_doctest.py
+++ /dev/null
@@ -1,47 +0,0 @@
-from doctest import DocTest, DocTestRunner
-from textwrap import indent
-from typing import Any
-
-from sphinx.application import Sphinx
-from sphinx.ext.doctest import DocTestBuilder
-from sphinx.ext.doctest import setup as doctest_setup
-
-test_template = """
-import asyncio as __test_template_asyncio
-
-async def __test_template__main():
-
-    {test}
-
-    globals().update(locals())
-
-__test_template_asyncio.run(__test_template__main())
-"""
-
-
-class TestRunnerWrapper:
-    def __init__(self, runner: DocTestRunner):
-        self._runner = runner
-
-    def __getattr__(self, name: str) -> Any:
-        return getattr(self._runner, name)
-
-    def run(self, test: DocTest, *args: Any, **kwargs: Any) -> Any:
-        for ex in test.examples:
-            ex.source = test_template.format(test=indent(ex.source, "    ").strip())
-        return self._runner.run(test, *args, **kwargs)
-
-
-class AsyncDoctestBuilder(DocTestBuilder):
-    @property
-    def test_runner(self) -> DocTestRunner:
-        return self._test_runner
-
-    @test_runner.setter
-    def test_runner(self, value: DocTestRunner) -> None:
-        self._test_runner = TestRunnerWrapper(value)
-
-
-def setup(app: Sphinx) -> None:
-    doctest_setup(app)
-    app.add_builder(AsyncDoctestBuilder, override=True)
diff --git a/docs/source/_exts/autogen_api_docs.py b/docs/source/_exts/autogen_api_docs.py
deleted file mode 100644
index b95d85a99..000000000
--- a/docs/source/_exts/autogen_api_docs.py
+++ /dev/null
@@ -1,146 +0,0 @@
-from __future__ import annotations
-
-import sys
-from collections.abc import Collection, Iterator
-from pathlib import Path
-
-from sphinx.application import Sphinx
-
-HERE = Path(__file__).parent
-SRC = HERE.parent.parent.parent / "src"
-PYTHON_PACKAGE = SRC / "py" / "reactpy" / "reactpy"
-
-AUTO_DIR = HERE.parent / "_auto"
-AUTO_DIR.mkdir(exist_ok=True)
-
-API_FILE = AUTO_DIR / "apis.rst"
-
-# All valid RST section symbols - it shouldn't be realistically possible to exhaust them
-SECTION_SYMBOLS = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
-
-AUTODOC_TEMPLATE_WITH_MEMBERS = """\
-.. automodule:: {module}
-    :members:
-    :ignore-module-all:
-"""
-
-AUTODOC_TEMPLATE_WITHOUT_MEMBERS = """\
-.. automodule:: {module}
-    :ignore-module-all:
-"""
-
-TITLE = """\
-==========
-Python API
-==========
-"""
-
-
-def generate_api_docs():
-    content = [TITLE]
-
-    for file in walk_python_files(PYTHON_PACKAGE, ignore_dirs={"__pycache__"}):
-        if file.name == "__init__.py":
-            if file.parent != PYTHON_PACKAGE:
-                content.append(make_package_section(file))
-        else:
-            content.append(make_module_section(file))
-
-    API_FILE.write_text("\n".join(content))
-
-
-def make_package_section(file: Path) -> str:
-    parent_dir = file.parent
-    symbol = get_section_symbol(parent_dir)
-    section_name = f"``{parent_dir.name}``"
-    module_name = get_module_name(parent_dir)
-    return (
-        section_name
-        + "\n"
-        + (symbol * len(section_name))
-        + "\n"
-        + AUTODOC_TEMPLATE_WITHOUT_MEMBERS.format(module=module_name)
-    )
-
-
-def make_module_section(file: Path) -> str:
-    symbol = get_section_symbol(file)
-    section_name = f"``{file.stem}``"
-    module_name = get_module_name(file)
-    return (
-        section_name
-        + "\n"
-        + (symbol * len(section_name))
-        + "\n"
-        + AUTODOC_TEMPLATE_WITH_MEMBERS.format(module=module_name)
-    )
-
-
-def get_module_name(path: Path) -> str:
-    return ".".join(path.with_suffix("").relative_to(PYTHON_PACKAGE.parent).parts)
-
-
-def get_section_symbol(path: Path) -> str:
-    rel_path = path.relative_to(PYTHON_PACKAGE)
-    rel_path_parts = rel_path.parts
-    if len(rel_path_parts) > len(SECTION_SYMBOLS):
-        msg = f"package structure is too deep - ran out of section symbols: {rel_path}"
-        raise RuntimeError(msg)
-    return SECTION_SYMBOLS[len(rel_path_parts) - 1]
-
-
-def walk_python_files(root: Path, ignore_dirs: Collection[str]) -> Iterator[Path]:
-    """Iterate over Python files
-
-    We yield in a particular order to get the correction title section structure. Given
-    a directory structure of the form::
-
-        project/
-            __init__.py
-            /package
-                __init__.py
-                module_a.py
-            module_b.py
-
-    We yield the files in this order::
-
-        project/__init__.py
-        project/package/__init__.py
-        project/package/module_a.py
-        project/module_b.py
-
-    In this way we generate the section titles in the appropriate order::
-
-        project
-        =======
-
-        project.package
-        ---------------
-
-        project.package.module_a
-        ------------------------
-
-    """
-    for path in sorted(
-        root.iterdir(),
-        key=lambda path: (
-            # __init__.py files first
-            int(not path.name == "__init__.py"),
-            # then directories
-            int(not path.is_dir()),
-            # sort by file name last
-            path.name,
-        ),
-    ):
-        if path.is_dir():
-            if (path / "__init__.py").exists() and path.name not in ignore_dirs:
-                yield from walk_python_files(path, ignore_dirs)
-        elif path.suffix == ".py":
-            yield path
-
-
-def setup(app: Sphinx) -> None:
-    if sys.platform == "win32" and sys.version_info[:2] == (3, 7):
-        return None
-    generate_api_docs()
-    return None
diff --git a/docs/source/_exts/build_custom_js.py b/docs/source/_exts/build_custom_js.py
deleted file mode 100644
index 97857ba74..000000000
--- a/docs/source/_exts/build_custom_js.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import subprocess
-from pathlib import Path
-
-from sphinx.application import Sphinx
-
-SOURCE_DIR = Path(__file__).parent.parent
-CUSTOM_JS_DIR = SOURCE_DIR / "_custom_js"
-
-
-def setup(app: Sphinx) -> None:
-    subprocess.run("npm install", cwd=CUSTOM_JS_DIR, shell=True)  # noqa S607
-    subprocess.run("npm run build", cwd=CUSTOM_JS_DIR, shell=True)  # noqa S607
diff --git a/docs/source/_exts/copy_vdom_json_schema.py b/docs/source/_exts/copy_vdom_json_schema.py
deleted file mode 100644
index 38fc171ac..000000000
--- a/docs/source/_exts/copy_vdom_json_schema.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import json
-from pathlib import Path
-
-from sphinx.application import Sphinx
-
-from reactpy.core.vdom import VDOM_JSON_SCHEMA
-
-
-def setup(app: Sphinx) -> None:
-    schema_file = Path(__file__).parent.parent / "vdom-json-schema.json"
-    current_schema = json.dumps(VDOM_JSON_SCHEMA, indent=2, sort_keys=True)
-
-    # We need to make this check because the autoreload system for the docs checks
-    # to see if the file has changed to determine whether to re-build. Thus we should
-    # only write to the file if its contents will be different.
-    if not schema_file.exists() or schema_file.read_text() != current_schema:
-        schema_file.write_text(current_schema)
diff --git a/docs/source/_exts/custom_autosectionlabel.py b/docs/source/_exts/custom_autosectionlabel.py
deleted file mode 100644
index 92ff5e2df..000000000
--- a/docs/source/_exts/custom_autosectionlabel.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""Mostly copied from sphinx.ext.autosectionlabel
-
-See Sphinx BSD license:
-https://github.com/sphinx-doc/sphinx/blob/f9968594206e538f13fa1c27c065027f10d4ea27/LICENSE
-"""
-
-from __future__ import annotations
-
-from fnmatch import fnmatch
-from typing import Any, cast
-
-from docutils import nodes
-from docutils.nodes import Node
-from sphinx.application import Sphinx
-from sphinx.domains.std import StandardDomain
-from sphinx.locale import __
-from sphinx.util import logging
-from sphinx.util.nodes import clean_astext
-
-logger = logging.getLogger(__name__)
-
-
-def get_node_depth(node: Node) -> int:
-    i = 0
-    cur_node = node
-    while cur_node.parent != node.document:
-        cur_node = cur_node.parent
-        i += 1
-    return i
-
-
-def register_sections_as_label(app: Sphinx, document: Node) -> None:
-    docname = app.env.docname
-
-    for pattern in app.config.autosectionlabel_skip_docs:
-        if fnmatch(docname, pattern):
-            return None
-
-    domain = cast(StandardDomain, app.env.get_domain("std"))
-    for node in document.traverse(nodes.section):
-        if (
-            app.config.autosectionlabel_maxdepth
-            and get_node_depth(node) >= app.config.autosectionlabel_maxdepth
-        ):
-            continue
-        labelid = node["ids"][0]
-
-        title = cast(nodes.title, node[0])
-        ref_name = getattr(title, "rawsource", title.astext())
-        if app.config.autosectionlabel_prefix_document:
-            name = nodes.fully_normalize_name(docname + ":" + ref_name)
-        else:
-            name = nodes.fully_normalize_name(ref_name)
-        sectname = clean_astext(title)
-
-        if name in domain.labels:
-            logger.warning(
-                __("duplicate label %s, other instance in %s"),
-                name,
-                app.env.doc2path(domain.labels[name][0]),
-                location=node,
-                type="autosectionlabel",
-                subtype=docname,
-            )
-
-        domain.anonlabels[name] = docname, labelid
-        domain.labels[name] = docname, labelid, sectname
-
-
-def setup(app: Sphinx) -> dict[str, Any]:
-    app.add_config_value("autosectionlabel_prefix_document", False, "env")
-    app.add_config_value("autosectionlabel_maxdepth", None, "env")
-    app.add_config_value("autosectionlabel_skip_docs", [], "env")
-    app.connect("doctree-read", register_sections_as_label)
-
-    return {
-        "version": "builtin",
-        "parallel_read_safe": True,
-        "parallel_write_safe": True,
-    }
diff --git a/docs/source/_exts/patched_html_translator.py b/docs/source/_exts/patched_html_translator.py
deleted file mode 100644
index e2f8ed9a4..000000000
--- a/docs/source/_exts/patched_html_translator.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from sphinx.util.docutils import is_html5_writer_available
-from sphinx.writers.html import HTMLTranslator
-from sphinx.writers.html5 import HTML5Translator
-
-
-class PatchedHTMLTranslator(
-    HTML5Translator if is_html5_writer_available() else HTMLTranslator
-):
-    def starttag(self, node, tagname, *args, **attrs):
-        if (
-            tagname == "a"
-            and "target" not in attrs
-            and (
-                "external" in attrs.get("class", "")
-                or "external" in attrs.get("classes", [])
-            )
-        ):
-            attrs["target"] = "_blank"
-            attrs["ref"] = "noopener noreferrer"
-        return super().starttag(node, tagname, *args, **attrs)
-
-
-def setup(app):
-    app.set_translator("html", PatchedHTMLTranslator)
diff --git a/docs/source/_exts/reactpy_example.py b/docs/source/_exts/reactpy_example.py
deleted file mode 100644
index c6b054c07..000000000
--- a/docs/source/_exts/reactpy_example.py
+++ /dev/null
@@ -1,180 +0,0 @@
-from __future__ import annotations
-
-import re
-from pathlib import Path
-from typing import Any
-
-from docs_app.examples import (
-    SOURCE_DIR,
-    get_example_files_by_name,
-    get_normalized_example_name,
-)
-from docutils.parsers.rst import directives
-from docutils.statemachine import StringList
-from sphinx.application import Sphinx
-from sphinx.util.docutils import SphinxDirective
-from sphinx_design.tabs import TabSetDirective
-
-
-class WidgetExample(SphinxDirective):
-    has_content = False
-    required_arguments = 1
-    _next_id = 0
-
-    option_spec = {
-        "result-is-default-tab": directives.flag,
-        "activate-button": directives.flag,
-    }
-
-    def run(self):
-        example_name = get_normalized_example_name(
-            self.arguments[0],
-            # only used if example name starts with "/"
-            self.get_source_info()[0],
-        )
-
-        show_linenos = "linenos" in self.options
-        live_example_is_default_tab = "result-is-default-tab" in self.options
-        activate_result = "activate-button" not in self.options
-
-        ex_files = get_example_files_by_name(example_name)
-        if not ex_files:
-            src_file, line_num = self.get_source_info()
-            msg = f"Missing example named {example_name!r} referenced by document {src_file}:{line_num}"
-            raise ValueError(msg)
-
-        labeled_tab_items: list[tuple[str, Any]] = []
-        if len(ex_files) == 1:
-            labeled_tab_items.append(
-                (
-                    "main.py",
-                    _literal_include(
-                        path=ex_files[0],
-                        linenos=show_linenos,
-                    ),
-                )
-            )
-        else:
-            for path in sorted(
-                ex_files, key=lambda p: "" if p.name == "main.py" else p.name
-            ):
-                labeled_tab_items.append(
-                    (
-                        path.name,
-                        _literal_include(
-                            path=path,
-                            linenos=show_linenos,
-                        ),
-                    )
-                )
-
-        result_tab_item = (
-            "🚀 result",
-            _interactive_widget(
-                name=example_name,
-                with_activate_button=not activate_result,
-            ),
-        )
-        if live_example_is_default_tab:
-            labeled_tab_items.insert(0, result_tab_item)
-        else:
-            labeled_tab_items.append(result_tab_item)
-
-        return TabSetDirective(
-            "WidgetExample",
-            [],
-            {},
-            _make_tab_items(labeled_tab_items),
-            self.lineno - 2,
-            self.content_offset,
-            "",
-            self.state,
-            self.state_machine,
-        ).run()
-
-
-def _make_tab_items(labeled_content_tuples):
-    tab_items = ""
-    for label, content in labeled_content_tuples:
-        tab_items += _tab_item_template.format(
-            label=label,
-            content=content.replace("\n", "\n    "),
-        )
-    return _string_to_nested_lines(tab_items)
-
-
-def _literal_include(path: Path, linenos: bool):
-    try:
-        language = {
-            ".py": "python",
-            ".js": "javascript",
-            ".json": "json",
-        }[path.suffix]
-    except KeyError:
-        msg = f"Unknown extension type {path.suffix!r}"
-        raise ValueError(msg) from None
-
-    return _literal_include_template.format(
-        name=str(path.relative_to(SOURCE_DIR)),
-        language=language,
-        options=_join_options(_get_file_options(path)),
-    )
-
-
-def _join_options(option_strings: list[str]) -> str:
-    return "\n    ".join(option_strings)
-
-
-OPTION_PATTERN = re.compile(r"#\s:[\w-]+:.*")
-
-
-def _get_file_options(file: Path) -> list[str]:
-    options = []
-
-    for line in file.read_text().split("\n"):
-        if not line.strip():
-            continue
-        if not line.startswith("#"):
-            break
-        if not OPTION_PATTERN.match(line):
-            continue
-        option_string = line[1:].strip()
-        if option_string:
-            options.append(option_string)
-
-    return options
-
-
-def _interactive_widget(name, with_activate_button):
-    return _interactive_widget_template.format(
-        name=name,
-        activate_button_opt=":activate-button:" if with_activate_button else "",
-    )
-
-
-_tab_item_template = """
-.. tab-item:: {label}
-
-    {content}
-"""
-
-
-_interactive_widget_template = """
-.. reactpy-view:: {name}
-    {activate_button_opt}
-"""
-
-
-_literal_include_template = """
-.. literalinclude:: /{name}
-    :language: {language}
-    {options}
-"""
-
-
-def _string_to_nested_lines(content):
-    return StringList(content.split("\n"))
-
-
-def setup(app: Sphinx) -> None:
-    app.add_directive("reactpy", WidgetExample)
diff --git a/docs/source/_exts/reactpy_view.py b/docs/source/_exts/reactpy_view.py
deleted file mode 100644
index 7a2bf85a4..000000000
--- a/docs/source/_exts/reactpy_view.py
+++ /dev/null
@@ -1,63 +0,0 @@
-import os
-import sys
-
-print(sys.path)
-
-from docs_app.examples import get_normalized_example_name
-from docutils.nodes import raw
-from docutils.parsers.rst import directives
-from sphinx.application import Sphinx
-from sphinx.util.docutils import SphinxDirective
-
-_REACTPY_EXAMPLE_HOST = os.environ.get("REACTPY_DOC_EXAMPLE_SERVER_HOST", "")
-_REACTPY_STATIC_HOST = os.environ.get("REACTPY_DOC_STATIC_SERVER_HOST", "/docs").rstrip(
-    "/"
-)
-
-
-class IteractiveWidget(SphinxDirective):
-    has_content = False
-    required_arguments = 1
-    _next_id = 0
-
-    option_spec = {
-        "activate-button": directives.flag,
-        "margin": float,
-    }
-
-    def run(self):
-        IteractiveWidget._next_id += 1
-        container_id = f"reactpy-widget-{IteractiveWidget._next_id}"
-        view_id = get_normalized_example_name(
-            self.arguments[0],
-            # only used if example name starts with "/"
-            self.get_source_info()[0],
-        )
-        return [
-            raw(
-                "",
-                f"""
-                <div>
-                    <div
-                        id="{container_id}"
-                        class="interactive widget-container"
-                        style="margin-bottom: {self.options.get("margin", 0)}px;"
-                    />
-                    <script type="module">
-                        import {{ mountWidgetExample }} from "{_REACTPY_STATIC_HOST}/_static/custom.js";
-                        mountWidgetExample(
-                            "{container_id}",
-                            "{view_id}",
-                            "{_REACTPY_EXAMPLE_HOST}",
-                            {"true" if "activate-button" in self.options else "false"},
-                        );
-                    </script>
-                </div>
-                """,
-                format="html",
-            )
-        ]
-
-
-def setup(app: Sphinx) -> None:
-    app.add_directive("reactpy-view", IteractiveWidget)
diff --git a/docs/source/_static/css/furo-theme-overrides.css b/docs/source/_static/css/furo-theme-overrides.css
deleted file mode 100644
index a258e025e..000000000
--- a/docs/source/_static/css/furo-theme-overrides.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.sidebar-container {
-  width: 18em;
-}
-.sidebar-brand-text {
-  display: none;
-}
diff --git a/docs/source/_static/css/larger-api-margins.css b/docs/source/_static/css/larger-api-margins.css
deleted file mode 100644
index f8b75d592..000000000
--- a/docs/source/_static/css/larger-api-margins.css
+++ /dev/null
@@ -1,7 +0,0 @@
-:is(.data, .function, .class, .exception).py {
-  margin-top: 3em;
-}
-
-:is(.attribute, .method).py {
-  margin-top: 1.8em;
-}
diff --git a/docs/source/_static/css/larger-headings.css b/docs/source/_static/css/larger-headings.css
deleted file mode 100644
index 297ab7202..000000000
--- a/docs/source/_static/css/larger-headings.css
+++ /dev/null
@@ -1,9 +0,0 @@
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin-top: 1.5em !important;
-  font-weight: 900 !important;
-}
diff --git a/docs/source/_static/css/reactpy-view.css b/docs/source/_static/css/reactpy-view.css
deleted file mode 100644
index 56df74970..000000000
--- a/docs/source/_static/css/reactpy-view.css
+++ /dev/null
@@ -1,43 +0,0 @@
-.interactive {
-  -webkit-transition: 0.1s ease-out;
-  -moz-transition: 0.1s ease-out;
-  -o-transition: 0.1s ease-out;
-  transition: 0.1s ease-out;
-}
-.widget-container {
-  padding: 15px;
-  overflow: auto;
-  background-color: var(--color-code-background);
-  min-height: 75px;
-}
-
-.widget-container .printout {
-  margin-top: 20px;
-  border-top: solid 2px var(--color-foreground-border);
-  padding-top: 20px;
-}
-
-.widget-container > div {
-  width: 100%;
-}
-
-.enable-widget-button {
-  padding: 10px;
-  color: #ffffff !important;
-  text-transform: uppercase;
-  text-decoration: none;
-  background: #526cfe;
-  border: 2px solid #526cfe !important;
-  transition: all 0.1s ease 0s;
-  box-shadow: 0 5px 10px var(--color-foreground-border);
-}
-.enable-widget-button:hover {
-  color: #526cfe !important;
-  background: #ffffff;
-  transition: all 0.1s ease 0s;
-}
-.enable-widget-button:focus {
-  outline: 0 !important;
-  transform: scale(0.98);
-  transition: all 0.1s ease 0s;
-}
diff --git a/docs/source/_static/css/sphinx-design-overrides.css b/docs/source/_static/css/sphinx-design-overrides.css
deleted file mode 100644
index 767d9d16c..000000000
--- a/docs/source/_static/css/sphinx-design-overrides.css
+++ /dev/null
@@ -1,14 +0,0 @@
-.sd-card-body {
-  display: flex;
-  flex-direction: column;
-  align-items: stretch;
-}
-
-.sd-tab-content .highlight pre {
-  max-height: 700px;
-  overflow: auto;
-}
-
-.sd-card-title .sd-badge {
-  font-size: 1em;
-}
diff --git a/docs/source/_static/css/widget-output-css-overrides.css b/docs/source/_static/css/widget-output-css-overrides.css
deleted file mode 100644
index 7ddf1a792..000000000
--- a/docs/source/_static/css/widget-output-css-overrides.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.widget-container h1,
-.widget-container h2,
-.widget-container h3,
-.widget-container h4,
-.widget-container h5,
-.widget-container h6 {
-  margin: 0 !important;
-}
diff --git a/docs/source/_static/install-and-run-reactpy.gif b/docs/source/_static/install-and-run-reactpy.gif
deleted file mode 100644
index 49d431341636da4a56becf7fdfb24f3fa7fc6685..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1049193
zcmeFZbx@q&wl>%_4RoW8JHg%ElHl$Tf(H)};D>9Z8yXsScMBFAg1fsDB!m!LA~=nN
zo}6=L&OKjEoqO+BH8nFe^L78zZ|$o0U3)+4S?{ygTDw)%RV1ZsJ_8+r*BC;8KOZ!J
z5C|bPn;=sOrKX{z({ZMk)L@|FU@3gbD&)zU{hUoQjLlJu4X(qMXU|S8!_L9VF2&7}
zV8@Z`%*iIe9c;%VBE(~E$Oqx)!xQBrP~u|{;Kvi<Cs5&sn({*}`H6M;i5>Y#9`lnt
z5rFUs;IatdvI*de3gF8M;L8gT>I)DW2#~o5Fn9>!vIvrM36g6IQW^^~dkeC=3-W~v
zvBQLfbcAHngtbdVAS@yjvZ9(rqIwl#l2KyHIpPo|aXxoRJPuiMX4&U8PoDTc<yDfi
zYn9i@RKR0a){Rne?N)uPq|U&lF0QUY!lI?6p~E7iBOtFMpsp*Ztov@-NJPcRvh<m_
zx^eizb1B2;ZYd^YET-xRbI$?`a%KzUyhZ%FrHF*3vYn-#ucc?TW!#FDSH4xu{0l-x
z8wCTKXZH4{u@3C)4r*qOPt+aX)xXqz<z(#Tl(prOJo}2A+10zkHLS(G?C`IkkKQ_F
z-rldhLv#GdnEZ05{i=Tino0!Gu?DF=3wE}Co!I_{k@=0G<69~2x2+fNtR3H_jD+aQ
zha}a6D#;)Wl@TT?h@OjZZnp5e5v1XBWY>>~{_9vJf%xZ&@tIliRiEM;w-O}T64a#<
z#xGMWO)|pYWK~UMcWvc9Va@w=S)j;Wq{LQY<52Rx=)IfG`)}7}E}G@$Ps@E=KCrS@
z>u^?gFW2l`)|v^`zEG+4e^yt}SZ^j;Kfm1&>fC6;`|<3$>*Tuo^t30!tItWSZ(+RO
zNvPjhdf);zxUe&{ur-1(9?yVJ_&uK3{55fPH94>_6=pP*^lJJ;%Iw<S0!(?~>SXcy
zV6DLU^FYn#bJTi_?w5npFV~+p`ZB%^R)5>r+Me&*O*7t|Y1&;L-@W*?U*NERvwql}
zaJ1HcTx|Q}2K94e<mW}pug`rapUO_Y&77P~oz}XYw)vl(AD>-)xvF)!?(n<5T)BSu
zjp~1knoL5iSEJ7NQ8&joYw0(8?{5x<Z;r}uezx6QOx)aFqtU;a(0Dq^Muv*=ddkB5
zf|wY8=)iOX!ome$0C@k#jla<Z`L`ecizNSxB>#UU2^bCF0n@3~74(IINx3aX>k0>u
zP!^3Gwfdr=Xetqx_0js`k$6VMC_43qlCfk?!%B;>q%9gw0lR)z^~TbvY)S8<^|8jX
znS42(-oZLY0{vpT5N^xyriz6!y<&}A8vW8|l_rfYU&cRvi^b#YVgJ#73N&fpiydZ_
zCawP5;;}v7i4g|T;M9v5tqzduH;t#fz50!p`ZKH^VpD0^(Ne!XlE5_YK*Gd^&58UA
zJ8gD(&pN@8NR&~_vr(g6K!`=WHNa_Zw9alKE!c*@Ar*R3<JczEgvcuL559Mu^D+7C
zm<i@+y*m27KU+*Wtd&rcI8Khw@jiOFMs6{n_9c2I+VW2B98ZD>Tl2m#s0Z^a+V^W)
z$gfLs&~;pGe!+d?*(&7<7FF-aqnAApGDgKadbON4A=ItZ*hd&E`60wf;--q}HX~3i
z#>%ihulZD`tw<i5%`btzHb^*4s<z)iIJt!%hQIZk2}{h<(olhugy`(*+hGDVn>R&R
z#*8MEC<oTpa0r(?9IA6jnR-JUQ4mG|iY!S3*{0ivl2VwmJA-Ygzh(m20s&!K3;^~d
zL-EKyIrn~bsD29{S)O7v{SrkKg2IJU4Z5;dD3|WGZ-@0NV~CRiNdD~$M!dMRRX(PT
z^-w%yt&B13D$xuIrx?D;&cVD2lXt)*K{s!Fz}&-mUom|1Jiq3<{GnAfuJJ0g?g4^V
zSV=)+!qzatAIwk&jl%82_zG{eRWNSzJ7`|_;~_3}GNXk1;n;tmu}a<D%Wd_cUvv-Z
zsA;Q2)ZAXuCMw3Y=9RSBI;H*PSfT!+{IrkjxLS+B`F(9ptoVyukVJ&d!2QGR(O^3}
zm4^d`fZ1#l&bmkMXv5ZfGg~+XR#*#f%l8JkBL)Np1?X+o3rn<B!Sh(#n6*YZ$(h%)
z#kkIa(6QbqY^Edv*04%g7s2bw7svH$ta;k$8iMkd!>fSduHE(0Wad}AD^6GyQq86g
zEtwyy0a?;6<@s1GehQRwfX1AkTj=+C-b~%Rs7(ZkT7|ril&5fPP$Rgp2uKYG+j3GU
zU=B^9DPc=1<U;+`m`}tm-Q(4gc~h^1y(g8`M=|DKO=6efo4kl^4)+*TIlOo&A&9@Z
z)G3X37b;<KH#?b0znEpVNc{8uyxtSW5G`;Skx6X3gc>e4z_$l!X|c`}1t>qwI2|Y~
z?8?unYQWvk1-j=RW0_6_?ktlgm*&s=(^|TGsE8st#^0*^5XS!IC6{#)3bSlEwiIU9
z@yG_XBjg|UOC>=u;#r(9^FiQAXz<)zo=z#_i5?PDM3Zuko3V{^)HN92Ap6~7DeJWT
zwEKhiyyI)%cE`*(bsL_QPiV%Sy04bJ{_eur2~UtxeWU!w#V!U!SVjeUmpZyJKofa(
zL;286Hg-(9h*vq7{lZy^Jj`U^Nc@K3uysZQDxnux*3Y1XyvR3NP4r6r5iOAk!_LGv
z#SEb)bW#Q&3pYf{t0v!J6=`8^370wbjQ}{mbcq%f*8;SVv{bU2fMsE!pdjOV)F8`%
zOJb{7wcCqWfkM@&GA5RZO@TMrwT|<Z<a>Vqn;a9u=yV5+QbDBpq%F;P#;8`QaQfJ!
zqx5;^Y)q+WnfjEA*?HE=WT|+|*pz$FdG;oLndFH2v{%-7&Vg2$^zzuWU;BCPNlcmS
zzWPki+Ib#ovh2zA7<%UI?Rh?cpj-||V>X25q5!O2u0T0H8!mlO2#qaQ;?S6jGP@|E
znkrY37@vy^x+rEOs8CbYm`}>ODB;wu(0D#RpVofyUNE*o>!rp**4jm><Wz-@|M)`Q
z?M0a!L8Ts2W3h<lvRqBO(ja|&u~ho9LNB(`s7zz2((JO*WUA7*Wqhe7=<<U#!3UEO
zjZY0(msL*MAIz4=KQ*^sR(r&Lu-MmFZeP2s37Gm|bv?e^eS298BdD^*(Ol`LxvGoM
zuCk?^SQ(bSs!xcmvggoT9XGpb$e5~fl$cnZ4!UYAAgFdy)m)p;x@s!du6B7ovG%F`
z>SJAOwd+gG&ui$ltLE0JYIpyM&l|T_ExiOa9!SmgEt>1rQSBP9^ojL7>Fc)H*czWQ
z%`Zo0*X=7)HGVA<Uw#H%cWe^W28?KKoMl~i9%$DFEl+G*wg1tPv9+)FHNW1jU3a6V
zYTsT@e0{jR?g0?i!Em%TfwZVzuufeF<>V%|45|+rSBK!x`i5(c>Zh8n3zwMuMi`75
zU?i-MP}SNZ$wm!w>eNR)pWLG8Kn)4T)yKTl+NSx88kU@{kMp10X1GI*$PqRqAhmXw
zX>Uf=bQ+S<CwJIoZpQTD8dA!%cDc=O#!aRh(pn~W`GapJtO*-4Mzr>Xvu`GybQ-gk
zC-=lVZqQR6ag90qTKm$UZ>9sL8}qIw_n+L|%)khn3UIU!6liZ}BXpXID5nloWNzmY
z;+jf0v=24RZ|5_nn@T074t0WW7YYbJmaA$X8D!rsmg{`1d_Hw#+;O{97x%I1rS`Ge
z=i5)M(;sX6r;e@eZkKxro9mF;-)-NK0{u_0M6#@1tJeX9-3KZ{MVk|j=pF2&6J_D{
zdRI*|8BPhw(B_Ur{1-}!xEl}6x@0F&PMX`K1)JiHOFvR*QS!9;&`^9~8+WHU8BXF}
zx$CoJNFcg{>q8ryeKPiEC}sH9iJImCZ!cJgYUpdym*d^3UqF#B*F~~sRa%}-r_i3r
z&^(~o+jO<2JyQjC0Zgia?UrwoV+FGJ<l$}NrCsVd+lbxo(EJ(y{<CbNE)Mc^@sIJ-
zq}05!2a)!-8jk#zmFB;XOlI0YwM<{u1phv^ChAxj(Yb2K{{7uaw_|O2`l`9(_YaTw
zj`e+=>-NvTe+JBSY+O%Yci;W~1taR*#L-3d(>|O;=yq;V&Y*^69!?YDJ9jvAZ^q3Z
z&N5~?_atU+rh^~O3y8W7RCRCXvmY+Xb-Rw9&)k0Mc(|;K@B02y_ipX;!&U1{*H8bM
zyN$bt>t3Sn6Qu6_7A+bzs@r{*K6Ae(gT9%K@4hJ0{e5JPzFnE=zG|8I{WBPSw@K84
zMvdq`oMof$4|IEOmuDWXI?%sQ;(PA*b<ww>S3o^ZtF4|95P2Zouiqmepp$H<1dO{u
z7`gmTrx*0gHUJm^tJ;APje@{V0eUbDycJj&2W*`fP78*Ux5CNFnL(TZxG0!@i$8WN
zEW$q|JsHM96@q99VNeUWc}~e=AIhyjNzV$W<b?4>z=52hSZZ(|{ZK4$2;V5|DHQ@!
z4Z$uMf{%LV=O0RD5(1}$Nt}c{kwoYOgldk4nt%f^Bw?Bv?<`CLBupsnQ2u5CaISKH
zMYRz5R+u3;)b;@JJRn?EEzH+H6sH{dn-Uo)fpAVisDQ&vM-k4Fp{!^y0%Af5&wweE
z!$l<FZU_EC5eR*71Og1x0EgmaM85G4eM1$AQ66EBig?T!!eN3`IY9bIz@<zO_$v{i
zE#dx7aG3)MK~!i?Mwo(0w0;IMMH1Gh79Lq1^$sT@;Q&^Jiu8XOF~}JcNfoXg5aSpT
zl?;xh9*xP0h^)(a*C6S?xDpi?5L?uWM81sL8I2|5j5u(LR*;MvI|#2(i+YWWY2^%P
z4~Tz@6VrVVDq|AoMHzZq9ukw0;Dw3+tokp4<KA<I<C{jzp`wvaA%&dqVQ?&_Ng{wV
z@>DJIYb(ORDIS~Jf1fkfFFh*F1W_Cj@Dr7A$C*UZ7Eh_g1+P_0s&9>3DvxOaC;4B;
zb3y!pfyua#808y3aAfRnr&zky6nDx*VfDnb(Ij8hScTOjXltskKSq=tRpfKo_uc`-
zu+*z%XAF%0^9B>}M__CJ&kO9HbU~Zuoc~c^v)kfgX*8A36{{uxU0^E}3gv3#YJ9AG
z7S1_M7i7~gNTJD5<1S0QDF<S-HC0H>Z2p_THZLk56);{&;(oYb@!fK_h~Q-BjVRdO
zjs-<f+V24D9EiN%P}RJ-X=&J<$as`zvNc`vB8m0kB-;Lb5Dp<?7cHPh!9h**y6Ya+
z-{4!(R3xICK}n!Omxu3`uMDZa?YzrO=6S*3uOjF&q}!d4=weBd#UZHY0b{y$ZwrAS
z(d&tuena2MjPrSkOCNFb+F^U%Se!_n-=WTV9_u^2pzl#?Rg99mKP9EcwZdP}k!rLk
z>!Y6v*d~%lFCgE9v6E4mhI2p*byz#u$N<>ok5A+<1=p>!<)C_Xa&{6a2QW}<s$5Z|
zh<J0T3$V|+&y9TDi8)GW%@J-bnl;-OD{>}o8_6M#jTs4%-2~Xc^<is3^(<=^7g=1R
zl2l7>rMy7f@r<2xN%lZ0TaOKKHW!ibA@<BzNC^gguFy^&=P~$H;l;(0MCRKF_R0fo
zZXe+|LZ<ctJTZ&F*+^e%SRo;|%g#3fL4guI$m5_<VvVPa8X6UlG&6}=2;UCcRx1Lh
z5V?X0k+fF8Ry*>@s9^_LW4J|NohVpCv;^f-i92ENS9B(NyV2}Bey?hl%+%q{QMr2N
zF0JziyjaUeM{X`n`qAHk^G{}7{l=tWSwW4&*)UKOjZc3j))LQ;t`T=0fi}@;_8&kh
zNtiA6*CIawe0s1fMqgk<Le$gGJFoO`BQ6Fa3zF#D4@Ozj>5{;0Fq$Ilcbm!KkSB7X
z6A+Q_^P1uG_d>cPMcph2h&bcIL_J>*-T5Ra^0r*z0OQWZ?Zd7yJHFwOpKE}$Ts0=P
zfCkSm;IPYnliZBTNmX5Fh1w6BmPkuI$UJsJnOwE9$4_@xk<y|C4n6db++olU^Nn@T
zt()(cgUqroE^jgm#A9~3BD21%W%?@+=Qo{J0zsS}FbE$N3<eRSW0{dEm#t5D!`|}q
z_L#U0Iw^onj1kAlVV|f=&we5o_p}%DR|9TpCnguTPI4giN9*ylj66N#8KEoK!M{j8
z_*|Omxln(_XNa%N-S0X+=}nf8td**pjU*{Q-Uh|WThrRiRQ5cv#oedw_Fv*Z{=N2~
zsP#wL0=*z7{2YS)QQ-N<k_3XUW$Ls6vkj6Vy!>xT@F%aB)%bu|Iv^0Z5Dd|S^*g}`
zY7=mzaSNfJ`hJE9#xRY;i0R>s@idF@IEWX3&{Xdm(kLPXiVg~=*x{N1Nle-hXeR*G
zVnTyHR$9x8Qo(*4jEWObCAwSJ^;`r@V34oGLEb7oMRkq8`5E-6PSQl>&hr4c=BeK(
z$_cLy)OW=gwPVokg}XV-$=E~|VD5in7X8s1Z}!?cz{;akRz1<xRuqGl$%NsQ4uM^y
ziLtMAok_}QL$eLYk+Yy0Fv#+<j}2n3_DUy`c^$zsJ;#L1FzIAwkLRiKVT-_J2AWJp
zIa7+Nxu;#`cJ%=se<&=b#~J;27EAob(IUTt(V+{>S?6Y4Wh@FIgOPR?xO5zD0hZX|
z-Fj1=#?pIR2MdyLL9e%+LhQnQNSfF6ZjA0CeFcju=w=^3YcGLT4!B@ho7u<nXG{km
z*%~{##N4w&XjgnVzHO*A%8qVXN**%n5pR3IL>SCSNSqj;2{*bZ!e@&>iq|IuQrN%P
zS<8dy$?^Z3jLuuI;8^C?%dY+C>Ap1Ru)68UO3LP(3vwoK^H>7V-+Kq&vv9Xtoa^xD
zJHzm9$`Z*!fflP5!N*=O08SCJkM9TZ@50=JX&+%E6*IO}q`Ptky*Rq%@_2c|Duvhz
z;}L%Zwr8OHR5J!*CdHcY6sl~{#fa~<9!kqgUqKw`y)sC{3W5Pm6%y22@mIm-_P&6&
zszoCLUXlc)t6bB;VurOwqbW6aHlgbxyDHk<`?-QahFlX(^96WNrAS*FFvz;b&E*=2
zBh=rgx6`_nWQ;Sa@Zop2{rWI(MRU?bYV`M(vL}3lm`NGfC*z*ctfL=mVSfbnhX!i@
zQQJrXfW_-wmjo1z5~ep5fg(68;nOCM2k0zX0w+u^z#$Qnu8vg(htB%0yD~ZW&B=!g
zb?Y}v+`Yt7PVhtQS@822fp2zYN(_yK6w*FjoI0ll3PWXP0gbF&C!sKDyhN(GG3GaO
zgf-pi<)5e~n7>Vo+8x0x6swho)O61D8@wWz-wpEQoOmd@53Zjh!gwjc035RST8x-R
zEQI2xiK%}C_OX5U#qOxQrvfLJ2nTx7@&6HlO?$U8s?*$%KK0#E=5BR1uDPj9`-hA9
z-P+1@b92ko5BK1^&zpoTts~k$y|VAt4|H1Em#2REb=-Y9iEHWH*Zvjs`ECO>-O_zM
z_3Q23-B$onYcGz@NeJ!zCRn$%pK|&nT;~28G`@9^L+3Qg{C<mSrgd0i`ZO;1ew&e~
zZB$j~EGhebhZC*aHvWA2EUn{yS1`V9@}<ss*5~^@$(gok|LOC*yZe1PqV`#&&P5UJ
z?*ld6_WAVbi&B~2hkEhti)A|h9~ao4(GRGZo`>rh^urw*4WNPnC1D^F7<K>*oB_ja
zh2gKj2vIO76`Vv8PG$n92!K;%z-e0HbSrQM6r7PNgjq6#)g**HAcQj`gu69_cO`@$
z6(UF#Dl8c)Y7#0Q5Gt7wD%~0?yAt{Y6)H!CP>@6@nIKdG5Na6+jaG!#3PJ~k(4z`7
zkPI_22{R4|Gsy@uYYnql39~|lSyP4EN`~8;ggXX=J7t8sw1&H`guA1{J*bdgl1LvD
zq+b9sAOjiHihR9-e2YTDs3JlnBM>GL;Q<j584*#f5iu(facERT0##&^WMqm-WLiLE
zMn+^-Yh=z!WF9KAfGVm;GOENRsx%;~JR_>IHL7YQss<HRM-|;58Qo+O-5e0zni1XJ
z8r``P-HnRwrHbj7j2SeE84idU&4?LqjhS4DnMTFTQpL_o#x9z~ehP?P$%tKRja^@f
z-9W`|QpIga#_gEI?FGagWW*h{#(iIj`-zG>p^86~jK466zY2&)WyIgM#^0~RKcM0P
z)CoYT1dwS0c3=WHGXb|P0e>}t@FoFDok${;NM@Qy5tvAonMl)?NVl5EaFfVLoy07a
z#A=$v9+<?LnZ(_e#Jifrf0Lx;35@i>%}4-`Tts`JJ#eK1alH~88&SZFx@75_XaU9)
z#lvW2=aeT>(JFzsy(=lY&MEp_DTZyy&jM4r!Kppvsis`1=7*`4>Zvcd(rlbl?VQsb
zB2&9YQ(r;S+|<+licIsYNb4L;^F2)SholE`r3b60cQ~cLi%f@Cq=$~BhaIN3gEJzz
zGNRQpVx2SMBQx5{Gm^(LQV%oIA(@$6nXPJ>xz3sSk(q@RnZ;w7Eq`<gB&&ie>w|h$
zwR2W;L{@!8R^wRK$HS}^NcKn0><;zpF6Zo?$n3s~?55G|p~LJENX{5n&V+i7R%Fgh
zMb6w<&cb0%gHz7ZVaiMA-1>;zWk~K<uH0|M>bcuvxpfD*Um$shTzSXpc|V-<Y9sRY
zEAr0A@-7eat|9p~ocX8f`M;g>(UJKWmHE}9`FDr;IJgB6?gBiGf-0v1tf&Iw$^z2y
z0`jAR58y%~?m}9PLVB0NM^S~9<%QJag=|NK9JobX+(i{?MJz5w0#QXml|>@sMdb%Y
z6;vrQkr2I-XlcP@nF<_tm1qt|9QjPJqDJ)TQn6rL*uU;u)_@K`j6W4J02l<o1cClz
zL-RjBK>6psB!9jDFzjzzAjy;bzEB(px6-H{lYBUso&w>dS0ooj&S!i7a&AzCz&~rO
z5jiyviKj9&Dk?+9lm?XO85p$@Mi3GeuduC_pXJ6;a`f+L4m8foFtUg2eK5Qzhmhy)
z{m?R1fAm2zX>BM8qVLdd_b^?dutqi-jWo(F%5^3?G>iDx`91n`LHc*2;sBT#RB8#E
zJ)vM?TwW8w!htY+9BD1E(3Vmd<~uoWzb(XIG#b<`$^45pf%1_+6mQ>-x?%!`BM1+=
znM;_$F83fa*Eg1;^9vR*30WA7BujPOTBHWN$5zuY)FBHXJJPNo!ts*>35@BLV(QvQ
zA~mLqDXnA2XO;N#gqfVRJ2O5LyUj(IaBWRR3o`!4N^||caovRfY1EVd8qDFiM`E_1
z$kQ;jC|3PEL`Kr?c(?$|u$JV4wcLNq^WS=u^q*(Z{T-vle_&({`-9Pg`Dj96ZwMBt
zhO62s(;%FL)WFs0)K(>omh#Cx#?)#gDb-VKFxUKGG|O2xMquI@%fvh2ixlfK)}rz3
zKd8x|ba1puX?}{H@5O&+W8^W-JJ__>DD#)o%Tm*i%wv!$yj2duSR91ZD90C(lk{RY
zSlOFCSp;zXkZV$r@AaaPDCuqVjoqkDF&6mRz%I=glCH$FK^cDM{yKnJQ`X3fp(}un
z`V>N)H9BO-jySg(BZqXGyg3^hBc&#OAzCP0`E^yyt`Q&nA1k2sPiGAOPn?mM!0P^a
z;y0BzYBqN=Dn)&<cULt_LZ?E#k%ITK&eS3YkcmW&lY&>p#Z1$Tbz4H_pq-(qX#N)k
z2f%UjR&iAhzbg1-MqC=lbe%ylTYQU^K7F1X#(u`rcf0PZu45-*b9H2j{X<k|cK-s-
zvwxZv@}HQ7sao}I{$#5sOtLESD1f*`Er}HKwHkSW!-S`_>|0rz9b8FMqY}|Trt?7v
zDU&MAg_A+KQW0io(QC<B9MR{RTv?KH%+DnsdokoDw4H#G>>k#+Nc(*^qbV`pWO34-
zI*m2Eb722V6ngQ;EZV=j#@yfCP!RSfrl7ejS`!Ks5m0IkA2lemLL@#HMUxZMPBE6<
z5oCxWR8xpY%jL~(DruG_aYz?|oSAzg$r3gW1DF<yA(YLdH>72_;2D6VFN1QX!4Qp@
z9a$UCGZ9#Lj!dwv&kA$8P@Y6Re=e7zL9^fLsFY05vkK!#ZqCzl`}ff`AH|a$33`o`
z_+J9$d;4FJ6L+$5JgzJ^`iq331EGsJeEB!hYrOzrJe$hza{myAT|gXV(di(Uf&2P&
zt5Eq<rM%bcZ2c?O(mxaXXLrKCWroK;QGxv@sECAMflmk{`l8V~P98<?4M#{x<Z)#a
zf%7u-0tQwVD`yT`q>O03#Z8jZ$w;18w}Ta4jJnxRA7xpuo;yzGMr^X(NP2HZ3jWp_
z3%uAm)TSvM9Wuw>aaJM~Xs39r*~I-h=U=T2`g8G*IRD=c4N?ZI%1IpB3QCaEu>Yyh
z@NZY<-wuTS)4CV`b>LDV6{aFM-<!#+Cw=rvmZwy8DodPGD61S}DwU9wgMYl_@Mvft
zSBw(q%a*b=S@1OWj2E|lTQyd=(BNNr9sN(3qW=?^{s&%1^iS0J?K-mk;k6t@@JO#>
zY@1*uI!(myQrNR-AU{yu?2K{0)=B@hv)LYiBRa~ETOYBBucAHDOUhy5E~^im>aq>m
z`tDp@{5~?NfAq_Cv-+`egus@|YufoAgK-2B|H`7&Klc5DMGOBe7D@VDpor|%5?M7v
z$fz0L{~w$gjRtU}be`=AeBou}e^#Y0qLSEQz^(&5_2WyVm5Mb>dM#h4%x@=PQeu0p
zgpA8Jc$}BO#AV*$x|7pY4zEg&i(pmPtK5fZQd+vWG2UT`GpQ4|<>U%t0Mpip%#$w&
zqV<*E2PJ>sdgHkTZY$M&)a9X$Y4j)jwO0qpo4)MGn}8*esogR;=WwX~Wz|K(<`&Cq
z_^<Q)w@y*^Pp1g{cTTYxA!fl~aL)lnis{pE`Q1~IY$1&>3`*(B?6!MIRcc_#%E}ta
zl>Dk8Ih^x|kzAnnE$bL*k=&zMi&WQuBIO#7pdDH1ZwAOnQnk1n?=r23SxNy=o}`UJ
zxl$vc<$ue}x__Ga-%wD)g#Y&_sMfzbH|ZZ)SMc9-Zv0IJ%8!)nI-7kXyLJGwh`q;B
zeYT6@jQqO1`jm&t1Wxr<t*?db((5TTC$WUT%`4%^UgX`|q$3VT;ZLhFLzeIy3`x1U
z9k!QMcZR|QA`)nE2EQvciB-8NIA4Az<h56M^Wo^zx5!5e-}$!ZJ?vov9E3bplal|U
zsQ`Z@?F0tvAEVI#%>N=CzpY5hs2F~s_RoHohWDB=%y!-XOvh_c8}3Z!%Z1|7|4GLW
z<gvv5@BJ>160=}`((y|lOiVR$vp#-UuC*S(UFUADT5WXlP12tDTRNUfS1nAlrRGb=
zt6xW7CYE1qbi*+5*l+#oz70f}Q|L^#)^A5gKhn(8TD9I8&k*70u4-%C@5*@^%`oM6
z+_O-wpKLXi<#x1OZ8!07D}DL>b8F!z<J^vxUxgjIXa*g+mnZLrl6hVRzHU3;XUJB}
z*U2rqI9h4s>8$DM@c+3n@SGV(pu5xiY;S>7wYK|>`_<3wk#K>Y2dCSs^H;;QJ?I@6
z;J@)A`nSybzi<HXN2t#M>oNXOLJ>VJ+QcKpAo*|hD3NUSrUT8#|B2Z@dX#u=x<UV1
zLRpAVz<H9JrH}PU$4K35DC^_#Jc+qcZb7Ea1aGaA*t#h;f-_14X{8oJ<Gn-VG_4c!
zMaq^SJx(O#_uX}kn+9=P%$URKwZK3};I)Qq;h?ch@I2um7-0HKc`zzgTxHd?VT@+h
zV@au6`ed^|{xpa%q3F+BIGVm;Ptwfh$LF@xpJ^sRHh<;z5Zo!rb6D{%5Sp(rQ})s~
zs`x7YW9P9c>1l!{9Xdr|bC^k!hwC(i)y(n^CBJCxy7Q0X_X#5vWuN<cy8-7&3_c-d
z`>GDu@Sle~`)-J%jW6xQ5OjpWWEv99hNF)la`!3ttC_2X*r7JTjz~PMZeI^trx*HJ
zfwvvZfF!YLokfm@p%x&Tt>-z;Lfup_ygtriEb77&(#R;fE<GTrE()<7!6gT@(BNZb
z-&8lm-egUoc+<L^u5X*-0GIRSBFW?qoE?*7ZrEYZf#mA#rb6l=%&tUJ)ceYYE-P~o
zwe=z#+GaH>eSCz`_KbKo+hBQdg80tMSlzV1?EqQGnxQp6zvy9cA|dspfIyBlrf~0Q
zSP11n6WVZ^SDh6Bq?<z75lQ462<|%;bZyeuC}1;UvJ3<ie-N_kqB*Ymc+03Ivo-6b
zCG}wi_d`_^c7d_TxR<xO`J)oymA37aqXfK#8<se3+zr$3^<(^>zc<ga5AsX>?B_|x
zL1@|O3h!{HJreWEh2cDjdrTI}9Jl7Jjl8?MvuxWZO#4|EfPLaINQwhHZF`Vpsj?p2
z+v9Edhz+Rg1r3y8&_6Lys%^Lur0pHQAzc00ah+K1D%}VW5^k6F@lX{x%gNYEXlJB@
z_2VlJ)+c-om#I;el-t%&_*47R$bELQFfxtu%l`OutC{?2#W4L%vx4QjAK9r2R=GB8
zhdXFoQAJ;l3%3Q%IA4!`Ja5mYVd+K3_+mGX6d>KmdME*hS2cZLW!~lHG`snyOf2#6
z5`)9V;`Fz-u~s}6^)*b#xwBj7lIW|(FAAcq3&GFuefl*zg?;8|Hr{Jhci(B!*0i6s
zQ_r;Z@OvU@#Z8d*93}2S6-q@ez{KGUJs{OlL6Hi>Mw3|x_0N+nY}!#yKQ6d{&*mT*
zxrXt8$k0LIFpZmJA8Opc`=YA==O_d5==K}r=_U&Srs$(vvuCtH2l9l42db<F4hSBY
zB85?c0;xhel)Orwz)lY#qfrPY*yNMAJN}9WQuP6wxdH4-g}A2W7_t|k<emvieP}Bf
zP-$`-!eQOV*=$pY%wfd8KS59o3q}a<3Wo9InBhF7>L*?!dUsqwO7>oDh%?tZnvu)~
zAZ?AfKnMZEau|u<fR&i~kysT0WDs%^MKp#UY$v$@!!tmEx8Ve&bTTYP@(o)`R3Vx{
zYa7f{jw9^E%wWf}MV#C^$S%GEdNG;5!)+sv@8S`kETs5^lj7q$Ut4<hQ8`986i_3}
zD-`Ly%404r_RL_$Tp-7c^Q#H%o5eZRHYvD(s<XVNt=CHxr6Q6{6QHPHeOjvA2<uh>
zgbgx_e+sZ=7j)(@pkXGYUN2D4@xauUO;E?3>%&be=MS7uW*WD6PgN|59^wu;ds~EH
zrBpsBF&!snPVr%1uW22qVDn0heZBLS4-Di4Eq1`4+PdBHjJ_Vy#qku~B)u_Ji7emL
z9@2<-{Cv5Ka?l!{DA<SZH-~5QV8fseAa@TT50Ut|s|CsC#P4d(?3!#UE$DP639^oR
zBDhqs2OiXSi(2>!W&(UTQkDl6ltu!4UCwAKd7`osD%i=(`Y?_vV+t|pBQ_sbn1x7-
zM`W2K=-C`Ng|<_9m6DFW*W4W>wYqGduGivv=5G*ZDpRodvH7z4L`t6c$sBf6fn${+
z507?57NW@o68}9w!90|-T%!sT+)aZelhj+>)?H8&j9-;d74^&>?L?jm&D=i}Jwf7N
z_u^Fikq@aFpQ}jfTbxmD9^^%z4OY1_d`XTt|MCtYFalOXoPToaX0I(Zr`62Xy;9J)
zBV_9AZH0Rd`>!{xt>rW~n=PgDKNQAmPhv9*fcqYkCw=`b?B5gm<%27!qlpfeed|hC
zA7K_C^uzpcQ~4##B`_0O5MtcaDE5QAlL-%t4^)1*)CW00T7TMNstpbU+nQnJJv4|?
zJ)EclrssG_Phc;E;!ZJx0fZFTj3(!yA2thUVH4Q<!&09-Y4XMw<xUtYrFuQ%9+d+>
zZ(@V$1XlwHWQnQOm}!5EVoNpQPsULPGW{vH$aLX53T4NjM~V_O>wtoWL%d9tw9**S
zTYWLgoDowt4Cl6sJN-O|4l{4A1PcqZ_qYV8={z6m(~dwh;W?&EvBqZ*z>mG<HSr;f
z-Lp{m`QYmkd6SMhkvuko1AI)J3HwhG0c!P204T=%>cY#?-|`MTJ%CSMZ67(keovS#
zw@-4pU2a$#x*SoP^DFRORvh1l$l!#y7kz@-<`Bc^V3_XnpP*o`z8{DcBK6B^AHUxn
zKbPDxKjkPk<$D)@*Ph~F>Ug^k*<*}<w_Z#(d-bvDMX$5`^5z1*XU<cy<m`~_7@WtS
z@bu1eu^$hF%$%pGT{9F}z9DzUeOs=|2-<Rk8hqQ)M?-<}Z}9E&u{S@=h<P7V7@Q>+
zTkLATIZDRV_s%Y}ST|*8DrYJJYADU&TF!>0*;!Rh2$$?jaA2?<eS`3_ezD)cMoomR
zW5~{KL*ALVDcwhf@Wc9Pzm>br#lQ6}{3_Ev%hs_vXSK@LLtix;CQWXT=i4@`%c4^z
zMfrvwRAKn#NaLx1u--28toi-ws|)Fsp(j^$I@ja!kMyaua%p)D6|pP8sT=QVSgdh+
z|FkQmQc3mbObpQL($Jt5#orwrK6!gibacBsFs(U~|Kz~*#T$B99;HS!FL`sa+6emC
zeN{I$!dv(5*iicYoD2%v-6NDH59;B#{q{$mTo8Ke`4B2>5u3hn7Kcj~^X+NRD*ZXJ
zykN}SkG`)K0uE0*E?63D^#po?ISO826d4Y;7-JFhW-Xe&Yf*^+5LFGSiuhai6$Irj
z7~v*j>MO$xMJNVasCpeFNb21nHbEQnFfxh&5;eG8y_+3|E7KM5#Srx;Yuq~M3vy2n
zSGJHIRmVpwP<rbS?vT*LBKD^TFcmR);uf_4RcMm3X&O1)Aq+7*5+Z{F?lzbK=R<?%
zDLBFmA*YxkCZVm*5JZwL8I-SdL`{9mpu6+0O%sUxHqCt4!)PU4+-!o{D3C{@GM@*a
zG}a;b^5MaSOzvB-*R9et^I?3L;i68V<7li9Ka;S-ROt6q5dA3BEd$}Q0-acPKT3)u
zVnXa;Bk&5t^vgrIFPT54MdZQ^rNOSxS4{U_(sFMq9{U4pseJAf-zAk&(FDABeW6e6
zY2d-ki1z2k>BIb_hYLhtU(Y`EtiuTk1NxBRL<uU%dJ+A^e43bwbqd4vIstpZLktap
z)8N?o06B^bC>0fW4;2#xjScdRWJ$yO<{=-y`J71K;ZhJ1q3Wo+NK^`q+XjbCf#c80
zG4BuJ-CCaf@a8;iq<WS{;3z`<vKQB-0PDce5bq`)lFW8Z6?dEQ_^Vn1heslHTjGkJ
zf4O1O7Ao$b{5jzm9yCxju!*1*tsI9#os4S=`F)Vc;Q`tK=!2xh7$f6%?X~0=3F`}>
zq^60a@=2SVaSF;IP`GMP6Z9$U6}}Copg7^jhU8Pu*jU4$Oysi{>Ne(5t|&5WplJ%9
zRO*V6M!M3g7o(}gB`Hb0DLSSQGARia=Xf>s*I&tWJOy=*m*F&ZI5Dg^nVW<)b(AKN
z$+&Q!jv#h%9ibr<tHvucvn?~aK5gYsi}WFZ7@IWzO=1XFlAu%?;u1P!r22X_(Ty@i
zaW%t;nwfJG=g1oJ_$Jvc9r*4<(NhkrxR?bAOrkQ)Dl>hoXPTK;k(uMny<y1abjjT>
zM|j;!kS!M(>qWFCNPv%)0Qy6P)_Nh~_0Cyxgr^1gdk#^lhghp^xnFLKD5;)tz;f5d
zaud};5MKBXn}k2r6+{8J#0vx;5@<!CxZlSpYO%uBg!AvI0a!r=kXxV(jOPrHR|3Ec
zQ~>SBanO440FH=uJ@6b13fn^pqEGWNqzepLFppRB6y%D8{ED)Q*pJ5YFe~#fxTI*t
z3mK01L>E#><>QFk^S`JUVz(DjYB2xUBs%P+P!0nDxC<2YXb%Ae`v8G^tRiM<YT@x>
z)1z0$H&78n5nO$scdy`PU+L+I-;?qDbg-&7v<$DW)O`(#w^kr8QYsn++^xt>Z!C2i
z$7(BlZ*lbg5t^omd8^1|4gS$6@ADYs?GhY-S&&gL7GhW;AxuEsNbo!ivml7S$fYb;
zT1?!fh_hV>hFhGlR(w`bLR?t>F#A5du;{9{sDeaRU;4dV0v(1L<hJAk?~zc_Cc!mS
zq(=C|g)>8ncX2fharv-Pl6+-h&@&Dwd7BLsuaL3=XxfKSb7TwMlqTLdQo2s9Ian(?
z+GA_=bw#n&o@i7bn_+$eNK-P^USx6n)OdvDSpzU9-m8p%SgZaxEOp$(ez8_-j#UG>
zs~uxvtWB+L^{v~ir2G}7OZY9&e7^Q1sQzIb%3#g{o{+-50|q~9FjuQbRo32L*6JTV
zFK4aGNAEz7xf?HUgALB11hjS7=C683Yry2pWWi0eYE4!KHReT>($<(WFg%XqM#>46
zpNx3ZzD&{blwjgi?{Et3dQ1~J?BWvwGVErjV`yFy)K;_Eae~ytnA9_v#JeL5f3Ddf
zxY<d+MXH}e*c0fw`IKsqXjz5iqmsx+>pG&ok7Po&3Te&ip1`M!f)lfX3BhfC9XiRc
zh*Bp=**1OCCP?x%i3)j0ifP+l@wBCww_AC(Kdx`)vEg{TNuWJ|kF2YwIi<*gw{@B`
zblr6%V{|&fJNnH#Y1KNZZJ^ArIwwDOPTzIT(ss?ubS;{9eG2Yc$?jS+C$T;i{e0K8
ziKgw|lIi~X0XPsCy_4O2)Y1L@b2rT#hJ&6Ir!esePfwa4vAcqBPXUzm1V>}58$j0!
zl<oce>SHHN=UxwdV&4m{>LrG&j>E8wt+BEcJSqU1pqxIM&OW-F=36XHj!obWyDiaa
zUlm*bG^6d9_al>VJg!noB}OE@?0~4nfOr+D)eWAe9wE|NDd+=Ks&nA+_b}>RJN`Pn
zUO~`z{dgy@0iF9nJ-VTWJuy=cq7pzmRA1uR>!Ff~=gE$kmtKUBERWQL*9NbLopOc^
z?%~u>EZl`5qP}7Gm?6S+Er|k!<8<1m2Q4n^BX93VFsittIV4L^>N~2VgeE>n^s?W*
zFL2j(xCsMdgFBjHF_tFVrQI5SD@M2%)}M8NfYguW%Jv%tlw!bCf3gGXW(U*P$7}A#
zon<ol)>v?ISP5T`OGr)pSm@=D%Z~I1nr}j4FESFjsD(O9>T)K>J14agOI2LlPhUx0
ze^$t=gkJJY;o4L|xXY)knO6k)lTQ2gh9-9`ruV8ywThZDccDl44Zh5^G=ezj;OPsC
znXAc8u1y?Uk&^56nTPusQw)kU+*y$2EVd<CZ@?^W*DU^*S;F75Q2IHN$8%(l=gd93
zC@tq6@F{HNDI5#Chx#brVo-4ojIf`6<ng4#C7w^#r%q3#&hDEhgU?f;3+HK>79?#J
z{FrD*CpsjxNd|;SJNkq?N#^ItqbmAnS-Lp5QppCG=yy(tKAozCPtarZlUhC_Cf!oW
z^C7`&C9$++Ax(UAH}?o_v&5i6{34dv)Q#A-n$+zF@n3I9S+}M(c!=d2sFr1W#6mtz
zWD|=DlhQRTVeGQKbqikFW~BQT97-bV*Hs@#z`{4b2-jv+31Qt3B?$^yQp8!Q*<VVg
zc%;~}O3L)75rB)DIFy=rnM{7o<ICzAd`(84GdzSd3P@b+C5`Vok-E3W=E)_3v97gT
z-4MI-X3L8q$xT|AGt7%K((7^bJZH(4^!yL^l!$dcwowVtV?J-5Hgp3|*BMV&fN-sl
zz-Wkw^uU)MF}@`)zEv+7-fce3VzC`tern7yg8F`H1$zlQfs-#Hw?Bk2L<AL6G>rz@
zYcPfC6osB{3p6zfv03uYlL|*03h(3!pGL~?oeP8bMV9D@iE1#h^CUF}L_0;0yIoXS
z0~N{VU#3ZkkF+uCPMY}vcv@sz=xXuvDe)ZXZ$!*8a@;)`EMGVKx5K|}H!;PwPDt5(
zlM;+>T=SM@r|V~#WR>gQde{F+<XYU`F!3mMx0zksk}$&pE35`*$LvTVMngiRMJ5bW
z%)on->8E7Ez*dT#lp^8YpYvThZ=e6EnZDbA!nZwRaGrSB>tUlslNs2a@~b`_SX_D|
zst8k(^Fqks4$2XN<Rf(COMK)H2jvrev<FPo2*m6iho8PxQq1P3RQ}Gl<fN)Zrk!J7
zts|=P+g`aOPx&R;5$N(DSjfQMNEyhc{%TPLgWRB6A$AaQ3}Ko`w$TQ?SD#;0XPrI7
zz0|edQE$FDq+QZq2fIMv-?8-ddl_>qJC8BN6t=p5l!3mt#Qhi{)Y($fA@|YA|M`=R
z4YSaLXn7O7z25rcLWiW@AdzHH_WOX&&hg~VVVM!b1Zckoq}iZ!h&}kTby1@o(dT=1
zQu@GrqN9~skUrX^LzJ)Q3(?LN)t1xK?tG%Y+NAxZiIo;D_AAm^=V0-~m*j+8;v`q?
z1T}cdcWFSQ^fKGmSSk!5&}$g`#2FJCp5b7mJYym`WG|Ht*VnaZ_Ix&c`MmBiqZWEK
zUD;SE-pD{88n@8+(XO$_r6m!!m5z^XEj4{)VLZ%t5yRM|@X9a3fi24SQgYYC<&kN&
zq#xFmpDU3$>5`>Q;Np;jIY)AT9Nr_`VQWHTTO9+e-*R|Iu*tw4DBCBLneX-2pvA+F
zR=KlQQ0x~Kz-u4{C`pfC-viIW1GthUggU|UN_=$T@ZxCCR#9!pIA(~pA7xs5`>qR0
zKVsgEWzouL@%FFCp}#CRVHV>{_mle;`Cl#^O)Qtu4p;R1R>a~q$VXQ064ATw1I(V?
z3g|^{*500dyn}p!cI!U6b@(zuWrvot%a-@#NrwWMnE&L{8Kh$|NeaUFLok3&unV0L
zJS2vToVRj4Gm+PWY|vnODYESe3+AaHC8z30{DVSeIqNAF*koFCtB$>LODB)eL2djK
zKdn?YA=7wOfY7#19G_*W)TzjUUiRbO$Rf_VZ!wmj^pfwUr-PCIs5~nb8x<=3wf8;H
z#}-!aFjKlj1t`<W^AZzxqn_vf1TYheBgi%pSkJZS3ehGu{1GX5Gp~1XEZCrxB_0Ul
z5o;cji{jWDz4NanQ|^7Fh#im!OzJ5jM_&s&97+>tO^dxq5Q{c;8=B<sg0bu-H0(}6
z<afM`B_yqo0#&~_MW)UOdH<x=iIWB8a5(H04nO-Scn*;lHy?T&VA_Rqa-7U=H$2!3
zwqc0te&-eV-QOQcc1*{-RY}?~S{4T|!*p)R09^3FK+2|deYv=@vz!m0$;qc<2bGiZ
zNXe3ep0C^;ll7F{xP#)uqO|&qFM*Q$QY4wQr){+K%rmkViwm_~*8##L-2~M_dMuP7
z`i{6yk0OaxJ?smaHMxtR{gnoE!jp^$GUizR)dVj!uDrMb15JKa?nu@YqjrM{zAz_#
z7(h42^D#N+w-HjF_SyI4q|@JL(9AKPsur}F)Cx)%bn6%wOSg>;BbcJ3TYp79T~W8~
zBDIn$#MA49l*Ixb@O@?#zHVvqDiN_P85up>6*1m*^o`J#Y3ocW3ZtP(=zTJBe6gT+
zZZX}b__U<HrE>k7Cc-+V;s9G>U2hu__1brliN?nnr>E2X19+XcZBnFHU-Plpl4aq?
zvkCfRr<T%smsrZ@$Pnw2EFZ@}TV5(Fm^{v4is7$NqhWooF4n^ajLa7?3ZOjJ2>fGH
z(P!(8D|u-hRm@rCiA>}!n}*lZucM`<c2kFJg#_YByG&UeUv1Re6Mt1NH?==JB{QP-
zeRC70naXqOz)b8-wS~d45s7vw<(oJjd!YliN%?Crizy@X(4f{f#7Yn!OKDGiE6hgh
zh;chM*{n&ZK2-^S+Q$$#*mW=|uGamxs}H9=!On)dcE@ky8I?;Q{^!g{6_zWUS6cA*
zlo*#EFsSW(7%gUSF%xD|^R_-^Y!5zuPVyyJFJA`MeQGRlHa1c6Awu_lsrDj|cf{g6
zpVXj`v>Bd~t(NfS!#8SIJRU=2n{-aD4f4-Hn_R}YNcP2E?b`C71|(%ybBT%S6JI2=
z|0ts##*5$HWGewf`LAS88IaBo-}2wR?uI4|#HDn6xkR{F(juW&o4^AlUZFa}4TPhx
z^iYnRe<vOcK%c=RQ_g}WAtV0!HOPpGFi22<<~!b&ReGlr+aM#2HyGEvm3upoC?Inp
z`WJVS=oMD)8+F(VWqYSSAoJK`LVVbga7Gk{w9>1pdKD)PSa>j*B9Z5cBCQV$`1kCp
z9!Lu86~eY2O6hJLx=)xK7Equ-7+(;vl_E04Z6y>fFl%0GprFcQs~-)M>2vBYL`uYQ
z3kg<?uyS5<mtGE#{S{NZdC;#a<3gMmRketxVU6v7qCn)#N}<)z7ysm7AN0~XjHW38
z=dTOfXQ^sC%mi#|3QzhI@LX6}bu-7GHJ>@L*cH=$Q&WF>WSyLQUqVCQA7X^Eqs>01
z;=@xX)=x@OxkaOjSl5X0>OrJQ6OHP)51T`hP=%P;92WAs3}w3_xQ2q79<K(AwmC_1
zuKMTq+@^;by8+%Aju9i2BE&=nbS?<-v6ljtTtIWOVuEm=QNo-}dR`a~m}W(hd7Tld
z)jB|~WLqk79s=Zuu^~IoP#}BTh|n2kBD?2A97*rZtf&dvM?nrn{Le74P6x63PDUgZ
ze1X9arv)@O&U#(@&^+4+jucN;*1JqiNtJL0#3D#uY~CnN89Uo^mR*A0V9J0SnTL&K
zb`ycC2PYw`o<1c|5gXT!4{6Gj_64hJM;WAI%hmolSZEw<mdJ67L*mMkN{Nt<3-+)h
z{lTJy7W-Kk>zv~T@-Gj6`n`}qCxU}Ji&0fJrBIIkCkQLbp~?<3L6z?P4yer1)$S2q
z4=Lj}st1n|r#UWuJ^N1#Urdy(oS;#&{EB>DRbW@cyA{A}K}#0aPv6a1{6MWVGQn~}
z;!&Ye+#&#B%cZK6`zdJSR=j<@p3mJ^lad-{+@x^AA26i3VG&!^Rk&2`<?tc%(D*s+
zvKTJ?I@2eNrK{$)XN;~*6JJJ4www3$!U9%~H|9c;nS~M%5<e4TylYf@Du>kh7Fnjz
zsq9@~9aq<9$4#gp`)=E|U%_^vtHWNlM!XL-(IX%734aV?B3i2-mv}-TujG0`pZ?T2
z(Jcf_F=hB8tvKSm`c*Sql)B>Yt!-muH*^2A=c6|J_d4l_EZ+n)tNM;+`0hFgDtfmL
z(d(psjRsB%Q_$v=gR=)Z2Q(yC9zoMi@F;j~+H+d_Rdeg@+ibS8O2y=!5}qYQzuqC>
z%6zA#<Ar{JJ3q!#D_yFH@RfaBNg5$%D6^W5soYhI5!oJs7pff}_&P)PTIo|{o3DvQ
zSF*)9%_o6!xR`joxdmSNGJS||)jP~NJ<@EB4~|zgsh0F6%R!Gv_o(W^szt^MNY^Hs
zuS|TbLtk$8uPz-X_%?LCay@TfUfx)584|Aae%i4SY2!O0-Tc$>Ysc3+n&^)_RB7ns
zz|Wfxabmi-PmbRun>`kg+v>l;7j<$8UisN<1wVAtaD3|fb!s}GUs;s^LAfHxtQa`{
ztlKNCMRs?cDRepQ$SZ4keNQ5ulfw2P_WfSu9*1=(!y+Rx-59d3sv0z(+I>+>6n=Q@
zDZNnq#8UwWuqXU3=o7ifWj4;)q8U!`O2<Q}^NJny4RP?=QVm^0HvJC~pPRz_O@hFc
zP--L;wRYL<-`&y)x(@7ELB~BRC3<qQL#p|CX5;!jZQf}-vUC2NA#l9x^_iuv->z6s
z;I#k4Vfyv!1Ldbd^XVHGWvXwEp7jKMYT3A~MZWp&@HBXBdE+W!xtBg>B9JTx{SC_2
z^LSjd4oefZ(bSF8J&$~GzbWzcW(N7hu#lL3Db|_*x!*Cv6AzRgWTBvwfs?q-5i&gj
zMpm^vxq4O;;z_ZHTL1I^Hu=*JZ(E<<UXQ$c&_#!^jBdXIdeILrbdRzWV}y!P&W3qF
z5khL9OY<&(s}u<e^KAquk*oJtas|ySR*}@xN5_bVQ)IMhJYhfsXLdtWf*kH*54n9G
z1wvNa7I<q$VtLqsfsj4DVQbHL47P8hRLk_ukQ(akivovOj$-$l6FC}S^VR`*68hq7
zxU4+5GMGsoX<;$?^zknC^Odww>4CnsW8*+*ALL1qb4~9OvKDB<{Wy_mQ*eKGE9OxH
z4i^gvWnEYt6ba@bU<<(d>jVkM2$8+PaMBCct5=j=R77X+Pnn6L^c2N?299qOrf?Mv
zD?{FtW5x+7LV0nitr0dSiot^6#CJ8E+n}fu3>zmL&w?;JPUN#$B3+R36peDvS%{dc
z;x8$sccTN6+lo&?gWBI8MI6E;|2L-I!YiuAkGq{=hVJefx*O^4?gocOx?6H!=<aR-
z>5>xZP6ebyx<sS}MdtGS?tR~N|A$#;&Dm#v_P0S?3=05e6zv@Z@!FC>c<I$g74kD8
zbv<K6cLwju&@D~|OHL^0B!DOxRCi>UPET~)3KPBt$_ALxGD}f>WUwguRJIdvSr7$7
zca&Iq6!Rh@uMVn#4#)@z#ipHIk}kU8Gd{5iNQexi=n3Z$1wt-kUGm;5J&+@)Wsscc
zP=4vEyga;l)~f=$kp*pv2`-f*h$e}>lmkPDTUcr0TFFC~Czw?-9a|tmCed(=sV@FB
z8XdUmWpvmjSQ-sI(xs$uR<%NGD&jUa(jq&?brN2M8DBM-+%`#=rpmcKQP5i-&B*%6
ztT4(N_!|)QuDr-6WJ)0jO=3sXH8jfIx55$-OW)mJ`X`2o6)ta5SdGEBWjgT*JWJex
z>$_O-PA~lmU8c#in(!n-TBZRI5lQWYMCQbgZ;DE{2*f2ru3V3Aw`2AXoOzB*^6N(O
zNQ>FsiEr<qZe~Cmt4bWVD;(mSwZV^ztm+&qldX=xg~U^JKG2H*wGdzRu)ZzJuCK?8
z!RES7H9kMgE`kT8$Teq|HFW412z$|jHsUAK3hrv>Xv8BK=rq1eDvh;7no7WT%y6j&
z<2buf^#J|n4X~eBvyW8^N1&8GnYn*5nSVCow&K!SU#0_tM8x#uwBUrUmiYNoWX1%n
zkV|-b9a>je0_n@V;6yztBJEwb_O8gQM!uY_QMAIT^!KVD2pxK69$_Vx?v`glMV8J7
zokbih8Kg#X(n$Q0xWW!IT-=`;CcLk%LT8ZrfN;**Z|u~6T5uT^Xs8<(nEmwDLP*Wi
zNd?MDpU<<EOkdInB<@!v*KbIS@Ut}P^IoqNP0GM;TBLdXvJr3Ua$H(7gr`2YM&z24
z7g+#eZ=z)m>PZP=GO5xCcQvpi-N?BkiB!|8Ny+qm3zqQlDYWP*?03=EceuxDHBrT)
zLSFU=VjsT86}U@8@{N(*En%tTEwc!%=v#iAe=NF<FaBjpwc&+!S{{cpmAPkKxQLDi
z2NDC<v4~F~zefy@yl8molkxrt8pfzo$i>Y~>8oZGLm$#f)sR-NzsTt5UZR)wwbD$m
zm69$R9v;MhhR~XKmd^~)m*4?S=t#x_r=GTeT=`MbgQ$EuT9Dzg1ZWMg?Q4Pz9WsG3
zs@hjS#g#~=wK?_Lw`a`t1@A1#s^r+&yKn1VH)@O%su3E0w7hGlJu<L}E<t`RVCwEF
zd14lCewL`fwdgx0-8v+fy?BSQRaKk!B4o8u6-F}Hm<JGczk0^B7$%M2?8G?}k&49j
z1e2D6wbpu=F8ll92&E%E(;RAY*U-Kqu_UfbSn^qIsvd5=VG3)}aGs5spXWvt(`MVx
zJ`&7kYW);4a~_aB4>EuIol^^HV#{?@)6O4kDOb3(VAIhKh1w$CF+b1kC@=PYODu0Y
z;bH`p`esgtP}5p$Taj$Z;unSYt-5ulF4S6%or=V^+(RGD{l1tFjLpi4x5(cJ$Y6HL
z?#Fv*w75iDOuc3QupGxl`2K5xymy{Fgn?l5Z83r%t8G=X?yJz|p3rt@pHL8Ck6otl
zm{UqZv{l<1t2G@VUxHWO0w2OSgxPJ`OjV57H@j1PdQRs$LF>7`eRId1ozOm!y*v={
zfmOhz6+0oZX?xe{+qmD2gZqcypNl0a!Qy3vVio(SmEyf?c)a-PQfuu)@ArGoZ$SZo
z78_Y;fDROxw1a;C9s6i!8MM=oDc;*I-f!ExEg(%oHAtw_KSC)*sV_?SY}Mjo{rF>t
zqRW~TtNR^cCvxn7_KZaO`tHQvT}tLXi0~eR(jKGH9+Sf!v;Q7Ttj(G}P-;+st7wls
zWslRUZ&x3gVxR|WEy|Q`Q?_bgQeC=$as&|$)vFQjX%V+Aq1&gYA-`gfej~CgQnM@U
zKJdy)OaetiI;=Nw5cwnFfg{sMJ?LNr%fN~3AZLF+@nH8O$HCppLjMUh0E&{RA@+Rp
z>B&xlMnQDU4~eT*dELJE1HL%g!2yDU1Z*IKGMj36e*l!VKL#BZW*(|Yi4nlsc8JNb
zsTNXp<-aM8yZn$ga_A-ORv=Urw=Yq`COg!d@3K{z!!=5=_wP}(w9Uc%WK8F9M48rR
zLJq`t?5x6c-PUDYLb@rF;W=t0h#Q*jJJdPKekVR-AVosvYcVF1%MLq!yP6u(b!aQP
z6V5Et{Fbd{B^4qehpNzQ{=jISH;!--IB6ivtOxZamgN3hc6``!z~wZ|{^F2i)Uy%g
zB%F4lVUbD}$LW|rmNVbLT#uHl<;effz|M18d3LPdOd-TcfiDtwL}mY9)|gI%VsXl-
zfyJ0n=vaTRq6${_mJ5pX0Sd&tLLh6QWo^uAIiH=&*~|d9YIRKfU`*kuwM~2r`E!hY
z2d<+577tjSaNSvwNa;B;uUw0$yG8-E&SfJI*iTdUZu<=_1l)1a0x#>>)>Sm}RWz|c
z>vC7(W>peZP_pMtp1kKBN>QMQh(YxSn#67OD#<G^pVy|y*LR%(7F|MW6$ZD<_4);7
zMcl$`ov%!Os%b=W@(*}y<sri7`ked6p<SI+7r+3g?=7A`;dwtdnndrww2-tNmoDa3
zql>y4xA(E`)VdC}E10VF#|Q2$4y-@wecUT~$3^X=W*n4w3Ekq}EY8}vE1n<fH@Gir
zp?R8f?K5{F5246IA^lTP&(FU~SUpseTv#wr_%)SY2~CCDO-D-92q0Dew`&V549YsH
zYEdm$pGHxhsu`^;#hNb1LdOmFY+|g^If3I2Plqn6h20X?KB?^0ey%+5EVh`=3RO$Z
zQo}x}a1~?e%tviyobhx~)()Hqq~ajYohB)rA|3P$u`9?n@Ma0Wy5dFB%ee;dUS%CX
zyfa`UM`pEzUgeC_2tk#|me9!7BnyICSd)TE3)M9t)JOj)o*VUwbW#P1$1>dR&Az54
zK|2}6*h_4z%IK&%?u!(>bzPig`k{?o-jhxK9Tqza4>?*)NH>Zy-S%jUdjImwzAhH6
zhx+dL2g*fQ#pnmtTuV9QD<9V$LS7KI>Ud`jS~Or7YtjoZz)#-T!{T_x)Y0Kz5vHQ!
ztx+?qIRgf4C%1lwFM?2`XStr_ifjP;h6#RAjRR>qIVzW$MpvM!hWi!D`We2)rPhJ?
zN>{w|_9tld1+#o1Lz~9%)g1SoWz3^~fya2Yp8RjnI@E~v4(9el=R$DjMbKfv+VgWx
zZ3#<M33-l)vF_uda!TX1xjXv6knq_A5%u<T8hy%2rWP%yL9Ngc&@fDWnvW3;{4gT&
zxUMiO^_VP>&KvV7AQiQ^dDHlxNMI%!ARSTm!&UG!e?A!)3}pyPj+>oo&?r=HAgGNB
zD?@HA-nyK6h)Io)RYsXh*JN~lyo)sYK1)Ma51YXPz!Ay0zyHvs!JI|l<~vb@i=_fj
zw8swGzYRX80~g@lGrtrE!^txG|Nbdm`UCe6tzQBJX@Wjm9}s#5w}r!pS%}9RLoIg5
z-j_dErk6SC=3&>ulHV1a%+AgU{z>Nvax<dq_@#*vUfQOO))4@)1U%j5^^=}Z<ahn^
zYo<Va`xRUgNRavf_t^nIOzI2)ux*&olA8|kbhD~Y7D$NW2{q$IP0>$|u`%kB<G#m}
zHew$cV*uI0YInjUdJ`I02`P~=LpOEK&?2rr=us$RoDMGd(4XL;BZhdxZPNEk(B?A%
zXg-lzvupO}V+4^vJ%eD>gR%ecWIt;luXPy!s5P7Z`<GQ6DKIeY#_==bfFRJSD&k-v
zUnLpnX+p^4V>gxgtXJ<;yZ-`Ed9}fj#Hs5QaDE|~;NL#BIG$C4N=1{4)&RU0zn#vR
zsP1z%kJUM=fZHApr}K(4K4|o14MSd0G$@}sGuO`r-Hj4~Zxd1np$2%$F=q`RG+9uN
z?au^{R!U{9`I{v2nCn_8;v)$CAnF5RB7PSdUv94K(u*XcNw^5x9g<T@x!u(MvZo~z
zST1zrnA+LJ5wMvl)ao#37V>+c;<XCNEZ6lm3ePsK<j)Sn33<92yvAzXqCBEVOG$+l
znw2xheepHciKOrN<xp7?F~VM^2DboXwMrk<|MbqD&a@d>%Ff$74WZF&V}sv^A70}g
z-RfG?N}v&0hy6hxvT&YUIVjd(*BMS_G4d_Pv}fT|F$duEB9*_TzEDPDx(kdNOW;)`
z)&p>zWI$2<C9hD$RRaTtF<E_q39oiL@FU_`>nCkArVbA)-1zuT8M6?21HyZn7W^iq
zu!o<&D^=u}Rra7{N6_+E5HUJgh8n+dwo?F2ewD_n?%h}l?YPlhn4FVBH22RfVttS4
zH?Z0QTBF=-9Xz2&yDWY7wZp1s-A>9lIls;~c_q$7V1|_{ff+)}p-UtzF<-wZ?8zqx
zCFGKE=^IpeOP)eHMrPW?7#Ny1EwXRuaO5Th%w{WEz(IYZvpkuGArz&1W?h$M-{<y$
z-%v5Vher;B%PzNs<8vRy&mMC?*pX;W6{cmuMrvg&iF?3{bjn$DDEikj5OtytzrNV{
zV4H^p#ykBAcMeaZhmtGjhb#|xjS+IgcokL1=ePKy8Cxpw%NT;3C9zz?2j%m1;8ZLn
zp@qQkDV2Yo9!UfW>vu+5D?$BEvW3KI|5gEM>W3rT)jTA1o{0<-5dZkeV7n4MN}7N*
zD@fdTb^lHN*Qo)2$BuCz?@z%fE0U}D`kWz&I+;X8NxzjpHq~-05SNZuD}1My2Cl9w
zlrmVwErg?dORRPHYy4~jYjZ)?jh#ww-ktmNO5*0(9oe}gBT+U#_$0Gr?(@z`w@#!i
zknSWijAC-T8s2QxU!;8}3g2NEpQOCAT5mfFIt~gL3UXUVpZK2DKU}u{5_ExBUVQLd
z4$E1%Tc1&QYb*DCw7)+W=j6T8!8=62PA1{@t3!@Y-z7B=8ZLst1l6gf3D*_MABM;{
zd61t<uTk1Xhh#JuC0dl&v~-XJw<^hk<3?yU%0NUr<+KfP(U3{6G(yf@nto3ZW!q6T
z=O~ES`(^kY=g@?1bQwh+I`plK0gu8AFPdU@3mu0DN3uUnHTzUml6i=MGr69&CeRw|
z=LdY64V`Ee1DjMU9VCJ7XwqPn-NN7u?6BKN1r`wy$8uSWL|`SULA?S&?iz%i;0j;q
zNdvPya9psdHTi)8i^dX7p8byws`>dIsbMWXN!2jzW{X)7CsBL<N3SIN<y<K#)_DKX
z3We;JgABBMS@{ZUDY+dD&K<=GNWwMz@ANXw%A^wFm0nCt)N%#+-qn!CXfzRb@S)Bk
ztGaZ;Ajz0hG`>(9h@}A;(+!A(-bV)4A$l*K<jcq?>P?z&ag*M*{(l*#t$Yqw`H6&c
z(7VEkKeCSVZ=(MTZ>VL^A%}=ef1YbE$)vQ9_&|ihBG;M|1f!QfkyX&V<!8RUo%Lo<
zpAvCx%cQ_(AfM}06Gw7Q>`emkybTh-j?gbU5IlxZo@yqS4WiqUjfvIZA*XlTR`V6J
z$<V72Ti>VWU|XOuDy%Z{phZ*t-Wg}USB`VulBfJ~vW9k{gB|`tql+fzl<dmTy+`HA
zyWekV>c|*WLWBUKS?lPdX3Le#h)!P?nPI-CU7Th)J!V0`n8DAbWJ8$*l=7W3ej3O~
zOG<WQ;xLEdZ?PQe!E*9zCw4YySvo0RBo(q50mcrVad_4~iMEKV6|p*T_jGoX={INN
zn6&jd|NC~xG^t_7v|(?3c7v*=iY@K?<jLt+oQsy)fO$35X)}`dSgOhv3*{IMO;v5V
zOuBB^>X~Lxt-#k2q;HNB`c86)q3?xMUFMiJm)jKTl@Gz0{qIdLgL4#GWzES`yl`Dj
z_LwOyxjbiXN#*bEKk#1x==Yp)-&jQTEK)Wbe|;2~+4}m4pKXZhatQgotO(8Hp1XPE
zi|TcZIZO~+^&0p-i;&Kw6QL)>E-Z5O(wz{gn7o5~=c{iWrwBJ~d^8QppT@pzQy2k|
z@J8lu?mP`>`6Je1D-t-x8BqsExV9$)L^rpSc~SIiMOW*z=%VPY^Hov%uIqMu?N7M0
zIQ<&ia_8e6_(~s{ZT)=;jrER5mj@{d<8Gka963TCG?}4VHKkWnC$}b#A3d~Ed+P5v
zp-b!YKfTcyDc?FO(o#U8Q&e52T^$rr#dyN4NHf9Mj#`zXg;h1zIe@uS?eAyH&f`Qv
zXZ6Rj%^S|^!|ml08HZ#2JJ1#>5_gE@v1&l?f&<oF>%!BS=)0b^4_&hj+HOs$s(l-)
z1HxVH*zY>hB5e@M2;uG#E_W@T%}xBVY0c?>$sVbF-!8&l_3t<Sd>%B~<}VNEzj{k}
zR7HvT&FaHPPzmYVP4PGj5|Lp-_n(AMP>OpK6e}WbFPOmAF5dUw)w3&?aOKcF8idH?
zPfMgeU#eY(??-*wR^AucZ}v%XgZd0{Zt}lK>@+ut&RaI#6y5Y6OCfqDJaBHy2|u1F
zNsE2XY`U!$_;{)nF1B3BeOIUd@yzIx*y?6uq&T?im{nwiUZMC-KNpIbgBNT+K;xg6
z`|sQ~TzqT)`JPrLn!}cIh{EXED{P+%**8v^Gr|vvX{~}9Bn4|OObPf{YK9zs0_Rzx
zS^b1cbCd$_uR$C(J<j=*obZT5NwE7jv=0^i5=?d2i9AHIgvsOCs(|<Nwf?wd?%+Pf
z!76l{Pb+*e7pUWYh5k^l_&$?6@T%_LPx0obLxJ!kGrK4k5B`v}!muOPzYO)&QvaMk
zLCt?a1MHg?x~s+buguM&1nW%E%9S%ozcd`#eZ+k}`ts@d{_FjiO+bx3`6Dfu@CR>)
zyy)!k6W18ENRH&9aX@zjR~Af!leC|8h$Apsx*r3N7xf!kbOvu3NRG~32xRy(4+<y)
z5R@s6MnDc$gf7S14Thwafi0J%=lw91NdN;D2zeu#51QgIN6Hch!$p%9j{|X0$%{51
z#jnxf=pj~cPypySI|rU+(h@sys&vR^WmwZ%?Y@J+X?djHZ)am0N;{D-YHWNcZb@+j
z=5Se$9Z;AI36TF?Q)Bjbam0n-+}zS`^HzDI(=2(y!aw8+Ivhw5(KwNBlsq^I-$FK7
zMV8PBpR5+dUJIlI$`>+a(WC+8RpA&7krYXhknWN2A^?8ih!8B3N-*mC34lNb#HXRf
z5@y5t3|Ib!gpsX@uJH0&U*TC6N0Kx|r|=ygA1$e95F%_t=%j!x5sh3oL_wFS{8LZ<
zE<#KriuN{|<v~^r?Hj-FzJOX9w_e376G(O-gf(GLDQk}{A(NegfngiYaGxjl#)d}}
zVLdsDfeAwu)E)b>L%t)JxN<TGG#!`tH%yQ<LJ!jbqR7b7*vVnwNRMOFYcVQn9q{m}
zw9Q({b}ym(4$`6-0tN?h1c6wr2?GrvypssjB&4z}1!;Z)aj;TH!w7L;G$$-ZeSB_{
zY)jVlKq;_lav537DXl^j&Lq5fI~50Q&^(a<BcNyodV2P(O!bd;%3*d_lcVZ2avC)A
zC+Vtx%Bs}b4w^ZE6k;mu)>K1*aNYS0ObrbrLlm4*MUpKLTUwF*Y&FO7p=E`|p9XtH
zlo}}ich^w+fi&<NR|e%kunGX)(VvK=A}8D-FPsL_fNJtQP{^-EOZz5iC?JmPjF>ep
zBf@<Zr6Dz1uC}@js9HuSqr6Ib<72%F@K04hd=r%zuw1ccrRz4>xnxv0irL<bxtLzw
zVVK#Zslro3L6HpRwW#b*htz92?!rGVW27`ct7!Rf2(@Fe+_Cr7I)<jO1f@{-sl4_M
zn+bD*mEmE8&#5~Zs3zFyHa$hH@PftYln!*K;%8ZMZX?85;b`D!zOwjaG+E<__>mTS
zZh-vWSk3%sQmuwE#Uy&M3X?6CQEgQ`d?zktatU+U(Q=L^^gcd)Yi2+eDcLYqx8S=U
zlHS|vgbh0NB&6guPIv-^NzesrsuJ~|Nw7&|%8W1E_=0=}m@?^!NM7h4Y-2=k5rSd(
z>Kw4Wapts*6ozZrXw22FBLz)JcR5r!r4U7?ocKmHqkWYziH*fL&9PxK=6sXsaHt7p
z^P#JIQqkN!h(Q}1E;Jd>mHX_6kyfuU`}1J_LMP@H3@G2jq1_%Wxqp+YRA0qxNk?pe
zcQ}mKswZWbPGyt9?Dd&)OqZm15I=21tX|)*EP}Q+n(1VaIMNA2VjC4d3hm8O4T&D-
zT^6~atWvSE_jnwUst&hmB~Lk<htdhrw=>p{XSF$Jb;FBFuFE`{28uxhtcPRd+p8Iu
zXG~KHnnPI{V=!@D<Uc*7e@rvgf>e73zW@2A(51!RKhCj~jv#Z+Uo~GRb0an~H68b2
z`sy8NWOGHVpaK;)fI@d;M|I?!z=M`CBrmHA#=sFtM)^ju@&Wc(l!n|ablYs=QQ>oj
z`#P+)CIyVVuPJ=-t@WpQX6I%<T}DtEn(!NjY7Ug_jH3*P6UXvOMRQX=(_eJwPDGt+
z49;idAEXuIUXp*;+adi-QhGTBTSzGG*Wy}1*?OmG)V@R!4>m7Rr09ngtlVzY0zadl
zL|{wEzjku_YNReWCHL-#rj0)FpeNTnxN+QIW63kMMYQ1Uoa}Wg*Pouo9^Q>!gYm-b
z_+6z!ln1U0!^V9n?iIt*xz<RU+DIxLLf-^R^#>9^RfOAtLy<=9=7;JC+HR1C;mlF5
z{BbPRX+e{nEcf~N#b?!~{+>A6z-Utb5&GH2&bn`#DaEITR1=4a>*ZhT9=SK&BCn>o
zZ-jqAyD0iC^N-z23hZgBsV^o>n{V8Ce)~874&!-<ZGK4MdCX~kEcvxo2cWGr`B%sD
zx1xC|yO{m*qT7CuWESbs-SX>I(T1i+*HZDfrL8?{^XGrjfdiDC=v#neWPl3~9e&BK
zDrgT`2K0p|Ld9;<kazBlXTK;Kw?+|abjtH7D=I2{I;^FW>+<iQ%2Et(yl0D2E$@#g
z_qj*v9Y1AE!5!&tkU*_X-&?Db$kPco+IPhfC?beR61s}T0rM%kty^I0iQ&vy=k||X
zWFpMg071S<%T`1|Iyhs5RE>soqL5;sY&4q>i^hw9rJ^*_im2TJv!JyzofX@7bLS%x
z83(lUk_Pjpb)~E|q{qvJ;A(V<d-8M}X#h?_HU86-_bdl+yGun++S)s5E-iM|EJZsJ
zJhAQzXI9^2^5A3i;P3vp!WEj%)lawawyhs~G6AEA!*(S|Yn9b@3;11u^ED;)_qO-+
zLu~D`?Cs_Dqku;yJU(qhiwoSy6Q`1uw&vBs3G(ZS_}8Fa4F0rz!h$kFVWSrV<K=!y
z&b=M)32hRqHIA^gFo!B0jx|0Fy?T%=Kn_8_NJWS2Eg#9I&VEY^<&P!OqqmDlP|6b^
z<W>@s)&Oahqax*v=$^~M==;;G&x@fLdMg+dzNk_PB;#7`M3?!z^9q~tijIQV-hxR)
zz5vz^NnT$KDz2hi0kFHJ!19fx_$`@QUPziiRh0~G4VkAM-oKg&8vtu7ABt+Tpyc0Z
zNr9WX(?f?mZbQ%aW8>}U!yOvODEK0GN-}pYD!NRGEkI>;u?RZil8NcT4$?C|&95;q
z`wqnEpo5m7-pq^^Vn<>^Q182dPGPn<mJnSJJrzpY>xo_aHC&APGAAOxzX$E<|7az0
zcjQ*@O#3VW-M++HP~`bxWGgikcf^kD-y2l_8#LiAiI5KKU-j(YN40yDBabQ=6DpZ#
zKBGr2VIFu-kyQ|Y)L$80ylT7WPGP_?+!u1NRlDqRnPI?>k(0Jd6^GasjqQm(!(9Qs
zNxYTr^0p$^HlouIF=rXnH+qc~gOVjOQeo$FiZC9e$`=!u(|we0c%NZInDWPX5Gq5+
zCkA2>n~!8e6w#bsHxSeyJVirSKoUoM?JF^xy+h_#ld~YHGltNc-z`xFJn1H^TO&du
z!wYRcv7Ls6rDmdEX*01JM1d-(3x|fay13(ZBSK%JSbXqc5b<`z)ogx{E{=$Ahgv^Z
z5mMQN3V=JGS9`Yt|IF?)Zy*?=6F*4h$b@|V&9HaOI2y?;=q;$$trF8suaOy5I1?Mt
z9e`#xyamf;X-_Wg4hk9OL9tc7cyQAn%b2hY|110{HjtSl$X_}@tN_AZZ)4Z7$6=Kv
z+7!UGU9sBV!<6%wpLwnM#DMuq2g`!t!jwse88{cHu>~9CM~zpoVocIG+&D*4Rth$-
zij$EMGqQ@QI8a-O8)Y;fXIkKI=^fT{2G>Pb8I5C4P|fEgr<pq7nsw#t5ZK#GB;#wA
z)`XzbU{$x<*?G&2M)7`aU>R!km>VKr0Hm8q7l_GIuqd3170b$-k@PjZI&>AEZ^nyZ
zG#C-xLLx1S$e6<U8HX4>`v(drqwfAYSLYH!iaH2<6LDD!w%9?E4g8~>6D+?KvQj4V
zDI8l6(6512_5N#!UC|)Q%Mg$jPd@HYjTs%ixcY;ms&_$foU`~B5vHEkq3&hDAtzD&
z9I<30hq*odz_*WNkiR*3Ep5j$?TIjzj4IWFCzCF_Mq04Ov|Zm~l_rLl^o8A&#NTE_
zlSap3Yd2i=X+$*e#;M97M(bo^@xJ4@oBzH><B3_#fYlvCq4+>X3-IoZO5)dsKbmOo
zoSHg(XC_<Y-o8o8v%_K0SS(c0G53Ok^Bb8>M!{Qz$1d1PDFHD%?aGs@<N0fE)h^$P
zIJ$KbNola=-HRYtc9dT!eP)h%9<|9wHWSPg=utc-L$P5+i4T-K`qAbwI_?~r>Ll~L
zQHjzy8s<`V>>(nB**?&>m>72+=Gi~<omM%o#N6F8`M4A_PGaKJ1Adk{nK-~2%=&E1
zD|Os{dA<~8>^rIqn7VwOcu0EeWkcl{>>zXeb}Q2XY<VW@iP*E{b4DF$I*17wgoiG|
zgRkMM6WB6=CxSRC5hOiHAJIG^$W;MiL?~!FpaPC~QlFPTMhrtXt6Xs255hKFT%SmO
z_wxrn#p(d$|5{4;FI5dvuOqCoC<1A1qu!H(p8o;}gd9g2>r0h*1X*W6!vww#<9Zn8
zCu(G62oO!M_H&DR1>tc#DQj=UHA&Ole2H}3=Z^f$a``xdxeCLXdz-mJ`^0VR7T;>T
z_a>b*OnrIpw9DjPcL-AWIDKulo*?L?Tw>qmeLS<k8m=|#HPzNCinv0GO<5*=9j+pz
zHDS{q$)FaiV%qA~#v=7jlp?br$za);@M!WglSV#9Jf$*@_`_1KlJ$NLYY*LJ=rF0#
z_iYIYrzWeRgrDNSA-@6r;<?THCD-Wv_x4}zx&A|{onB|ZKDCXSpEPu=I;#tuul`ks
z92R8!f2w87)=g8&_)gR;ie1=gBa^S(5<KgxNT_QK&DP_8N+!7mLyeT0W;6IVf{>mR
z3h1AVfrg3F!*mCLdokou`R??8r8G{EsR`wP=|LHR^zR$H|FbU7GvgqMo^pCqUsZ-r
z82Nyq$pgoX*YtJ&kQSH7;{!8QKwJVh*K>)B{XFv)MXjl?7>grM=s3e$#)(XVPv<^R
zr12@Cik{jD0A3A^)`2AYX3_OjnXc8}X};X!SYQItE$hG_V&!q#M7PPGf0umu86yT#
z@m*5lfn=-4qh+hmwdz3kiNl+&7zL<m9w$s4uO8+2)=_TfzH+;btq2=i&&6-hkWNEr
z#h2q1%Jo+mo978fnZ9l%4$Pg-bNTf8_va$v#cc!jK7ODh7Ax0-Sdt?oG4zX8i`dpe
z#ql|IxBnapuO@=QuObq>&Wzt_13P|KL_ccq&vE;8|A^U|1m#Ve24!k;jxp*3Q^T|*
zA`g$91DVIA3FSU~Nff!qhDH(n<r@VAw$x-1s>$q^*xbh1rV9JYSUVW)>A;F$S|)om
zR$EYp&qnQWsKlZ)x+gPj1z}=mb+1`(hB7x|&7A9Ltxn23Z)G+)$Jy%~GwSGW8ff(w
zjY1Y;&cX_viIHd}nh0h+;iQtI;{?~P52v=D2<M@S*jz8Jdu}m=CA60C{^D=?r*$E5
zuSG?cZ?`CZ3IEPJC_kB_PIFC!y2hKRjFq}k&7pe_8K%xwf8#`a>%VE6-u{O?y+0(D
z8K^}xlw-5;U|vC8G&mf}*?|W_!@gG;#TMoFn#e8<e=l|A%GKHUuuuFKNTqw?_&>^L
zYhCc=Tv&+ufD3@c2rcoxll}ud_KY7%{P%g4Aoy03a4Rtm0az<hI{~?5I4N^-LnIe=
ztNp^%$-c~{eH3y1rGRT&`ge!r6ZcQtAX3>#!g1aNKMi^ej7MucxXEawDxPpTrRAws
zfb4p;rbo|C;rHNoGMgPRm=`ZSMlOr!WYG@VK{pDHz#0|NgDiE<qAXcqZj|&b$OX2x
zaff#z@>OKXUw6xhxCTyGX^lo;AeQ)l1ju0sLg9Y`q{y59D?k$2(ep2YMfb|F==%Y7
zBC<dT@zf+>(v6ozbcl_xXHtp(609N;E4@WOeV__MDeJD1>}^e`T%;o^vxrS!%^@_Y
zX-fy59P&g5wfzqn#xb%%>Hdcd!B=w}yPoR*LxwxmJbdJu{c8ldz2^rk@@!xt*caM;
zPL_+4Jyo4E@BFqc9HGWKY}bu=oC_KHqLO?q>pc%v;F`lL(Rk9g;{yCS7K|*TAM!F!
z|C1W4U!=zPICqzd3cC|-o{GpQ8UqMZ9!RQtkurCDL>74Rj-6cOOF=JDO$wxjFZp)<
z?ev$7gi#b01o!ZlyaZnA4-#;8$R8b#;n?CHqTvyC3{`jNa?rz`rm{4}=eYXiG7;<5
z_UBe?dhkxef}RT?Yok6WA+zWxi&f&A>5RGAU0SQbAqmHlLAXSACOUEr?`uyarv3`*
zXO#)Q9tK9Wyor{xq)5houT;COrJCBTLv%qI?HA)uSb1YiIAW3Q&zl<vi@t_40Y}tm
z))?oGH<#<~!G_yMr9#S>OnLK8v*L%<SEF2wUXkV&+hQFkt7~AjDI1G}`&I2mNpg2D
ze#>O5SCzd#-4qDkZ+v$k?HzHu@bU59Od9U$?{oX**+Xfy8<xpAs#@az@vr&8Mu7CF
zp+_LKGlK6q;gTsOcqoW?fAcWx3+LgO`$gCnHe_`X2q?wf<5}I(!1Tk%Ext>5Zq{qJ
z4dI}=rAX|O$i&LHy#7x=3&icLTd$6A)P5CTC3_XwQvV{G5FbP$j|0on;O0*%3b%QL
zVjXy(Jx*%+U)uy<equogPYb>E&i2`(DPk0z)W5$@YJIY&axtClvHhPnsdLGIr=OxB
z>yo}i-R|CH-*r=592!NdF+wx5gH!^fJ|X{+zYs=pTOMwX)cj<+m{5aS`R?3F<?nmW
zkc*oteCkt0#{y2faRK@Nqfq8~q`!!C@{@UA8vXCmwf{MrYKyM6zw{EMlU*zkzX~Sm
z>h97kU2Lsz3)jYk?_1N0UF~@a|A(;4somcEuXb?X**dpR;5tO`$*872=HH=PfcWO2
z@b8|bVs|T!Rg#~8)A~BeC?TlW1bd$C+<4;uWXWyr_K$D6pnkYTJIJpdhQfdRAEx-R
zl#3nmKc+Yu_<GCZFY7(=K?|zzB=)-{!4aw$&t$g*07k0E9V^iXkzs2ZpZo=?O@iOA
z+L&-$_Zy<8>_k`O(mXL|*KKJ1;_lF!pxCt^t<hKy(FK@?P|RC;I>mp9&b5~KHF{7l
zwaLDhj)j1futq5J1Y_Uo;mwCo8PZGPDT$BDCfa7%B8dOui?7eQm+IqGQXl3iI#@t4
zy&vSMbPUlZX51<00;wB2P6w&$AHBReiYVX{AdO%0FmKUr48`1*X5&+wTW+O=J>Jd_
zsn;M6J9eRhaMG{Vv?1#YVUsVlcVY*|80NrJavl8<ieb3q&!Cq7f57D3eEzS<1wr0g
z5V12WH7`*`lu)fTR)VK88;Km)qv+~wvdQF6pYPyfw=^tj#u&|aFba|fmQGH)m9SXm
zytXYF!dYoQ)Mq;Cf^zB(Sz@I({V9V~R?P`5uzRXYAbr~XIm7YoD6#X1LDUd=lATFL
z1f#@aw(Gt+H=c?AuCEpVfQ`<Az&S)tfK!*0*}as^&26Y7WKbobM57fh!l@7&paZ+C
zw4J?jn)>duEUmEYjwghf3<vXK2e!?D292b^(Sb$qA~jxOwBjAH;;~r_iSh6Kn`Xd{
zlVOyD;Auecikcxr(WofRC1+CzI~jtua_Y87DhDLJ;K&ub%OHaHVh&JJ0vmL#3M)L|
z>(CLW$qG<W1eV$Xn%lmzh7R4THHIz@$pBCYZ3(a4lTfsku+a@O6P;lY_%xix=q<xI
z&x<W^DC<zgTLNJ(IF?UQV!6kAEqEZoEiZ|OLQpd;><d%&MwNDmUb$rknV;e6EeeP3
zkX1ygE5JyVrwOaQC=hk&YcgJ5dShhd4(cYSL`%Hj)+NVhMja=6W{Vm%--;}xK}iE<
z0kl|SPdPBO{AJZa7nQ&XIWi<tQ1SHSjD^t&Ytec|p>X0;`^nLqwo(v#)01B>HhB?S
ztHe5;fP3-5qzpvlEUBTWDSJ^#vuMdU%`sN+M70x`UM+!$V~nTVO~Gj)K$Qu!6T8h4
zb_5ShdIu*Nc5#=*?8n6dMZnFNu<pz8YXF!HGV$C|OqAYi`E6|P&gs8!AagpupRIs=
zx`MQ}wm;S9vtzc3G_}&aM~QTA)?jZb!l*Y(EDY9##M%+e%yj6yS0BX49A&RIs_#6i
zBS-Vd?1eQTOzN2y&uH(N02>(u#n-&}0(_-OA60%Gabu0hBz+v@=w59V#ljl$lmi{@
z99p=dLtX9s-wX&(cT)*4zq;8Y5)d-<5kjB;f)p{6gJu0RNR6WQNe?i8fVHFt6?VxK
zdVBLKl5j&Jd6Aoor3<^#lXGQfZY8B%F#1NcTtLjjtusyMlL^*Ry}nqdk9beJ_{SUZ
zApwaoABm}Ui8+0z2SA;Z7V>ApBYr5R!>)vn>!!hwX#Bb4zP^;-Icgcb&biO@0rs8)
zmTHkA;irai0GEtkl=QzZV_9Y2wi|`X1jR`~vd6A}v=ml}h_qahH<)jwClVo^z$FDi
zN=!itg!HY|t%q%ywL*ZayrJNhRinah21OnurPqzf;9s;`k>s<#rmSB6V3e!a-OhAf
zj?2uTca#xYAt{9aP)qQg=;Bp@-_rb+-zA&heNIw~za200od;afI7gBp|5OoAmPo>S
z>0<PX%<s!Isq48PitKX5bf|wi2aE9tg0ZzFwLw`~sz0;~&u(cf+c~eZCY<>wd>S;F
z7B-iC6=^$PJs4=KyXe@aN!tBX&XUC>TiPq~?N*CGS5aS`B~tB_pEbf;tPwO&_LFwi
zDl`$A(951slEK2t{Gui_v*<f%vy+|z*Z8V>QuPvq=RT`xnoHm?n$e(JC0NMI&TNuL
zAexj7@Ewdrr)lts^*O%C_%-CfvQLucUj^S~)H4BICXUUWrn1>)J`iJEw=}IC`IhGP
zhxuRp3_N^q-n)9zIaiLO-O`dV0xp`)&v(yHI)6Q1=xuXf95r3wtXkO;Tu-M^DkQwt
zqvw5}#);%{iIJ-FY9E3k{EJ4|8U(dPe>uh)gZJRtP7rm?iF@P9fI_sJ+a#;4*=74W
z;;JM@_*n>QpW`4e?}z}Nr!bOX7$EL(tOY77jdI#;uDN#)luO3&!bvin?@Lpxe;x_i
z6k6MG7=h?KmbVQc?yHxud)iyj6_pD~L>bfhZU$=?ogUQrDcQ1R2v4uvLI~p)VFLcB
z=W!QW>4*$+?OUbY%bE1t(Ts}_zS?6__UA<V>Vj$GHH4=PVlyB)Hb5q|2VdG%@_7xx
zJjeX6eao*&_O82kT;Ghi?RMFG)&04a;==T`{K4o}XWIR$%gpnYhdq`rPlfZ(UFTQE
z5Q7iG86-At^1hVWuE+~MxE`$pscz~dDnxtAHdWx7=08opg4t1B`HzuHR_F-i@!tV-
z#19`AIsdfe{%KgCZ25mFDi8LmamcrTe}9;X{tQ{T;{Fzv`(38~w|n8Q3Lmp{&hIjw
zhqe!Ij}0UGe*Lw%cJ4n(sj{OvNPRxS6bY5X9EakaPe-CZJU!)N0P;c+b6*97yQAmo
z!oQ?)BtcaRJE}<nLmFdKn90;52(-jr=KX-!J_ankwdh^;*x2S+_DC8mdYs#@7J@3c
z8>u0TNHF@m7=-aZEt#iDZJb#T1!j62!6AKnI--kR3aVWrQh8L~@v(;mgf|38n#Qdm
z63gKez3duZNyIZdD52KnODso_Ne6Ox2rKMPnH#ewk3EJmq_V9<wC;n8%R&$H7(Y&y
zHOQw=ME~2uedc@sAK`YY0shsm1ud2*ei9*ow8fF{#bpM@H`*o_dPpy>Ne?pR-1*aU
zib_P03GIpK)aAien#0J+stX?ChjbE#ekDxc!oz&iYygkk7q|#bJmgG(W(mwt4q&b?
zlnpWhlSY9n$;rjju*O93%7W;tO!-&O<S7*CxBU3p9u0at!TQzUIr1W6TjatjJG(@e
z94KmeIqC;w+{H*|*L|I52h2`WUM-n2^bKuR-qr+2#q=Y1NVJrtdY*AyOdH_snqEE>
zqa)m6odHF`lq-H60WO(9`OC+GRZ!g7iTqlJckvNfBbYu)hM<0z$~_WOtE{nv$&6?Z
zIkqZ?G#V}0b7*-v2^fw0i>Wx>x;TI{S!f40@0Xt0EtvUFk>zk5B{FiY7<K~%sTfl-
zsRDw4!k%UiEL=vA!I!LRR_)VLIv0a_SW)A!Q6)<eicl=5qCBZ%7_LoiS%sP9w7b-D
zF(;D-mvJ36=*A$mZ<K%lDE?*WP-r82Cd#haq!C_?^`bJ$B<=Gql}Nep+9LLMUhIk_
zA{WlkPg&`AztmS-u)n1}N-bh(Ls0Ghc8F30Q`8sB8sVHS;xNd8aPly1H#`0TaU%P0
zj1R(zkYo|Oc&M#><-9a`*7z5EILB!{Kg?L-`qH(_dYd=ZQg8c^D?2m`yNU}PS$$>;
z7=%VC`v`wvO74rFfONW6RQlybI>fs}%+0SBZMJNUEL>2hp%eon6Z5EVm*F;O=5W$h
zeDP{DPJF`OBmGMSAAaREHbfGICZaK_Sjd4sA{@oB{r?)Rfk%NVqjU8m@t7k5HxU8{
z0<4|P5>)aJo}V<;d(*Q=eilfu#te*H4jd~$h|=*>DYPaFq-jDW-Khqwhk6gis}nXS
zyrM?6#f6S!Xr6aznrzJJ<tF|X_JJ%|1pP3c%4pJv<)k2;Og5dZkIxl%th{<k1~#HH
zaz*NUUFP@;<dYx14fE|)G@MdVu5YoG$+7S4@s0*?a56|X;qc(t@oYd8QNB$B_aknQ
zWFH^~9odVfSM!BYOXeXH{C1zc7^MUcVjQRhIX`;xT0-n}6_%O8l_~|b7=(-}g-Bed
z0%mL?J;@9CUilmwXgkkiz>E_1MKUTE5QPwris<#aeeniR$#KzVUkR)i%W`gii4RoD
ziY=woI&fUMI)!g|4Km5^&&ie8#6D0G`?oRlZT`(@8%vcOH{++n{S`->)j2Aahjf*(
zR#mN<arSOCvrXG>UY5}%_ObNH<t5UqJ}Nk+wr9osn64K1P}E>d?SjXcs2b{!Wb0m2
z4v|t<i{Xr7UJZ%Sk5IIGs@iuHs&s775p}Q@xwKy6gJzT+Fvw9aETMip6HPcY$*?yq
zKyHi({x%eI<Oi`r^PX~@wN3d~2<Ep9%ncs5ziIQ*Se)O&ZMN(#32c`V;Ih)Uu=;+-
zBp~Q;jEr&+Fb3r(J@*Q09@;iXOmCl37kw+-vWeeNhg92s9?&FFrUI3<zn%FR61Hc~
zOl-x>f`a}g>nLJtJiwXEr6acV6SHe9i$#r!7af1%2A#XYum+OsE$PXH=|qABe63Q%
zkGnVu51zoAaZPyQ1*PSWIQAa+eW!oz^MID10}n!Zd)Iv8H~f6_<~ZJc;!ES~O(W`E
z!0SNI2j&<q`Ka%{T0ybh%7w+Y%#4qTv9FVilo|CaliEa*W5byHQA7C?LP;dvV(i7i
z;^H6>xNX~82R(R%Ei2FlgM>rZ3M>-GYaKyox>ufYbE24__RF^)0G!E}jlnRjy8hs{
zKSaBuP^{y`koU<;l_W<7;nSQ~A`-H3lJ^ob2P9G8)>y0)(5q%*{1+I<*i(wd$=0fR
zr=0R~GC>$eGRU(+%E*hcGciU-vD)?N51qtIW4*gJRcmK?>P7)w;Hul9;w%TUmBb@>
zu6m%P#T?Mo5)5X0+0yV;u4=N8$?(}uq=76XLt?WjxPtoc#5OOjM`PZ6mCM4^XVxsF
z!goGABW_p=&TR2rs=gY<_x=jtz}|tZ@kF!H&8c4_#gJMbTzGBzE`rLPe|KmK-0zLW
ziLX4Ze;HRjmivF}_y;k#PE8{0ju%wHxIPZJN4%sbqkoSUK>gpQzRI%Dc_m3-l(7&f
z3r2h{mi*QLK@eb<=Y7D!<5?ao37NS<wFF=aKS2G(2bYp0R??A1WO?vp=SB89yYMhP
ziB7adKS+2j!nb2s=^{}eB341i==2Q9!h3;uIID5POXvsr@SU(Ld&P?Qjk3Tr6yI(T
zNmAp->hDR<%Yn840<U8#78aE%(g+I8EUn1nT1ZI>j@+7UBx+4S6hU*xzP1?g^MrmB
zmHk%=oG(u!C(@f}>4!O%D0G&Q_bNW|T7*K=tP-+8r&VbuyLP(eR!Y<Ma!j+4xTLX7
z6u6mas_V4nKor3H2Gqul`f?gAGVK_Y7!0QLEg?8I3)<CLy-W7!=|T}t)7oAl=41D}
zMv7up1obQDw*1UO9)mOL8Xo6-cDV%aKTd!j!W-P}>cpZ)>5h`32Q6z#J-b;}!)z?Y
zqWs+qFrM2-$Cq;<5!rGO``jILmlC=t?lmUHD@-v)u-Evz`Z(4kf>&5q6KFA<tyA=+
zy)Sy3&pF2g+k2B}p~BH~?<lU)euEJQhhx53=IGGN0tsm<?<Gg<xpdUx?!cFuBm3vB
zS_2nYZ4oB)VnQn#q>61SQZ7I5zA89Mw5?-y#^MX{+5Yocmt$G>U*`yrxKgFyFbI(I
zu(Z6H^I3ShT8^Rowy|b*(;v7B=q+v^kzq(_Ti_}E6R=zm(CD8DIq>#6u1M7iKCKDw
zM}SD|lCJ08z59d{a<0jK6;A^T)Snq|MX-eY8bDYD<1zum>o0r%xcAHTGi3caYb3<|
zm^-DsaC^PXvK=+%{d(c;ZwP`nS#rj6_wD1STpcBWgDUx1!h~G+kB`?2-_6hi7v%?j
z-|yo-JwF<|H4;W>haxIV&z~G+K6SE1V!7@-Z66P!bvbzBWtAcG#K~eB@kUdfm!V3d
z4dW$v!WcQr(Y51-iRwLLI9<yzU!#qXDd~U$Y8R3JV>+(dvBexiB%G~7t2;XIts8p0
zpqEc)>|XI4Nwgqc8F=7mh4tGuMR9IFv~P8uU>DZ16N5{5SXz`PZFB`uG?_RrA|X9V
z!?lv~JKDsx=u!lW2~sZF@&CtZV5GXWRr|>);P4$~#yq15@jsksEoHHaS~0xdYamKx
zEE#+mdR32jSXyjSC5trrv`&V5%59-6FIC;ke04IWUho^HU0Q-)_q=+I0+XB#FLj!e
zuANGE49yxe@$K?1n7s@vzzoy~1Mk_jWL2}4qR%<SUQ0_y#PXZ%A(^L*(C(EHdZ`>x
zd$?(cjyNfcI^buKu~x`_t(D)cr<;v^OGjLEt*mV~7-t<gB0esnis9g!YDYebI_v}&
zaq>#?ZrHPZSZ0ydmeca7xS?C$a(Kn{lCS$IK-~@)mJq#5^*VX^{u98u#F(0=JXs9D
zZTw7uzl<N>RtzW^0b>her6;(({8-=ocv0_IGH3%UCAnixajN5&tJn=;RdPszari|4
zH#8f`(YrN_?J5(?=c|MCKc;hn#rx9e3=5RQv?T*)^jAf_lhl(@>P8Z=lSO6|+@%u=
zjMZ3fi4~rV;r1_|#tbe?QGF<<Ex80qebyNocou5$#^*4dbH=OFTd6mZ1mgEE6%Gp8
z(EELKu__#7u1&LMuZqKh9PLVxB-v2P3}Tqc7<Y9iEbEAw47mni)Kfa`wc3hDiP{9`
zbimx}X5E^6Bt_EwEQToC25aTA{vzp%MO&{UM&_~nuks0fcW@_6*~Cl)Iu?pM9WTr>
z<aiGflC2f{NW3Y;Gk8m-4g#beuLwd9L(+c52J}y;;`vJsr?8wrn^e7<+gE{L>Od&b
z@5V}9KB7dhra~31{;zo}yr}OuT&ak~3FgU373V7DNUE@=#MfB+kD8-2&x0u{c69Ns
z9SoEQi)grmx)|}+xu}~|U-IH+CIfkG@mKHkJj2piQ5nDkHZwpGv%WOm0|sn`GTiW>
zh|<Y67Fh-1>vZ}=Tk0DV1|b<Go`}uu{d9~*^Z5(zmUi$HYZWLC?Q2~L7Q^>5Ungo$
zByu_Hy;x!($#>81C4XHT$<%{CXN7%3C@e;v@Rd~MId=}b3GV5e#?z6FqeWz2sl^y5
z%c2p;%aY3MCVO_2kMsagJk3Q9v6x1uP3Eq1ZbC|>B6>dYMm5W66+0VZMuM|y;ViDv
zg`{f$@{#zqqD{N3(C&87?~q~Ii}w;LGCvK@V%p1gx2iH{+sC9tlms&(M83v}f6i|D
z@bMQmLs2aN*QLsYyT~g|?yhqg_)rv}T_-M#Qa1NmGTXgy3o1(?PQQ_?#UhdY8ny*r
zYs?psbI!la44o%uVOy5?_2c~=o)Cvy!VfPc8*Kf-3es2tAZHF{CH(K%78%Ddi^I2q
zAe;h}Bqc2u*A$;nj<=`TVVD?Ch%y}Y6R2?KV~4`<B(Yo?NSr5rO2c`$W!AMupfu8s
zczPJ$;>PeRQh~bVo@Xwf!<LlwJ<q0PMnUr?>}+v<&Ry<r;buV%SM%w#@i0G02ggA*
zHGkipV`tvDgaZQ{T{Y*KAa96hob|60Oa?83Zd~B)ZB;5?o}3K2TSy!<fL{fRaW^@H
z(e?*Q`AWPH9W(z&VkQ5Y#)aj9%f3Q3WT)%Zf+P2{UQ+Xi^i$(-BV0%{J(f;X!e!^J
zV7()<s~IQ7D>=FT6yo;tz5(N}6+6gvfHD`ogI<H0Cw=s^;IqHU_~EC&Qp1lflD$q>
z|6})<D$xR-Ul{!vF;DIhLa~`5PNV#^{z4;d%&H?+`TM+)nRGApwPHcRc;5&|d|`Ev
zuyQsNd7#RpV-yRSEz2NEa2bj>9>(;6I6*5@C!U8pk@Vb%SW_la*ba^fzaak!jv#AP
z<!H22T$FMgOy!W|CDnHg#hvv;!(tVahefE`Ng@$R?N{PSRWUou$0&9nTjs%RRbrR2
zga<)<@@q;7m7dapqDx<5?OEYIDsVq1ct9LHs1_bF34eP6XQ@I8E#s^pii>`*Aa6l#
zzl5_N$k)@wv_{7zn0Txxc&DOCTHGqX2r5Z?j-$4o&LU!YlP^zBxMDfj2&PCWpOEtq
zU#YKX%!qBuh!Cq-W3&-cLJ@S#>PlFQrtgMIeIx@EKHwIM5G?A%a~k6tfRf7B6fv@r
zARS3opOH3haW4k3Dp$mLUJgTEV&f@G4>}67lmWHMkc-m@bJj$^AtzLTLN_Lpx6v4a
zI+WikNL{QYLuykh8B#+Jlq*3gdv~b6)5N>GWw3o!^GDG)Gi|WOjeBKqG5p!JzOX(6
z>^a+$f2&9cFliiCrjH1w90sPa_@u8Ys$t6NS5^8m#jAutRI^4SF!SknO^H|@9f!)W
z%sic9VJWmXNKAv^zFe7|T48q}`htqY+L+|elT4W)_Qnn&_576X!&IEE%rl5R1|O0Q
zH2k^}k+H3>F_EP)<ICQ?OdXwrC)<L#J}CWe4}Y2$&uB0U2b8_IFStD+>BmN+@FvTF
zKX+2a11&O_H7MKi4L@j4eUM1oHecO=9AH<cu6ZLEo{y*P&-=ySXwF#cn23n~GuG}X
zIsvmWGTeN)I~TiC`+iY7k4=|LRtF_U2g45!zdHZSSnuyB_OIW%MW1c1YBjeGG);B0
zupA0-s|)@gqVD^h?LTb%eiB0L*qey0_NHj;9eWnFx7My*V(+bXW7ewLwW_g4QM;<N
zcI~1lt;+3lUDx-x|Apk2_i?_?^YLsYV0s^HfXBwXAr`uvX*f7wSP-OrxXpa5VlcL^
z+x3M9u3AW3jXc^$uH2Aa<yiM)5{bErC{=l5FvV^0eA%0vo0_GgZU!H2N*3u$FDi=|
zDVb6?U4FZfE$y=cIQ84UV2L|!B2qO=fCotWOTv4PO>Bwz9WTrNcp*4IpP*g;V!wzc
z3nX!tpeSLSkpq^>HR|EOsaPlWJIydjAn(+VWpybXlr|IhN8cgJs-tnb)o|r`U@k5+
zH123f9i@Ddlh|d@iSP4ayPUNya__kU+FY$}=L+Or7N(4dkGf=&-cZVb;9i&}_@g%p
z)hCdtl>QT;>PMl#DGfI&mv*|JDVL|z3VPzBL0SbEMfXm73#T0t7YW)E43X82$reQc
z5S<n)3Enk-Y_w~}uVG;)VHy!)nown)vSaQBt9^O-x|W){Y=%rE08|xg7P2EzXkua(
z3uS;7!`Un{_^{?hTD1idCbdZ>447w4ilIEGmdz56Qwyct+D*M;Icg>>DxJ)#k}Q)Z
zYC1R@Ja<gT+$}?>0nE0zFoK4bBnzI5dh3l+pnkBZYTfGqD2IOis5_NA_>Ht^-FS#4
zp4}VM$Tt?%jYEYd&uE_qE0V=Q@zH#BpWNS;f-U<*EMH0z_@D`7Yu}W(*CsETr&9xV
zyDjSY{tvr*>?S%AYxR2WF+7hmXhxQwFcaDFAB(BTVS{X{VIz2<zkw?2P9w6ztBbG7
z*b;Ba0fr}8=$+My{w>a#BberZNqj|H%+(R~HwZos%EEBkJGAk?wrtq3YzhFis6OTt
z#x_>FH$m!~V!+RX&Zuq=-rBQU4PA<`YQJ{xG2(`{U&uDh*1aAi$4L&*09Chb=i<VC
zgI>{r;*)ZMn_ptvCHo;Z!J$llcbu-H-T{J{q=CHiYJPZZIjoeOIuo`r51+&zcB;ig
zmnFQORN+uZGt<x*(Wy!7#@f6ovr@weLp?OBt5@Z%2*e+(6q@VA&BHD0v90W(Qo#2|
z`%>g4*K~6Bu+X_=DeEl9;s0pYzHqAfO>Hg9)`dUcTTj$jn_)|IRY{e}vRKp;Qs4Qf
zDh!{zQxQh6=uP?#1Li&zOhu7Bfl=^QH^)=h`-I^B2mo<Bj+I>3{}IWZk&}G-8%vsb
z=#1+sD)&0#1)%vbiijK9mwxyjsQ;b^gK>ibNLPgkd!hLcByn{3xSN2v`uD>=%=`m8
zD!gaf-gYw?cH}=&zK3FFJf3I@zo!brP*o9e2HGp)+QaJMzk7@b!+Nu8Deg|mew-En
z^_`us%m?N@UeV>>)I@0Z1U4d^Rh=F6dOM?pJ!R0tE?hL@u6*MU#oam_<U7b4WIG-5
zpt`-ou6Yh_#O|DS&^OoCLDepBKaggJ<5KL1M+f=(*ho5uNW`QgTye~lc+|yN?m2%h
zkzFE&cI@6eZ9+RHdgh{V5%DSGFT#XP11l}_@M6xNl@^cFEjmA|mh%$D`sy%^++l{d
z4~Okc$K`<{5B2fpo1AK+!5>n<mM}b_7T45~NWxW66EyPg*Yen498(E38>6u`?U8o_
zX-oRljEcCN{m{D4V=cva4pw}?mMN}Gu;f?UFTHi9DQ#*utX~4#w92Rb^1R$^T|)Tt
zoR40X6L^>N!zw)|0MDVZfv$;p7=-5lWX<MF$^=@+KvD)Ap-*O?=sDiut{(<9B<?h<
zeOd4zjQWk|*5Bc3r&%SmKy+BHw<<x2a{%+?G>Z!>#~aVdUC;2}pk8O_&6pS2jaREN
z)%clvv!qAyE<q`cmvD**3qK4&;?dGEu3ENG%{6b_<Sw0Bvm%Dg9aUaXD`C_TSkU{&
zxxBlGobtdnc&%iKG%hW)N_s8sri7M}!*mywU~|{aivr<LMGRySV{qaJ5<Ue9V}wcO
zpZ+wBwkgM`dy_fulHHrQfqtMv(^zKRsjXGYa-&c1S;?jtE#LR<-2bGD<$Ee``;T<K
z{4M^{=lrSWjnmg9FL{!szg9d>#~uNZOUdkC@O57UG5vM#sT@fB^#Va`f$6Y!(q%==
zug2=ZYQtf>yd*gD{R!U5(P4}(t64f2@Au?<FKw_i-tWqR3BoVBI(&hWYs>P!oTIcW
zPUISH^!GDA^<nRd!?jIc=;}Y$PisClRS(zqR!^P3b>v`0kN$y9!a<mi;_kmEu1cW4
z!oN?x`}A}8J2iLP+*d9qIj7rj-_i$P55vFl8m(P7ug9W5o~ML&-Xx_^s-GWu&i;Z_
zKFb<LuM?JG9%gtNVKDZ#{`hx(!kgqhQ{>oGYQMM*xY!ni&A(@1D$v$=PGJ4ce*@UE
zts4Q=Y=myee}k}X|2-1l^4j@(<g0jwbE@kHiTcjmNKR!lh%SLXncnJ8hQ6Qr3i-Fg
zw6PvMfwKg4w0_NCJNo7yhB^rm8sJYBy<$=}NL6kJ6;5TadB+fce?1n@8rJyShC#3z
z9^~n>oS@Dq`R|j)8Dk1^zg{FDcV^#|wx;(~J2nIhy=QVSfqeF(^rhs0u+MV^5e$PA
z3|c;*7Gz*E34<;<c?D@;ZQnr|WutOMU<ZrW`$qa!o50R*H1M<Oz7zWB*thnKJ6(3i
z8<)@f$jM!GkGuf;O?^Hrwg)D(UT|BYVVF6*83zfN?3bG?{t=90KtIk>l&MZnK3I;e
z_{rS_F3kvzF-Rh6KHNZ(=UGesQJ`2&q2TMM2>P*SJG%Qw<V*>8M(0PRDZ&5|Ix6L(
zj=MZn>GyqX7nHqukj{OKBKo{+WA5NT7qP)u=t9S87yMU&KAV>QcKTOd^BK|XF`2d3
zuz_s{E%Uqq^XE+Fud}fA%$L_Fn2W-LX>KfQCi3}B)P<)4Y}xDs#Ex4oiyZ^!pIr+(
zJqxpYCd_UK=gxvV&xL34!Y;}~aVW#Jn}r^z@hdC+zCta~v0v^-UEr)-nVnx9zFg;h
zb2XkB8u23hk^KwXx!+C$0&Xo_uJSk1zQPeo;n6L}?Jk!<=w{UEeb6w({!?gQ3vaRL
zw}fXAM_Cadr4|o<UcV=X0tLK$jMpkpr-V2E^bGJ#mGk*Q9}qNOz9PFF{=nb=^8tkt
z8(sVFy(rMAVfDxF52ir^bH1WJ=_0`|=5n8ft(UJIy9m}>{(YMsapD`1LLoHy=y&Q9
zuGm9i^=J{wt)9ydFI-yp4elSmaiBuD*!zga47xuGh%A;~7Dgz=gW1%=q?_Tx@kE?U
zO&$B-kvK{L3Y{8*a!f2Mc^$6Bnd(F~Ke#SzJOe$IC!pTAT?^$_Br6#K5{#ekCYDgK
zk?IuqSItIq3GG&{oVqC1BAe}12u*mkDv929Ffjsf`Q2?^vlLq_ZhmQly+pma(H~Xp
zR5Q9q0fr8V(pW;Zc2=l4bmE;_>#THye}1mBQr#A<mOOWwERcBC*Na0`VDLT5o6CCT
z!fk;&Cu~l6?D3nPntKk_`m5v*mUWf2>ip1mUf=P5U&-&$x4C{BXT~#&D35KNn5fd@
z4&NLV5B=Dw|Kpo=V4~>MSQYyfwzA>*#r~p$U{w6Kz?0+eU-QU5tb3Q6zjb-{fh8au
z3!-Z30unJn8-5WRdn@8G@(U>9v*&m#5k6=;RU#H!@Kz>$cyX!>Ri^S$q0kmLkR&-V
z=X!)=AiV|sh}>?75#W!SVWYM4%ur)=x;RsZDc%AZTp)~gsdo#5dWuwg3EVWr#;sM%
zp_MWml4R*R6k^nOd+}5Q!tUqejEjfoABCfh{d6V4VH=R(zO#=oriPoT51d4Db_CDS
zL*roU0dmI_m5$Y>>4#G68)OmiGWSmkx_lri-=mGVY&sG`kN|TEAu7{(l2;`jm;23y
zVIGZFo382OfZT3cE!)jRY#fwY_!H0t634(#&|<<y{$l3{OmAr6(w67H(+;ENv2&)7
z^xWWvX4u0j8D4bspT|6C;8jbPic4tz;!;s!T5g{n9$+2#bxr5<i@V_0MkoahPMfgN
zE+Vi{oZIVSi;PsBVdw2;{2~?{?|vHJTXOYW8I#aq#usx1-~`TiW9PP5#)zP4s&&^9
zR&ALt@4mml;o`wlZEF8fC`(#z|4P=oh4%Z4Tc2HadOG?z`_L3So^6Mde!O`=7_^$%
z$5p1f*aUHK<B}Ci8u{b}P_4rup6yP<K1l#?)4BNacs&h8c0xYWiNxTrUemypN;E`G
zTz3n}`S$RiS#9tUVLgd8RlgQRK!0S2GutOV`;cDP^Yl6U%P`+)S#SF!<e!#(T=qtQ
zIt^c?E8J9gK~XhTt{2EP@_uhNnpk&}Efz+-r0+niy2`7{2Jh|SBA42B<%rzyM}QdY
zGv55WT753mpAz)cCz`}DWwtD4PERlVl5${ulu}@XF2*#)7@G90NER!1!3C+?D0sGL
zUXe;!njW7kEt>f+mSv$}C_N%*fb3dB8TF0!!_A^lXpPaDdS3j)wX^Bx7|K$m1$^1r
z_vnDP$!kaYkqN>1@!*POJgDSn(8Tgo*q@e3@=2gf%APHlBSjbgE+fskO_{L{idrMw
zRHEa<jh!vC!jh-%)lpLY^dKfT1vob)+wcs<{n8jvw{42%!XO~HUp~r4qH)MlP|P6q
zG3XNv%D8EZKo;?Y_U$@}#pFKBc_CL!<Fa@{P9%vt-=1PME=}@+kUiUi*&*Ncb@T#&
zp|LYr_h9cOI;9zZcW;p6fm<4a&O0-eBY~yr8lR70IK|bNoiTN8NH9Vq#bK3l4S<ts
zzE?%@2SmX3yoJ~OLSK*#UFKlR#>2l_#@swfAQ%w*%7XAb;iKbjqBtNixP&4TyrDRF
z>!bSu>doetG5YAlASs=vIrK&Yr<o%&HPA7d>0v!kG=y#J{qi7du3aMWbis5$UnKrI
z&#=-Y)?C-q#;B+$315tcO+Bd-M)$#6gAxa=Vb-*bD+3rkqN2d_rHIPPCdMTbt{qQc
zz(oTWtL0~Fk%8St1waJn6IqFAUxj8-ZOpc!Y$RmUR;7$MK!e=&jO5q0V_b}px$qTT
zP5@IjTmgJw^0aW?S<R#lrUe(D{Za2m5mSz?P%^7%8V0OlNS^8sQVxvMmZ!9mPW>sR
z?nWn<d;!pZh@7yQAtwxvOl0%CjCs5<@#y)j8g9R^8lYpv<Sn5c8_ynyr<XiUazT_9
zqhGDe76MH=IVs<6b0p>2pVcwkZo!k`xBs98(png#G!OEy`capcN1^@(xEC2(dK!-v
zA;hOp&g6Gu+>CZm8BA9o#^^JCLD@=2!#Dv>)FL3O4Y=yN-V*nKH$`Pd1B2;!XZ>)J
z@`mO7dzaWE>!wDUey0#j^RV?Zozo2|^*T_O8}U}?%T3Avo~>x`s!7o39P%(%j|VdB
zUe0o`_LGa2r(~v)lW6nHjGAK`82HoRq9_?&`|`b;|A}JvS82g=3Ba!E5?O;Cq4@=f
z4;~37=WS5}&9A>^9?>FKApa6gXU5h$DIgR-kU_ajH;S9t?7A>uPy57dT-$kupan{1
zJhnmpMA=UI0=Dy~Y=h-{(jW^+GxPl(&WkL%-Gm1Q>6%SfZ@HyGG7+@ByjxiO`>*YI
zPJc8?>~&W=!v)11L@{k52l3JBO0;$wLnz_O7GSWgMSVRRZ|Src4(Ut$cl!E~u#9;<
zE44rsHGEItu<T>hkXYejub5;{0m_KRUa%o$M>xG}vaMc4l4UKU%L~Py7AI~x(3GyG
z10*s{Kxxh73*`Mj(Lw)6er=1!a;!uZ$NR`jc=vNZ%l&s(mIqh-<5e8lC}MHNv>+bk
zm;Z+}1bm2mG5{Nu?=15WHiI*tDBuqz5EH%(aG>Tf7<jN^&`iDY1D6f0qF}Fv6Pc~E
z&YJkYJI8=O?7td+zt=+pr8~c}?sS50a?Xb+?uJ^hr4bs0_f$lvABeY5lK(a5<avE?
z)VHe<sUaMN)0b4Y>-**g>|g&q4fyHw{ccYx*#?2@tN#wxt5dgT6X{DCN9Tf_5mXdM
z#4F6YF-U(Mp)r7o#{0kzf!86+?P;xzlraZd%+J@36-o+V)f|u9h%`=r(PI8q{-oGn
zMADSwFv{W3ifSgAHVtrFG>D7pCTeW1+Gl18S3M9H;W(T5^Aba+isNT)f`m~A&vWB(
z`&ke*!NvZ}eYd`99fdYl`++3)6iIv`!(Gl5icO!Dy1iP$0V$LWqSY9(6BwAd1{C%j
z@~ZQjfx@p6z0f0<?~22ENQ!^!B+()`J{{xO%<UJBp@+8W5An+~Cxwjen7#V{t-OBm
zkDWX3>!jl!FNWlu9nm20*`vRV2oOI4M-G9jg8*A0@H`RtVF*$Kpu&1gU?zev1|wNU
zZo-rOWh_!4AB?AyNqu%-<fR}rCKcEq4$7pZX-@sO@@P(@Kbl7oI7G;qpT*ae1wi*x
zawO0alhac{S++@32f#mhl(-4wf};3PbV{F+tC3<#Q;-4f-Z}!s`;}iM6k3UsT;!`O
zFz)8woQvDIxqs21r0XS#FO(zk1__K6xBpez(-@rcu8~Tl1ZmeG=yQ~U6T~K!GcfG3
zo*5EyBu2dS^?wHy!>D@q(<m`T=~zEyX)AeEViB&CB(;T<W%vHcjC?IcI?^G|2UMyx
zK`Mor$y)pgN|g#i4J5IKcmlBKZ^<z%lZoa9xgd+-x*9&7UJ|iF(uX<J*&c~cniC&0
zsnuPpLT6Q{VYIH9H17Qg4mxS*jPCuKk=ym*`a(6wZk1@vh-{AdNe^*g4_H3ozTN`$
z=%*<sj0~8haRRBkQH^MbHC@n+&M()#%&1=+?`kk8s8{UC0#^L$627w>s4rwdH#0P7
z7R>51RQoX0uqDJTFmxz0CT+xN!w6f(X@42f#qBf5XaVc%xL;Xl#MNj-ZWpHCK*(UY
zM`N86wncA)8I^e<c|P>{ST;!BMPXVBZMa3hjsIvKTS3XKW=WSUXU@xdLrurv@%#np
zw>UlKV+64cg*htp$;4xs^keS5$*lepxx5oE6AND5;#*E=R-_bAowl%875DW+%2ZfU
z<725DBuoflxNTq2y2K0rv1CuY9*(5<Z8hq>5+)boSx3WN#spQ21?e&gy`D_>hO53Y
zowX}tk(_pTBDd%4*e#5qLb0&>0)OUyWp)qv9GWtL!_?2l$4yk+U(2s$^sz-pDaM#!
zTCU&)M@3wXPJ44=X-Ynds3>`y&UKkC<AUxj8%tC#)i>P9^78s}KK>&SW<1N1A3pdt
z`K1TJKyNCQkNr$jSl$Gjx%ar;$YVG3-OVci16o}F)6oK2%bWSzVSM)n)2Dv)EHCTV
zDA<&JPnNjewW8ji%umNYXsjnoNA_Eh`A#yzGD^C#oO-#RK-M$1SNQh&|EyjSGkntQ
zO(Y_Db=Hjj=g7Juijw001VGH-DFN|QaWpd~JhZ`%9*MtlUg21yao46#DoZCIpJe<E
zPUvTeB@D=zOHOWBD5|LcPnARW<N@Fx*DF2}7<_8|q>uTeY77zcmM)#td3hA$Fb-hx
zLX&iV>Mk1xAo!wWqJ&cmP(fTgLx$&8J?7c73Yj%BBqE=qn7?!}Kq=TLKq!h%*j1UH
ze}0TKb|yxxmUXX7{EKG!AMqIJy*Zd{6ypr87l?rVpb7<94D3yO^qz-nN?&eqj&w(F
zu74VL>K)=3wqh{@k&XHm+)Bt-x}{la=~N17VciGL9cs=;ER50tVCrWa3hsiZAyKr%
zQ9z=|Cv6L5F+50LIL{vrz7~#W!yL}X6&uU&F2m+@+mVEtrQu#a&w%&dUV;W%Y+WrZ
z%+M$q&#G<%4*NPeIRM8mM)<xjkB923M}I_#Jj!31>(B(7@fDg$wwS>QTNpnk1_o4m
zd71KsEV-7L%62a+@GX1ERH^{K)IdO*HF18OU_ogh6Wzn&{&*o<0*8s5r~sWlnAvlz
zuUyiMNXK6skQRe0CYI86nS<^#fX6KO*B5bsWtjk^)FdGwmxr@O#qdj{7K9VE{>2!?
zE^=PM>CG8#lDK@pRvFH5dK4p~RaG(dMdTlT_;L(G7|@2#q>I|*HML2WL_*;uL0*=4
zc{`kct{nOc-Z&)?O;;suSs_^$6A)A(eNHH=)%dV*@PkQ>$DepV;Q|01uO}S6I@3T)
zWe9IE3bf{^ShtGOihg#?qcZ{YI9L_Ow7SYBm+%VL3G;^4Sp(mj&QsTZ)?M@M;m+A)
zUAs<T&8ekD*SZ?ZqeOXR2G%y(*P>x-obKPE?Gq&`ZBU3cPs6oMiLvPl!UU}B+V|sc
zpDz2UD6GTzzDJ>AQQbBslXbC8HZp~Y%skO<Fz!zn(A_Xd0E$CnSBC}>9KRW$MXw3H
zp)}Nhz-LIfDUD7zVPB4^a7iQaXkziJjT$U%^LT9EGR|=8JV=?d1+zeW25RzGVhiec
z_uEy<YlM<Sb*OA8pqM696O%>QSJB{=hW4){ctn4WZJ|#$rkuWmWPwl5xx7Vf^F?20
zPrMEc;ohjh4K9C;iu@L~@;bsdjVfs!6f(?v8Xb}_GN;w>3;g|5hpmQrlVHB?Qbd65
zdPxEBMzk9BwtVA~;<09^h?Z-;{9}i2U=gX^x*;WjMcH=Rv4(W0$_lncVD)^eCga^m
zNW<9XgAa4oQK>6M8IGf<hHD97FXKenJ3iIwC7H<-Ny!E&Nrwof@35U^Dh8)vS>VXQ
zHk${$vc^ekiAt>oFIgm=GBS!b5@>ke?__8koN>fyTt}+d<wYjjThLgHY^}uZ8k^IQ
zb8^=*Z|VnbO!2*b)?x95VMDDt{;TL}pDvX<a@+J<gDiS?$_^4*#+k9cv3b71_07@x
z$`R2qz?J2Mf<9;wt%nA>XnzyyDn~{)J?NdQCqLZkTM=8N;vX<{QtH?eSgDOABKc4w
z+*e{271R%T16QjSP?-@d)^JKk>S~1udmjrCJ$6A|Hx<_ikzkDoNTl6F4c+p0A79u*
za2qR-25OYbBGmPSfO<2=zWsucuA`O4I1P6=SHkPS%F-oBSp?82XPIpfQaa+C3UG7P
zEz4YTpLl<Ott(wdyAc?9P}xSCoyL2d;ySv0c@zDGmPeEUC$X-21!sC|5ZV&m^wKcg
z_Mvwb2kv1Rc{8D;=TPIzFU2+`9lRwSiJSyUo$Q|cyl;`{axS@MDhGm&t6j8dla%V$
zawkuWBxI_OpnqC~weN?amsfm-d$yX}$$49DN8*_lWLn{EmD>8%%Hc-B+nW|Q+=y4V
zA^mH+<FS7rEKP9{APFTR4!UFfTLawG<PO$<(?$2xI@Y0Ga=JyIQR2>RUzZ5?fTmq3
z+f6W{U7fBkjz>cN?*sB<e4~t(bh@9HEbR|Jim6=9`dvH~Yi+lwNT8H%Q+X^dCf5Ea
z;^%|ppKpQB{vo|pjKrVWw)uAu625A=6BGyH8#=VkdJY=svHv_+iaMM=IkrKC?wueQ
z#ji*?h@PAhe@Ns@K8@A)CQgTwH^thcS@V{G+<Q;3;Pn%rq#e6tkB=zN{4-8_=Om0|
z#WfIL0m2BudqEdJi#VhI3@lKv6!_sA-Q-K0mL!aM_V4b5JH7Q!Zwsj*f!JuGJZEcN
zr3B7s5>vdyq9BF#$5&d`E+or1gcG>Wy}?E3a}-uz(%Db)nZt#1sHDt?^P+VhJeOam
z)uLweXJk_5@io6hE1sz!C9DH}_2sw9{(Xjzt*6>+mA-DJ6Z)xCH0_Ow(chFV#Yyt$
z!uQI@3t@<Q$xiR3-%}(k<)8d+*2cf&P};ge22!!(^yyOAMe2F96rTj-Rd#380|)~I
z?Eg5^jKVP~<tp^=yH}J6%uxE^^~+s$f|^#fdg+Im>@w%$fuZ@GMbfe!SOy0@DYlH?
z9_7FFI+7yNrL2UW|KO(!{Lt6Y<CmeaQ~XsX=7nbd;pG#uz)-rta_M`?y(?HqreWrJ
z0M2zLPO#fW();D^PUTY+EsE!fSCVT`G*6TaHj=RheG{ZXl_uosJaVH_7F_f!;VJei
z!7Z37s4L`QAqo&8XiHGFCH2DZca4XlySnVlpMFu^GWk7JmF7QQ`oH7r`dI7#@QKft
zAl`?0qJLi?LaSYfvuLmFA4$EyGGzWNEBW-U%0t%gb0A7gI%bfr&9XBtv@@aSx7XXw
z<m~ZO_UB;_h(^Sca?o#$MhGi;<ho}FUSl3*&3u`9*MuDmn~W!XQ$v&mc|QgvXkYGm
zjY!E3>ihWpc9ff-wq_U`ecKdi{`Cd$<2&Mo-?yca)ZH_;*8T~jJcPp=x6@JyoAJcU
z>0xm*;k}6D-yjvt9;8A)yhS)=pwn>CBmCa~yxWnwTVz!@ivO2){qXEZVl_1UqnZ4W
zQSY)8$sfZlketFc9p*+)l+%IqWc@`X1m+FvN8ynX9s!ZY{ZzT%fV`dmJC%e@*7&fG
zrZH2CUhw#GD8@rI%f*9GsVow{N@qklb6bft-6`+$YyG%CmCEbg<~u*5r+uZC4p+7O
z<vd-9e8nIT6>nou1F15MO=>?tWRv5AsI?aOzN9?<m~@epx1LB9(L3HcdNh;R9{6)}
z%|c4(dtU?=M9Ocz{;fZb?18)ioygWm8mn>|f3WDzM4phtbVIP%kNac(Xwo&x;R0n{
z)yD$O!*iQymAa2irx+xTS2~_;VI@;g$X@eUJ)Y*p>C!f3Swy<|U_f=!qkkH_SDii2
z4+p1SsegJC{_yw7H;Gd7&FSZMwA}*)4B4*1E=)^GCmd(-PdExU$BFnsNyYL{i;?V=
ztS{~)R6%T`*Y`bm1i&>T^4~wHjIfJvv$9xP`>`*?{rY}PiYKwg%r3C23lwo}Lo~TM
zW1w^fVUDmE0b|Ed<!rLZw7CO;-QN9A7SpzslmJ@eVNVq$aD*rEIWJdc>nU{^5hodM
zrOSU_Xr3i7IWkhWW34<-&&OVG=^#agMN_0q8H~&by_x*TB+38(a=m9vb)o0d|77p)
ztM`1}wnQ=nSiyWs@3##F)BK1?nd<zly_tUIsiD{@&s~Ep9+qq4DmwB5l{vJQRfy({
z+oPbZ3AMK)3<yYtXT=}^e~Qvn15Q8ReT=fW&^>1qUUbyV9n+tl?m&D#q{iou+IQoo
z^8rh@=(DL(f)-D8L<HW<ju3F>laoF0aik#Q6}muAb3|NhC9+;uiZ}u`((2W^exS-o
z`P{cRNQ7l-o8lN8cs7x|K<MF=L}DkKIy=<mUPIOGU5CntWRxZL0MU_Sa(YKe51^ro
zIYh{L)B5N-5VKucGxK7xJ7L1iui?HK$iBh!=Z^LB$q9H#+gwdaB)+Uy&{!s<i)q!^
zp94!_j59NO++HR|95O@jQ1ikT$?EjV3kmz<eoXioG}WXn1bu!wDyIoB7f13}4op+Z
zj@@pAa+<V|LS=)5CzdzL{-Bnc0ejGDMqTSmMMaEKDpZ{|rfXNm&W2QA3Ocy0R{9Ki
zy{+B)t^2T`Br;fTl7C=bO%V6jM@4h8g{yX%NM%AhyX|Z|a_5)K5Hj~x67fhm{)6<3
zyY)~MahBseQgS=r0!Q?{ihy(&FrP!Lb@&5R3aMRVt&g8jTuFY?&1#Ix{~f)W`S1E?
ztcqB#@Fv|JPfQ<P%ZFR??eMcuW*o*nO#l52?*E&V>8H7GP(prUz-=f1_NN_`-G*T%
z52sb&nHRkqBSb<imR3y>!hu$imy3!O+#Ar5M2rYIFDbSc3u!awPf*?ocf=v=nVyVm
z>`2l9See)vG!tOzXdYEQ)Ht1Jc0bPuTTH6CPZEiiBE`#Vj99rys>j*=BdoE&*TlCl
zevX9CxD=8>8B?A(GG&D1qN7nwW6HAyg<=OFka<3Vj)PGynZj~zyh@DabIP&*9fXxD
z!Xt-2uGXjkX4fNv9*hwroe~g}a^%p;q>`Ych@x^ZPb>I$cnQiU3>X}<ON`ltLie?^
zir0x7^rLAAC8bV{qgca*HSk|>@eiQ2t&e;^6U=m|@4lJI#LlP;%8yXT%OiBbxizC4
zPxA+9|MLX$&4*bwYRY4k$$W!U9`lu@2WXZvH+vg!wv_2a7rRq3eVKdIPZ1X`Zck|5
zq(oIXAoap?&>dfQPl=I1(qG!1&?!Hz0QY<*ft0L_(1|A!^yg!Cxp)<>BCxp9EbXy|
zHv9h9VM$Y((FQj$P2NsriIa_25KALinCCY!d^nF?#^7rZ34jD)z!~cAKrMuLO<^-j
z`l8Z-K0ca`0=iA=1nFnnN6g63h-dtVk!taey;;hXEf{%I9qN-%br+=`<r+!473^sJ
zlOg7xEp@f-_@ND0$xM6A1m+c9uf=$1Zi8%R-|)f4^A|%VAuIw9#R}Y`;g2)M_~KeM
zTMCO{wS1!%4wQg73=<EB#hI~bOA%NfNH$>kSwZq$x0mPWg(VT6sfGY<frhG}A;qK4
zXe!}Tjc03TkEekn0^`;vPwPFbpY)Bid?gpOLy1yd)x=S@OK1c-w1UrUq~0Hd!(7UW
z$_`uuIgZ11!ajR^|GO#m;m?}Ti@%58u^?#-h$fZr8k5LPeT~7HPIWgH`Bv#@OVo;a
zi+6%H`E(0lhz%3A%o=3L^3>2FikVmlw4fnl<QQbk^Yo50D&DH;?4uVKF;==wCy$n<
zgG*L8*iUX0xE|*Q6Zir=Qyf?suh^n~RXo53pf=U}9L96l&ebyHGPv>MdXR2W<#!vT
z&Q|=q|EZXLz)_629|!kLBxTzSLBg#xr({{PNukWH=qrneADW*+K;AB5J?~(Cq~dx@
z_a&sSRGe{vV#U8GaMk`hW}h)pyDR=t=~=5CJl^(ld2&zXZ^2|FQZ(($0AI;1G%L1|
z?}gl@?I%qcK+{v`YZuM~xz}AnmPo>roHDQ|hJ(UqcZ^626O&KM_1T@vA&1}%<$IYP
z?m$V&78z9gd#b<7JW*GcE1*Q@!=bP19Ut${;ZuF?&*5jL0^46vbhK~otUV!rm-9up
z(~wN%TMY|SPH=-O$Ep&U*nuI?0f9~6+i{2CsdrLd3K+SIWq-FYl`!6opJrxBag63$
zD8n6?b2cA;l#pxz&?;77{%$@IVVNzzQt6{aPskq7ZB%--eU>^Z2cUjBQrLM<P#8}b
z)+=k2(^SEvMIZ0D*>`;egMX#rqxVu;O7J0UIgS}P+-M5wT5-{;*Y=t)!$*IJPzqc+
z^cE9O-We`WA-Tk={)r=hbSBkBTsDxIzWvMOYQiqTd)}{!Bo{q;S9M!0Jypy50H11O
zlq6_~>`oUJpFwH}K$7C9GWpX#TRrQpEyWgdOM7#WXKCj<3i_SMe3#i{Hw@WOB)(*w
zaGNWd3qCi2Gs7N*D5?oHlwhA97<EIaht!6_@31&Vq|NHNVRyNML<-yuzvF-XYsl}u
zxWE3N8Y5_lBvGz}Z$N)3Tn|6`>(cm7%c5KUocnc14Lk1jm3R9xwM2mWC3AhYp>|wu
zRA#dj;ks_=*n6h6MC+4n+!H!wKn?;!tkcg#+}(*I)CpvS;UM?Eq5~o+b%5p6cpoy7
zyTs8LXi7gOxpyY{{rX3U0-7KsMed##t0e4jC3+V`<j*-dAf5u*x7sMdgZxQ`$l4M(
zTak*U4DK<pT;M2dSdSO$Ox!Q=-nU|1fo(%M<R`F^h4qnM3|^pZMJklqvW&((<sB{p
zpRWJ)F_?&=440P;OBpz)-eoq_lsznL+ufkugTS}Bf$?u_h##{-?}%8_9*gg=NvO^X
z7_Wm5B8g)L<gKFFg=v%)Qcv2WC2IyaT4HHKY_q~Awa0ARYGdfPmGe~APIpw6D>d+l
z*>D4OIK%9Tt0$Jgk$j@#1R3SL6!z=I0B%&7@~RP&#z2sjwqOW+EFtAonr-4#OE(uW
zvJ4xQ#+B7kVsZtA7k^|uu#=ySW*ds)xA{oos&wfYL)rjnj7gU%XXmANpi|IpyMW^d
z!s*o<n%m0>oQH_wCdY6AG;lU%!xZK`G75z9J~VNFX=9LM6YfsV*loYSW=lMy9X>R*
zdQr{~p2HI5TS0ma0N#(~Wo*9o>Sm6Utc_8upet95D>c8RYKF~{IvFB)iqyg!k1wZ}
z5X7rF+p6DmztK&Rx@D3k0E~o@b#kOX#HZ$6U#fQ#Q%g{42wE5_k(e*2;+Ijj3e0Mq
zJ5m5R*NL6DXDRsHaKB%ZtS{RLhfNX1Ol{75wW!{)L}qI2a@Z|9W|na-C+JcHr8W{X
z4B<xoKc@^ps-tYZF-Xfq5n|iVyhrJ;=w#IC2*6ajlnu!wy~4W%_Q_>FD2X&(($!WN
z(vC>S^>SwL=MtpCb5_%Rj8eVPsLm?6C(D%d2ys2Q3N~PAn>w=;;?oAc8ABW2un#?v
zP9Y>VX{pL|q)vI&%liY5_6E7emR;78Zf-0Bo<g6}yfVz9@Kn+<A>?+QFhu^Z_Zmii
zvhTdfM6QTnw78qf;{EZT^lHUmv^iuWs2XwN=(<UAqVefbF%CBq{)JBZ#d@+*LdLig
z%;;#7OqNWMZZC?9=e$Oja0hXrL)MpI)XHqA4#w!v3|%^Yx{9p9yC}o&8u;bPgW4rZ
zbSL|b`KYuVGoHEqr!Adogp_|0dCbFdHN=xpO`n7+vL7QoF8-2Hy%+P;m0;F&oPMe)
zDCT!0*<%3NQHdS{6Mp9TW-h7T*&c$OdJ*AWTM@Jmp(Z1XROaQu!@l!bBK0&r)4`>g
z;iYknq5}X=%q#ia?G<x)YsV+!lk9(54EBhF$@%Z=^!5PZ+T=i2G~5sgtK;FR6O3~$
zv)p}^<#wN-KHDn~r91F0BqNxjN`sGArKMX!4FSb&d39jOHcE_m2oLnwKka28DQ+X)
z>oNx3bojoTtGjoaUWK7vUonPhZ1B;lGVeC7r*my0pf*u<`nTuI`3(-T7%xSuzOcpZ
z<2r7$soq=NDAom>ECAWNUMTfY28s|jI?z$Kx<;%W+C7i~t#o9ytsz=GtXHdR3LHw7
zPNrVhSMRD$n)c|ft0$h#AR##-iqS`2>_BIg$=hF3X+g1I3n(72fg5rpbMxTwf)lQ;
zKG=E&A?IXW`e0yWW-z2OI%|mZQlBVMAF4<^(YXK8d7SmVb5b01dN=Z6Obi5f5JWmu
zVG>=5o+Q9vh%k|jJaNHed^l;`zZW?@2@iDS4iQWg62%(Hm7d)r&<}wNOMzY<SqIay
zHvNHof6#6WL%W(Y4MT?f*_A7r5cf~zZp;Y+9~Z#+#MWwi?tne_C8f#XEPg)fqfx@#
zKCTADY9wQ46oZ^%Yn>(Z{yXFVN|tKCiB{&>!|`7j-jVdY0w2$`@NJDiRqh4|RteGI
ztQ^peaX~TVrtXtcHu(B1{%($S$Jlc`gnn}!R?9a5mYcVB<>8XXtJL5QuzEAS(YU|I
z|C2%}hlb*p+JQ|U;2jvjX>G`rh|5Ue)Ig~6E2&noSMP)c_nPmdLE+hF;<q{WZ?EDw
z)p;lc`$;TU3~V+Re}O3Omdfwce%^8AS*r<H#SzU;3o`bi9$7_m*Cg1%cWH~a$k&o6
zsAq1F<mf)cFW*<ZiB*Wm!~niJX7RKOt=eT-Et+i{g6}$jm{UAA0G3PtZ<eLXYGzWe
z_lHXdZk@R+OA4+MwVQ(`^wKPr>vf%vFeLsJEVxM#x3O{8`;TZj!uHf2a`x})X<&ZU
ztM^_UXWkV2Z_!K7w&h|7dD!;id@5PIu{{h^hkqImc5%tfaf<Q)Qo)qc`vAgTJ0>2`
zx7bm6eKZ*5L^FiLH)(|2JL+0)W(hN5#3Zv2<gP6ENQsEDR0t1YvgKyyXA>x83Mdmq
zwIAgVuzh@Bu5->DKQEnYG^hm=f~<liW2JBAMWf<{$+JZ+EBIcVKipB0o1&x+c*4f&
zD@<Y}5<DnUR;LARVe6UaH4|NEJAW{0$A?&8sxxAiY?U;eKTSAiV}!$&Q~~#bgiEWq
zmjj{nXg3t}EiqDnD!Qw9gj8CwWQDi%?o7Z{aS+22#Q%%!@$s2+3=_o=8Hc;#GD7&i
zU}GBtH}YjSW1(REsmR^74;9B&Wf{_Cv@TxU%Ohwe4hJJ+e>(uX!an7rDN%FBbD^Kd
zQm@2RiW2dT6cNs-hq$@`NZY7PKV8aztd62`rVjF_zh1PzB4wNaqnIeZnAootq4{jF
zhyDsHl$t+{xZj@3RL#qRIn<RY2(P1L%~7QKmx2|)C`S5aw_=R8M3}P4I4-sgIH{%h
zO%^Y6Bz15)(g1oEiIUy}z2lKw8Om~zi$qq<2Ejl>-o>9vzNd|;kMFS-zg#nLpqlui
zk?Nw`41(vj-Bf1!#J$*VupOb(k!yTKbOd1Xo{)Eq_T|*H>@T8fp+a2`Y7ZN`D(4!L
ztC`&lnpLG;UQ5^#^<zDHsB{V%yeZV4U;}K$u3U)Fa_A2C!{Tq`Un{IkOqr*VmkW9p
zlFp;irY0<UH#tFUqAt-Lfqw4-UPw_7NB(Cb+cKAQO}K?yp^gH)&aQmobF;jJ5u>dB
zWGV!cz*_Ny7o&sM9Pbb^9g*qjFK{{)tpc6DBE$bm5}q0xPHDctO3@a_nP=u&yy>tk
zm?c>6cv|5-8YC51;l0QP@rhxvIg`R?-p%(Mq*WA7d69{7khTLn_au7m^ZS0cMcVNh
zGRh++?ys^%IM^$_!`~s-G#GqnI8YAn@_PL{<lS>5<i;vu$--jydHKBAoGETBnM*89
zvzH97Tb^q`4Aw>WhYQ%UfEBmUqf4hGn4~g~=V@1wUvrMTj4aTs`1Or(>Wym&Ug0kp
z^Rbr|woC1{rd7PMrJuAaUUZQzW5m`6&?8+Hj4}D@Gnc@5MbG2Ob(!MqV8yUM6+eSr
zRY!?D^=p5Bb(_7py16MVlBp)sc4i(b$j*D!`lskQ4I1ZVp-@~6dyHAJX|rE&LH(c5
z?|%q1WUI(z-_#eRTGIMh#O(9a2{*@RV}@!&@H9?i-zkGT4^O=fRN5=zI`x?PGKaO=
zhO`$T#z(KKDh$lSKDRr(d5np*ngP2OgKaK)jBZ0oT4SH5#=7E$`5Q2GZG>7)4mW*y
z_*m{%Z!82m6pcT8I6U+?Y{cVs#4l_#^mg>ct;g8k*s+nO#4y_&xv~1&3C3anYdrHd
zIv+ZGUmkotEBrkz{Aay#wySa@t+$_W<jq&(oeS_oYDVL|;u1oJVira{Qq{xcEh}|b
zGGI^aeUbP%z)cH~qHy?3=)cd5F^pu-6B6R)Uf(2EYN#j359Kp<*A`hw14U{TX>p@{
zG|Pfc2c*t%fSd#?j~_1ML_}6SS!Sc`CyDu*J6^!gyruYLQ$Dj~J+bsOQSJW25KK6&
z$P7>jy3-`Aib<StnyAKoVm)I&@4xn(<|9+f#IxJT-5a^r9+;Xi;E%RNsxCx>VPS2K
z_xi6p><itEhaE+V`pNB)VDYEKoeA0y=L(sgj|9`&?^m_^8uZWc*)SRF%73;70gl5~
z#3XrT;sbEev`JAVyYk@rP?8ThCiY@h_FNPU4MPKlhR!GaiZV>7@zwIHtGm0ym&Tx&
zGyo0(4L=W@wux2<uT+{Ga4(eNc_92aPwgV<`-_3W8)cL|9P*QwY;JQ_=oCDB(_T8*
zR*Lm|+rVovAp&KTfG>S$Kb*RUTh@P%iOvUpKXzRL&TiP{j8SSYsD>Db<jn%KM+qE*
zg*TK?Fxyzlm>pzK!xNHfg!oT_$0%uj=Pq?ZGI>F8S4i$(T5sF_XaZWvFghRm;bbhm
zRNyV0?|ov5*Nij_4rvIQqzT47f-k>)tHEn29s<XgHY6F`)>f|M7)Qt%HahMbJ|OeG
z3;H$kayN!p^UI18`;Q~O7Mlp7EK|#U>siV-^Sv4Sewtd*%+U8Z=Q3@IGva!YR@^Fw
zW~?*rRW4oMOyYRB&rdkV)_R=&{k{498_S9TfSEE7AiW@9tRUiyt5_1C458ai%c>DK
zBi4FDwPf{>H$KbNNK^2oAnyGlqE028@c(-CdrGw1o`_xA->~x2uG{L5uhRgsV~2^4
zRNRTOeER+pDSbe?MpZ;<b@IOc5O`!TL9a@Lz)@M(w6CH{l54>T4>Mu2Cq<{^D5u2n
z{|mNrh-<_mQ*=Jbpj7x>*<J8JZXdHD2T+xc6Ao8)_g-HfKumFP0{^xGgikAaeT%63
z=jM<bnzca$oM$sf38Z-iNcNkKQ%c}V1Ry2O%P5nshx$>b;MOuT2a|vtpBX<kT9<qr
z6Jv>3=DcP5RC$^&cSz}IYKgY7LB_($2GlDB^SV~fWJ1|8T(M0%&NQ7(wjJC@_@IRj
z!gm6|)X=0^_B8pG8O2zwgM#g0x+l^b5Z^}4d!CcU&UM^sU{-mZGH(vwN^=2T^Ubr)
zDG?GN*_C4HK~Q*5`nXMhsALfjH1W!-t#H;TT0^p{jB|AZ%bBKs%{$bQB!r~-Q5^8C
z;72Ke3NXzf=)sS?&byYUFTEn0NWKE_nD=6-PHJ{po=VHitO9083?4`8pDNM$*7X(O
z>DQf&mOeGL*u&+taT|T*pXWo!#Ss&zPS2L7rM~B94EzO#kBQ8ojXt$D!zy#9A&Sz4
zXX;GIJQfWc+112h7>lv?+w+e^2k4ah&DN2u0d<+x9}6Z=N-meIX%9tTIt9-Q$J@FP
z7!1>B{R~76wJ--RlUq+b{N32%O!-DUKl+shUeQF!7fP3!-~K`l9?$dgo_)JKd5>ke
zJ&jLYIkzOGdL^*wMq-Q4KSsAxWSo1>?nsBn{+;<3`ERTc_>X2YYdDZ<9YA1?89=WS
z$D^$Qi|^k254qSxrl{2vTThP{MMz}?7IH<9ML=WNJl9UHxRnlfriD4EC<#@Um1z5*
zaUwYz#BS!wjNhQ~G7B4|!OP05cQcRp)^WJ4cvRq^=6Gu3*vqTzD1k{(V)`tGc^9vb
z72#l@Lp1|g5>_1Y+-Aj&rAI(1`0u=DlM4pmL_2emkJ|=W=4RHZTg~%D^O_#{J31Wa
zoQ_DlXFLj7*mU4S5do<U+4~_|bOi9RDCk=rD=|m=8I9V#^)sCW+!S^K!*LM_VT3>v
zSmwWhmbks>{|vM?3PdE{2><Uu3rp~mcuquMCYJv9ytqlrT<)vcSc{R2g!i{Cx%vDF
zg2B8nM?6XqLAq*KQh{23+wp%=<Gwe2qzj*z2zSkZLd^xMPnJ<$Tiebyx?{pop~cXP
z$wh`NT0ox<uV`iaKE~m|^X5V<>uVvmZQmCrro{bHEHG8H4S`pnT3*D<52Q>{<1$~G
z)_%D_rdQ}j{{-1q9_2&2g$SWbL$!(u@$fpRCFS2&=V?N0qXlMy+j1@OIAU=0k?EDf
z8m?6CQfpdrUj~eZm$PfGV`_EWEb*;IBB3r{<DQ`T7NzJHtEt{EDGui7V<W58xbriW
zK&S0?Z52$d8LTrbE@bssc~vB+i=A$mZU!(GNj`Xrw~}%OZ7nx>13ZlqUST7(WU64Q
zryF}RUs%U0>F{>7bLcq>wc5wP9U(zF&h5ME?35Miw;?<APu_bkjgYFe_K>T);H(3c
z5W@7^r-|aVio$a1gN5M4DEPE<x`#e*d-0`)lfd8f#u@4w;Ih}V7mR?-xLMXQ#YSs-
z#^t5HC6;Cq(;vdL`Rk2KVjoo>`@P$gZhIfltwwNcb3FUGC6A`5Hss_{Iip0dDwR8F
zum;&`rd(I$OW)^_4Uaf_`a%LzA#5HRBi}q$Fba|_*(3;*D%W)4RFy~its4R;x8N^F
z+KX3~9NWZU8|*ocr64PN<K^@4$<~1_@0Il9C|3HmSsxS|l&dM`cP!7{pO*sMW1#;i
zgjz|*F;#_@1TlV_?^iX0f+L;*JEM7{r9rQN*Mc6+U7!6YK@gJOa#6!}r%#ob-lsb;
zh#EO4cQ$PUF)&pG^nWTsWS&y@rKnU>nJ#PQ{PX-96sfcw;h~i#N$HuOL_-<LYPVnM
z?^_g0jRQr*{jKxuDdWQ}i%;M5#|-zPn)ELQ`Tlb?HB{~eg|Zkv^Js<<Knt<K(?PZS
zKb1|uP2Wrw&{Ez0ra2})LR_Z<67rD}i9s3g3y#^X$8)y{$0^e3F1H7&#~Du@P`qE6
zNx+(ldsJKB=Q<o0-$b;hr|5rtEbBH`W(pxpNj<WCL!AAE>&kz^>$ubZ0n58<zaoF{
zJ(UkVoT*EL73}}qw30)f?B4}ao-ibZS`Cu#1%D$EKVuXq#jJ0!xYzD@yVtMJ6U!;R
z5p@5$f^1+Xpig*SrRn8v{K0luF#cx55UEG9-OaVBc0Irl*foE_R9eLq%{5}O<Rta?
z3xX$V$eQG^3hhAQGo$jWb4S2CG1;n8Qf2aKpGaCLlkmOs&{}YRlEk=;s}Y~rR(t#`
zgQ%or%~Yy^S@7q-#jt%{va5#nDKB`?))SyICr9Re+Hy?q``5<ScetdkQkU=NZX5q%
zyV{uwX@?N=)7b>Uo~Udk>YX$;I)4C?kW%Ad1x`mlw&ww=%3f9AY{QqyN#KqFpmq3Z
z!8(WGg;p=eY}mzW<&kZ^bM#%B`0(YOz8ZV#hNE<az5JI}(jk4-yu`A=sk<x2bExO>
zg9_WZ@cr!5uyTz@=8dRaJEUyH?zSerc46P)AlcuSLn=3c={HX~cqO?Y9AymC8#JBk
zxZbu5Nr$Yb8${bWwEq#LcIh2Em+Sk?VPx0(6R@SH<KpXN5z0+yAT84NUl5tBoW2aS
z5_f(b*C+#~qOYlNC@$$;Q@-^de}*Rv@Pw8YZu06o@zrheq3r}9Gg&iOoa^%;c7zf~
zUO8{XPq5iENTjLAX5BcC*u7g{DF(`QiulWcdn-<8(BuThhyD+RhWQ<r1SzxE$gAa!
zfb+z`(KV-py^1twHyDx-d+~{TDMNcK;}!xE587g#wwnSWq(TOz=Fs?<jir;Z8bXrK
zDWAj%;S`)_Qr^!b4e!U7I8^g!8^Kxwf2C`4CFz7g=?n+TV?rspS*p;%Et_WPw81%y
zA{E_cS{B*EHuf=LWijc&Tz?T7i_CiGOxqM6G1);L+x;Jr2b4aU6yfA_KbvkL%JjkH
z44Ij1;;*Tg$}gL6_gaRjeYa@1XKxFAo(H0dtNSHZ@QF^a<V0-<;<W7<rUOt<EyM37
ztm#?JJ&<M_4+%3EGd^M97NJf?!6*%>XtGM-o3K<kESH;^(N$}A05-gN8CWUXxCL%u
zhsw18o}WIXQuQ!aR-QvgA<$+gg9NwaI5^709;e5|2XJQi{X<~B=p5Rxh3#Me7Sfh<
zdxQ0)jEWA<QM(21BbQlrlvydKIO=B&Q+glgK${uOG<8OrJhv5L$Yk(<F30XaLk-!&
zslBaYSV<vtMk<!cn4C@{c4TFFED#I${bya-a8N*(L)D&w#xausM;Xjxx6%MmbDS0Y
z_e=#uscIafYE>!n1fWc(MEN3y1yxBJO{_?TjZtLc5TX4g%FV%PEyPU5p-5Ays84a?
zEiA+-rYf3!dG$$HYo3zM=!v<J_>=4pSxUI5sA=PDO3fp^3q#?p({fZKdELgx{9|0(
zb+9cAYYH-80k^JbNIr+ci70X3f%!&3G&PENhW+|0=PF#;!cLj|la%tgj&h9U4^xd`
z0giI2bFG`T>@xFW^~AO34%8wl$_Hq9G5A9xyN6gfH-5R|Wh<M~yoAG!NPG(n;3se7
z2z!blSw)bPVt8*_B@Pf$!A5GX9P*8VR2NZJEafUfV$%5b()+~9zvtL2{lurvX_4#3
zS^F2=XE!vPY5MB|zDktgD%zbx$WyFn<{Ty0RXxWY$8S`>W;}N(<QzAXQqx%!&?K(i
zQ3)%p)+F0uqlz`aP-1P?nIvM344ri$X`DS&a`^U!9qgI~3A(Ge5*Db39UNRWIXaZ%
zW(zrtb_1p$c4YH?2s&*xNsKOYLGPup_Gla9?;MzZB#BKwYhyp<_9&1|AJo2S(3>If
z$5`|IFEEwF7->69EmwwSjx-~~@Rc#=&VooQjMe^f8*jjbWK+A|6Q(1<&XAzD{n|`s
z#!wb$1d7!C|CqY#w<g>NeDnhbY{VGdFh=+2kl5&Mkdzcj1*8O2MmM989GxN^(jAi0
zDM$!{3WA7&@a6sao^!7A4{X2ey7pYpbKkG~!7$HPDhtm=*_@&M@>8uZ&8CSb2Ieg=
z260e8>cbXO1CWsUk7gLw&+K_LPvsNE^IfA<m|_39p^6fJ%$+)Z!dul{Kfc0#!yl*W
zt{Lz#iD}pz!$gYB2L7WxRl>t>E1!|%sfmt(_S>I@i9h2|1EbgqqO8{TZ9bQg3J7Y=
zaB@Og9jRO8!BN~0E_-Ojqwk!yB+q64_ERC2Tu*)OB^$@1;YX+YqSpzuPJFWj@cV{D
zV)n2FHj>LS^T{uKE+ZOymYtA@Ne2;si=2InVtmP+ItO8YI}J(uFT+pJms>_fPNy2K
zw*IyWmu{|b{9CL&m~9o~;YL{Q+;ZWpoq1EQ3iK$VgHQ4J_kmAESbrPhT>|X(V3ZsE
z)bBOjIwai)D6IBzKM{Q<r1}W+fYII9Ga2na?WGy1yIVwvJbaFB@!_WUK7e#~rQvF&
zadg*%WPgW=4g2iG+JEk|f6u?dhjI`vcO^Y=ojHBLP<GtIX+44;Sk~f2Cgn{V;53%`
znC1g`WZSnKMns2;UmOrr^Uz<njctL(RVvEwsMXGd#;sfO$$r?O$8Y=TOVK~WwvYh3
z1w#BAB(nhOiOr?x`lV;uR0wseTQZINgLi7JxD?qx+y|UJE;*{dqZrFk{OWdYvucbS
z6>LsO$}u*Up9lD}ehqzU9_>30jRZE3t8n21C&q!NH#pD4lLRNq+ZIN6Twqj)z^AER
zMxTh$s6d!Cou}OuzJH(h9vXc|=mu1;2qSTcxEo=O8F2}e_FN)}{Gk?ZKM*D&{VX-m
zC63Fzt?d4nE3YAq{!l|7Va^ysr!7Dja5oTZPZytM9-pC2(Y3?Utj!&^8`d2d{)Q@A
zJ1`zRA#bhi@>yd5Fqrh#{26Q+u^-k+R17=-w0$f|*=6JGH;>kDpFTjQ(yyj;^vOGA
zN6D99y6N!C)jaBVVub#r6ox;$>3;?ojd9&CE4{+tQ^}P$yHy{!v1DbY;9=&}7zq9(
z$UhNcnQd(C|E<uH{qkLkF+JB>cC1u+e1&wTsd+f>ALox16lNV60V^Isfu5Jcp4)0q
z2WpK1(<w}zCKgE(d=5<7UCMdP>(aR5l6^PE)A+;@vIpGO=l6(~@gMca9W3Zo>J6y~
zNGeZaug3Pmi!9*SqVkBK$pAON3uJu&jb)(6VByS@pzqP1;%m82M+?~Avl$&0{r&^=
z?IS3_q5axXB2rbvx?8CEel&=rw{@R?YhFztsHlNk-fJxx98^xekIykw@f-;4)+|O(
z7V&3b$biWX3<1C(PN5tuVR0pOPJm@l70yzTh~~=#!rH=%vgn`^?=PjsL1pNi3TE~~
zVu?7Cl9%^f_SRp~6}ug+B-Rz9Xg(2%>+pAiyYB>DUw&qI6>92-d!3d#p{Unaw+MLm
zYb`G+y{_;J8qU+k73}zTlu<8%9&%SyZdD2VdVd1266OnUp64mj!!~k``RR4)bh#-~
zjgU#Mv&ddIiFE2b4Q?c4Xp`4y3x0qMWNeSlZI54XPiE{$v+Bso?eOCY9}tV+;~7Tq
zps`k>rPpn_R-J7Rq76bJpV?^Yo07LRl4y9I$Z3k0^m$tOBDxs6njVNQbh57Gb{?<y
zyaWXe1ap?gW+%k@S*9Q~w#nMR<XEfq+7EbMxW305l*#R9B4WGS!}V2(_9as41K;$B
zSr57&+BVVjECTy}e31(fLdf2fIk=U(RVUW<F>LLVMggv^37nmxoUzVBq``yFtw%`@
z^YY?g2Q@w4`QEL3=$=g&@V?Wj2YslAYB$_EbgR|$e<p5`B<=!@cy^IYmey|TkPMsL
zJ1Ub3OvMiVrUfP&xdeYl>wgdq^*6Ckc(q473@J0!vzvSyJo<xa=6RIKiPjG;p`F0D
zJ6&~wWIsQOdd|y|N-L?{<JikANwx5qQ|J#b!>XB@@7@^@|9prL7P1!9R<g}ex3LSH
z7Mj!kMW#^upJi`;#gF(+n~7zD6lq8uFr9BKJ$vZ~i>S^$xUzG&l!g;2J8(FJui)+T
z2QdRQ$+U8QK+sA&ON&Z{j*!Iqzo}l}9aq$<((=4=P9p;E?R$Y~xM1Bs%dek>RIX(j
znU|OIH&gIy)k^5y?;6;QN(L(NBn=#>68}lcroe_Mq)SC*s(osVe)8JjxkiyUrlhB=
zeBS)i%=Pesi(Y|lY*5bJ#z;U(;jpCnN67<{+D%24y(tb&f=4z&3lz4g%5tTW?aoH-
zzA_I>RcDv9JUEcOC5mVj4U%>3B=hzAXDAAjP1k(OLLg{oT8n4YS|Z_#a=}q<0a61W
z`XXQR+(}=yNMFg!-RzM;Ig3H(oKBhFBldmkvqtomgt6qX1u3rir2j1Ri}`-ClKx{2
z=Q7iFKU4p*hp#wIPBxCNw|>~f^{WVMdD3k6Ob4o(A1CLZ$}Bx!ZIim@Jah36c`fzw
z8LfkFmJ4{m8F9yTo+f3NDaFo3%aw_BR8Z^BY4fl;c<kWp>^9<X%W~;hC`uKbFJNj!
zI*?g4;#N;^+~$1zY$d1TPh>BB?$C>;2zcbfz-NCCo`rnL&?WRsQsa{C&cdhHp`mwM
zA@bqiX0KN?SAOEFrEaD-`uXvvo0&TVRy~LYFEGwqWJI<Wt<GKfw}xJ}DkJ(uUPWI?
zv<^8TOb<w>;k6x4ivyvdGRJJAB1k1BcWA4MhU4kP+&0D<N=B1m%5hAZjiuvhJjT`5
z<Beq>vJetI8mLj5x0F!FuL5t1KR$qw2H3HQeYHvr<GpET#~<9C%#nKjeJI=4b-v2H
z$!&9@rDpl=o!wyE%h=D8Y|M_`mp2`!|7*yL3p7Mh4kkaIi7RuLdi$w26pxrir@ekV
z+KBXdxArM;H#ufl)=a0PasNZMnETdbN7I)Xta3by?)&DW`AXxOM^o=xj+cR^r#nE#
z5|6c(=gFltU(XgutelT7Yj&nZvFLNI+rM}@P2-O0wJBCUYW1)0R=!fDd|2_x{#Zrp
zal7$*m{QB5rHNZt_{AYhM=-4`bLVBsuO{~8zgssG471xGsY7uO0zM)Ckv3;SK9Q=}
zY3{J?Q-){Bw;P55Ri&3Kum42iGM^3k&<1^N2rwgV#hfQUm=yo~kyw4~oD@px6B#a1
zobDTTN1*32H?DtMwGbwBZtv%qgx`OkHD&I=YD<SDq{LWjO`GqkD%1R#OOn3@sbCnq
zkJvFhi&$cLeQbtdhR%Sm67}^$16`h9%+bD$htiO}+OrXhk0}%^(iB1OFpgxBnW35n
z(0T*qo#I4=HM)GpeG4d-@$bTpIk&)0QcQphxGdeL1DYUei6JLajf=Wa0_(_~(U!}W
z1I8bu_ADp`JZw~{LDf%uB`+uGW~kBVbOV0`w|-u8&z?GvHG+0JDJKWg(er!gu=t8j
zmmB+Ce?v}g@l~~=!?ZE&Um@|1@453shXjM_?X~mlMvxj3w;m<VfWJSF->IIMG1T6v
z_J*~5v0ai`gErv3`TK#GdnJ?v0V>)aMtn;b`(TKJ1*nVNt_+fL%f`fKh6vN~RFNc*
z?COq>fJ#M1Sy=bO5#M5zKZxwtiq1|kzh**uPfbovaUx%0i2Mzb&wr>2l^!NbS2xpp
z>LEVpG)*zmlKL#}S?5bAu|R*CiS7k{;gA5`XHpebEUCibH*3!m^KdYpl8JiCiTMjc
zUwi|$f(fD03%AnqKmArUwS1@X%DVm6p{@qT0xX{LP||w3MJa)GK*RGHMM7Q77o5_1
zb;h?e9D_X5ljws5QfdY0M=i0J6p-0=Q7E}~iWR=%%LpdP{jTdKaf6{W2f4eSSp>=H
z9nhn#AkHI9!msi^;@20<Q)ACvieDb%1^|5Ky8{<wFPzAFXZS&*BERhh!Aeuh`e#n^
zUZY%YzF`7(gU~8Ex@(dcB)*w`2w>1^oT8%pHz`CgP0Uga<E)?}GW6_Id@jW!k*5DH
zh=SdcM3Zm_np&PZaXz3Y$g1cc)WtjtDW10xSdos<n2i3f*{ua2@WU#RzBnZq(Xt~5
zIQ^fi89<a-M(f)LHg2axxt%6B+_zrcLz&4FV^lbMu>b#E6-PM-3XvtsphFa-=un-5
z$2o#ORGG#EqeNL(`u|O=fQoTWJR9O|??`sRpUu@0@UfU^ojtfjX!NUkI3%@?i3lo^
z%$*mCU&53BS`YgFFrE?hh*%BP#&^lDN%mmxvQ<SJ-etT?D67>A)kYGD0+<m4**)S=
zt?9G-tnK}%lLZG&X|e5$Yz{kR7|;d4j{myd3@}@%Ciz~36xX%1i2xpMu(8XK1RZFS
zcBNV`1G95)m(jF6QJ4EFl6xhttZ;QH+3e@QtT~1x-**|2-4aO-7H|Q)kDMI=QAMv=
zKT&9CpD8$W%qg502MbkWwN_F{a$=${)GQ{9%PBydJmo@9jKID+a7d0FHRbNvxK3rd
z1($>h6O8ZUJr9}~_p$$u$Vf(_OtgiKotdX26s&FWv^i_CtBf^KM&n722s=czN{diQ
zTemS8wAHQ#-+&R)3RdP00W2&$JLavBhH<i|d?V&Z6V*>YNN%N4iL_OJh{1Ps5HWXD
z{SQ;9e~0%vTb+Vo1eO`uXNA->+n`CO1a#mElGxWep3|>#T=X%$l=gI+A_vVWv^Kkw
zD**(Sh$A^_*>fJV9^-CX%tD4*N;7Ir#N9<450Qj$7{zcVHc1|rhXy!=C%YEf8OA}(
zjiW(lusp7CWYi{t`-gfsr-gM}$*gf${;5yAZx}qJn3S29HXzzO^3|*ob1q$s+wTvS
zqbHX@6h=j2`p%nJC=Wn558Y5aJ&UAdvVYHA|HO}WU^TTzxwYAJOe3=zNqV!Bh;xbx
z)w6rF@)tNbRw+oNkQW6_&W17FW`*Ee?R?w$3S_K|@FJwxO|8QN@iO8+NS&=Z=-KXo
z{xS8i#n>N9hpTNe_~^fqTc=VU()>?E-A;Q8m0M(c<PS^k6=*y9{IruQXY!p^mm}Q?
z7L34ryL`p8$0nuHwB)3o!y>WIAE->@*(mfbuQr_0BxOqF@_U5v0CNILW$FiCOx4X!
z^6Naj$2i-lRUX|VsY?J;JPF`KW#z`EXIfi-T3orz=8^cR6jaX66CycvBvoyvBn-e2
zV3NYztvjd?q>iaQXhcCCJuxvVFqL>~^%B>PICmxKx|s($&<H>*J<zrjECi6m|Hra=
z`drq>=kICIs^q&Kw6^u<r>z$=!fTvcD*8n{4bS7O8yxqlp5Vr^e5Gxvi1d4%oSznb
zf+d+BQ)h?>i;Qwa5jy~si0#nCahiebKUxvtzMdy38!=Q2T)5rDJd1(LvZQVPG^6Bj
zA43dN3F|VVf2Mm%zQL%vyOm&!d|)-VqUdpFUu*00Bo1P{$OqFPB&3h6+m<gxA2z1?
zk<drg)V0G@UPxmJOmTiE;<kyNmR_F9KYDzPS4E!rAC5s(u)Fp}7%J7AoaeAHemBFq
zwPRU7`c0Z8bWJ2jLZ+$r_8Zbs#er5cyDD7-UvYsQif17Ut3v+a0qx8eu}C=MVb<vb
zmV)q8<o5aRE!q;vB{cNkp&;2Wo2<@5216W9YuEeOeAsfqC-@<_IOt<qD8;W+AdSb5
z_OiD8^Rn*%me~u!2j}1%8$hJg0FLeIe8JVbXue~wu&_gY)*hARTghO3{11$*Y^F>L
zPw|j=HqE=1AVW`x-ltC+v>c#>$|$hz3tYM`06`=d^qw87{U1999Fomz@!`M;02a9~
z!0@WJ5qqOSITQdA5Sro;VO-_~|7A-Qh=v@7N)k{>adS_MhD>MK+&L`=4HLRCn-dC+
zLDP1`jRwiBq?{ep!ZyCVTu>J}{>@L#^F(T!;3<|sf7{=~J8bC-xFsN1CyIn}9x9K9
z6k*9q5%juO5pxF+4LB~U)VHHKNNJmHll!G&C3&KmO<aIE_x58mC5tPw$1g@j1u}rb
zm{(&Fpi`vNdqPw%H3<_4SveeB%Nc#b4iy5C!wF*O(Y|>7q3VOtuw7UuZA>^1RD&DJ
zukP|9@EOi2-jW?ry@3_0AzmPUEZt!c-dqgL98S6mOQnnT&N8%qCAx?+#!ZyIAlvF>
z_tEw!IRi2lpByj04}$U{ne(EmejJ0w=nYAW|6j!Ht^gnkDz_tP#Ve7*XXPRYtR!zc
zjFxQmuBGGZTY>5|g<D|A{Oz2U%HyB6#}Mx&ok~NGV;&5yM7Pq#t4SH=_a(=rA@3Tw
z`DVeXk+2f;IGLTen&;?zIuc{r$C}7w{FLOq)FjfBa2!lH-3#)jO0L~8I!J76=NNSK
zo}qNcfZhPB+kN!JoQxW1_+~XN0&#_pf~+}IE)SSv#vVh$9yUZ<#Lh(-kKrvD5T!*B
z{N7geK9!Y)>K0HD#)Zn{`;h5Vsh(uupM?_noPt0*7Q}|QI!Ed6o~uRDy{J{q)U6`a
z*R;8Cap{0U0xm!+e&lUtWNC;H18LKLc0_l!^qE=h>7IWwWieU7u`hM@RDQu#q2BJR
zNO^l7f?6zrB}OGFGCL$TxKk<1Hr57zAp`vaH{JD3wv2zhx{&ozhTV9kv!+e_IB}wd
z?s7Bf>X6oJ`fR5^fl4r+*~J96KMB3*xpus`tp+6ZX_ODPfso%`<ZaMaW2r9<Ip~hi
zFWKZv5xTn~KBV?|{o7=_UQ`i(a?bElz8vOnTf`QP<r9+=4E=Fg0B1rt33>5-Km!Hq
z=Z4q?NS?A;2K3FivQWN7);c~Fla!`&pRxD0u|<0fLp`B8C*hlINL?Rv)ioE0#??a*
zl+;6vq4@MoMa+MTpl5hjnmHLS-rQ|%n^*JZ*o`aT{e4q+lxYAq%fJ?<_7!HCfP*^T
zP(26kVa+@^3v<G7UtuAcUfFUv*#;mzV@*)DSV>fDad}5E;~7`#3tp#Xsp#S77??E!
zJIS6G*#^dzvPJkemUJEy!0tu(qJ%UrlxeCQyay$lfa!C-DS8AecgnHttMdIvUG8XE
z&e<L}!X-SqP4?ZZLP7}-i;>!_Cz3(o6&X~FdOKxFiwDbAI)AOi@Kp)d<FT`oxlT|K
zpn!V_p%A!e>{qgVFXDmERh*Pn$x*=A_mw|~6hx5~{(Qh%E!TJN1=}Pl{3a^H)+#QI
z70QCBbIy5LQB|2lKq()}ySL}|wx<>6+<7MttIoWbM7=r5qqw@2YP;R?nWM?4)(Y>V
z5x!}3oCv}*K=7zmCC#6@GfU`?wK^J{x0@3jdqEXE+vSeciole2))-3p6i93k#9|j(
zSzW#7P!kta5id>oRIA({W$e-5<C<1^vh$#`NhT}R&Y+33F(Z+a--_VcrT1%f{Tf}T
zWo<`XB_+T9xm&qOzdZ4J{mJjjCZg(ykC0moWVD~{nFiR1v*r?617HVld69XDu}XEa
z|Hi8o=BG?3)3VITIWY7R&5EIFdStXiCybCFL$xxULD!?WZLi-xH|L%C*h*W}s_Dad
zw+of9BgF$!*z&jCfzMnLyjuf~pa9PHN5Sm`IIMp%1xW^4eTdT|YN(@*>EgA8XmQY=
zcG`T`$vxvcytLczp0_<-hZbC86dRb-%iD~K>@mSC(js-?#HMwO9kCjnWe?h7?e9OT
z-S1j}DeQe8ajWNp_sztn+*mxxQxa;z_p3g+1#sf{atdj1++aVo5{jzWxO<J5^5YWq
z=7;W!`v#UdblHmPE12O^E^nA9^}RW58=-y!cp-R3B}v{XVDD1a+HK*D`xJ-vV^uG}
znu4=F<gSJiPe4!DyU(u)vG=jp8^u6$LQ9fBJ^7h%%TD1QpUxnrctPHcvq8^z(+`&$
zpdlaN(4oIeXQWK=9uU|V5V{#aFb#^z4T@V2N`?$dcQIOpDlmD_0H`T_`v+y@hE%MF
z)I2B{j41d{3IBPev7E87ISdFi4C!vXR}UFB&l{FLac4u}zDAO>%<&fDraSvQU?4~Q
zVIQJ11Y+%YxYH;fk&IZ%jrv-T3QrD)@S~}R$zuXvFNXEe6@~oW20LQFK~%x%eI#ji
z!e__OppYJartws{appM*F-J0qbET^iMUc0w0-m^133=v?#6-9l!-CSStkV6yG0g>;
z(LB!HJnE3$@S8Go5(@Y`TlwlEw8{8^a{{@Akqdm5$6p(&xJ?T6{m`K^KDjYDIjQ;x
zsCMU&j+HMndXlc@zM!U&K|af*>CkMD5dnSPqQM<%rnF{enV}t~V$5w?$fm4S9-(DP
zT(UrHZp2P~kq)E{V4)F<<N<(B0Zz=`z=L}A#GUx*yjddo(e7ad^p%q^GUcYla*Zgp
zf7fbh$^2c5BM|+h3j2h&qlH502@A|gWyE?KpLCX!O{y}gW7{S1%&xv^hIZ%i1>ix`
zeDur!&jO}~Z1p2C^MaE6(D)La_Oh>nI<TDEi`tW1RTml-;D5*wuoo5Ajj-3c^taze
zFJI!Wa`ggn;*Zy%F;8r$o_P0mjkLnZZoSB=_?|Er0*f5A{z)$>zg!NS8gQTwx<efL
z)<s#KFB4YMas*EWJ01r2afhrd&wNT*)NWtoX%Eq#4f*2E4~-{xH;3YxhZ3&9lE{q>
zxAA7M0<=4L6B<sj_N(7gmuolI)~r^@Y-Dg;EnUHtx|`5?=Hxdn&t~i^h3^j*E6^7c
zsbKmzV%Io)k;zg|a>74?6RU}z=#swudK6d%?!1X#(1l_hsXi5LD4wisGjEmStb?kt
zBtf_<vR-tkEhD0goY<ETno{z=#Xd)G{ErOhOG|FSSQ_*P>0D(CBGWldC~Xd<8iF9i
zj`&}wDAaJ<xP>ecfp2by53_{c3U1LA?7U4`r?DcXi>Ew#xsIQ*J~3Ev7qQk<7z9N<
zXdcC}q=>HpcQ#$0;gWUoK5B(1baPqcn$Ggpu^rbMFGAM(h)FXkkN#qaxG*?gyE1h<
zdbfKusMZ3(;m+L7e*S%E|NFQ~-pbsz;13#<hU90zx>z>o-1$3UY~(&9`yN{dFXa1i
z40={;U|ROodD@h}t~Z4Ysr|nnyt@4|E!Tf@O+%LO&aa`Lxr;U$a+t7nsQiu5jHK;V
zCw0pA!^~Gl*#$>AJx6(4M+LV>*lGH<qTUh+Wf{xYF4R5;4%0xx?C{RpdNi9u%Fq>#
zjDI)9Via|A5^UP=C^3cQc#g$|?U*^`7>+st+Mg7nPXz7Rtj=I}1dY6OMvgRsFb>r5
zf*$>J0r^nRu`SLQdo-MH04^ljE8@WEiXLUM=k5Vg21!$c9eJ79_zXok!QS7aM#+Cn
zw_V*bU$anpoQzyIk#itHu?$M0b3a7pxam~;Wrx^5L~s+?R$i&_a_p?sFpsc1@vtnA
z%jNU47SfT}@>1HyJK%h`YY41r<V(SRr9lh5D*Arb@=6Fj`+)oh;jWN|k$?;tg(Mlh
z{4;XJJBr4Nu>_JOT0>lW#F!-#^v$41l>9>25MhP-b(sZ4CI4)Exypt<I};WD<s<Cp
zGjjb=_>KbMtdGd0{Wba%VfFXhZZ3_Yi3n|)h&WIbt}J@T6)ws*pO);%DoiPsl{Zdb
zDkgV6UTr+#Af}+XE7vnWfz*{S3qO7P+^r;G+|F^rQS6V9lguTwMHu<vxp5z!y>gJU
zK^~d3KD%^;<8i9P-`GLrq!Rf!eVHdgGO9j%jHv4ZvcLcE8Y|@}-!-+%cuyv^r|9e(
zEnvyl&ade|k?-8ET@EUYrpZOlTy^8g&nK7Rthr~6$*!f<Zw)qC69zH)D&VsH{oeHV
zl>L6xx{=pQ@sHT)bRm?N32Cd4PpE>a?zjUq=&A$4@V$}GO%YMWZnq~kHI#P$-70P!
z1)@%stK*nQNmX_pn|Jy&rBbO_7!2k+|2(m8y1)O!5?k%v#2Vvs?1DMpb^XznBG$Mc
zjS2-`;pnbv=16*fCBfk8iA8Tnqp37Ma`Z=%va0F4`KVfNOFzm$Y=D~}YvT4Z5bv@$
zf<B;YqaNja5*e+xo76g6))t<|o1ZYjVZLi2BJZ};EK`*E)~a1Ns4{o2qL5qh>Z8Wf
zYe^x)prE~oue3+QVD^W7<HhhY&5?S1(^^9@wUkaHJ~o?D=KpO*p^TFlxBb6wc1vs@
zjq)XN_yifka(?dt;|<qCVUS=riK4#c2uYBVSI5&W9P`d7!Rz7efoO0X_cNC6>!o*&
zQeZ3|do$wXL0A&yH+(8=T9Rxx$bpUe^<68tu9fnTAKHLll3VwlRzr+bVljO%v3tu2
zv|r%PL|#0wW+Xe1M{cWwLmt!vg|M9(y~os(fN{^77pz0hhAAh<2nA?;i@4Z(mNenv
zElM>48sxU-jpKj<xg!ORez->XCxj1~@^x{wN+H2!EN44=8n7|-<Jc?*ixF<SQ0KSz
zc*PO7pK}v=e7RzkDPO^3CldloKMYM%YKU<p@e|AL5a`OSH%Ky@9X`c|Nq$Qo75>5a
zuIs#6Y#w>LeXU=|o5J1*gB~>-cT?m(PX;~vUm%nLbq?pivXy`M<(1E0VD)`Mn-Iu9
zIJ59Cj>N9E(P37ABG&(?Y*O*=K+^&4hM-`h?N&NG7JeQ8Cu$FKL%P6*oVS;(yn+!G
zWFfyKxS>Iv-KXmuYt(Q6Bj#v7GQq1}jmpi|!`|k%5uKQHpiN2^_VqX2;(?f7vMY4V
zzEHOM#Y_WriNJM%pFp`;*TMNU1qJ(^s23htI=>$!y)k-2=iiQ9<dLk#CgKrD?WJhH
zn(c-wxbE&;`;_atrs{I7*hNsQ9qs0aVM=qJKi&BZWGX+ZgopHigh1w%t|^vnABxJ}
zIIzBI=E-kTklrybgM=ER2W|$N03o3SS(HiNk#;?8YDK5w5Pc@O{>QJH9ki;F&WkA}
zD}mN)LdnmWVZNt!RQ`9V(m0PZitJ?oSVQ<#WRGq37=8YgWj@b*i(Vj?&F$QiG)hs@
z<4C9yb<m%FL-@-l*^dh>f8@XFSv?F&`7RBh^LN3G3Y!yW_FL=}7&`{7zHo3_3+WwT
zw7_bOA8+_c;~=`}Xjk@+aNe0A{&!Ea%ZIa#)+LZe&RhVPy1~efivikRAo6uHd0Hn$
zIEIMR3r(Uk*mFt^V!7ZaB(lanF|m_}_6^WCzhU0~e<yPS?X$((P!D~fkubS_68FGC
zT3G`s`V>30!?G;Si<-yWURHA14WPf^xhUxf`%8mVlqj=soN;O4N%J8iY0zmnDR7jW
zok!&EH!RuGx-^kIrCq4H1rcq=;h;u!8OEG$&+tcM5K@mAL%E?y)Y<+gdVZ550Z(n?
zvnQdGl-j-HAJmo*-w{YhrG&ZTz?2yDG5FGNL?T_y*}P7&Qw-u9(!E4uB;@Fsq#qfD
zf0K<1wBsGIARuOcuY>p9zh8x$f+H&bfmTNzc_>rpuHJVr9?Y8_0NrzV1EeRRS2C2-
zR!V+>ANxq)$&sqLMoL`sMv=&<ix#ZF4)XJAR9-8Ey!t*^9601a3RROAUmau(0z(vR
z$HEC&X53FM2+Ml{r=t^9>5Wg7<#ACM=Yc39+Qcv@6R4lV$iRkdB9GvCIyBwn?xL7(
z(WU3obO4!sQA(eGz_&=>99<PkvDctP>zgu&`RY;1>&>gBiHr>j#3hz}X)pH06_th$
zBD)A2U^P>Jn^S}(#-6H47dsp0!6o9w^Vc9XL5sC&p5@Z(_6AiL!!qZ+Fn~%8!TN+r
zx6{u^Wx=n80c(<KChR<GGB_lU0C+d(QNqy}f@4Yg(8QRNf)cvXs|1zi?goQ2uYE)D
z`}+qPBV~drI$E)R=SFNp7mfM<JX|#KHKYt%Te1bTgd{rCR^gO6USIo+OJo<DCiq$x
z7D|mCS`p66;)#qpdhp$^PI^(4c3gHPhmBP)*2kG7*qOSkfqn3#+EJu;`q(ee{45CT
zg5VXw^5zys@Ji2A+>ZVGzuQf6adIG@;41aNS#6x@SECP>+~!+SzHlLZHYq0}ZHEHc
z%OwCCE=z4Nt&)+__Vt*PE&e#FmuF+dj#;%lo&9JqT@yp*-q(M4&8sDuVEuT)DdTrA
zdKvT+&pjKLrXLThpepIGeE=P@KkAF!taQ|8Zi1m+opyy4S?&#(kLZOn08&WoV}XP8
zbZ0p>wzHpE_+v=losLS#&6PEkePeYG#v!Fyl~2#xc6F98{|w=%AJ(H6u^d^?HEvA#
zvKgK3uknT=%i8V@RRH&Eh%f4DQlC;$n$y2k(3UBGLqXpdKOb<noZud^yA2Z>V*c*)
z9W>C1{&zVTr#F1Q!L*+)F6H&9R9x}XqJRexJ!gU08J1rM`Wt^cEpx<|BCu;Bv9?a>
zn-PxhMsS$DyOD^C#qO=|)J{5dwbyAJL{@7UH-_C|Nr)X}acE^b;u%nW+Zk<h`mxz?
z1dsY&l~5B}I-m$--1yw8(}UP}7xdbSY$xeW(I#bsSM~w9MDQHZu?V>Puesbm1b)}P
zpuN_w>n#yu>A`N<toMiZo6Q#Xl2>ztUHNEgx7h)!_ZeqVKO(jX)B`&|G5?^<X4>aV
z<~09z@-)`!=F?|?8k@kKv#wb#B}z+yvc|siz~>={tjnSw?z;JKt*G!s`&ZGFpjdq6
zSKK7mE<;rHc9A@EHcC_se%!M=F}zoEqk>j{Cl#Gm+j<WVU4+NTRNhc9g1nfxk6L?i
z>hREvlRtQtI{C$jy<>k^e@9iPaX;z$EnVd*`z<EYlaI|O_0yOA(`l=@lk7^>;UdHD
z63qmcv-~nn1I%^E$<6R^T<!#Ws^e^>)iaap^)CgIv4r|l`UO7Ed_SBe&e#eOL4pd&
zdNfoTx;PN;^0WlH_WuKH1NUnJcPaj_Ukm%yUA|4m1doW$A@kk&)OAHV>~8{NdyfHy
zGyUEk;ZoC$aobR4oCj2rx8uE=CD22b!af3hV(thZyO3LJ$Nuf?y&(=IE~$Jag992;
z{Kwx#i41c*y;ny2bc=BePUD`MM{Z-$1_phPXJcOkBZcdGNjPH21@2>PB~=*0J9d0J
zSPU%;*QXMjiNcXSMZV^Vw$exjU{TQs)Y>+Z4A|d}LgG91u?Y;Y>kJ$dk<n}P;d_vi
zr1w?!p_upj0kZ&EJ4!%~l5kglCQMn*N-5Yy$?XrvS`|<%w^>YQkc9--pgz_YIZ$e)
zOfb|Wr8GFnA48Fi7qX2@Yd91L;72SVjXP_bv+*=kz^YCvaLs<|h&U7#E)`wh^&o+s
z#*nIq$|o&CGP&qHXbvmM!1ZAt8ONQ9R!9*UJ@RHZB1c609tb6CCUk8Fs)!CMtHg>P
z$9VG4In{z5HxKD{k?}LZ1WKudN|ku?hIve&bP33R!97~$s;^yCRpJJ@tP=}d2(fl3
zYg~j@Xqt~)KOhE2^E4`0gMh4`^66wB<tzZ6r^Ydqy9P><cWcVAZ!Q1%h89~OFI!N0
z-Xcpvw)YhkQ>x5;!d2w05l5vFx1f=3PI?-MW~h(S_0mYL#U$Nu#O949`=%sqXk-qJ
zp>Il)OQ|L;$D?$>IU#ge&EuJ?<EbGUnQ{g3&6u^rT62_Ufes6;%tT?rc$A7zq)u%4
zg<uIR6~i>1)~wOzs)16uYcEdFNZ4qJ<!ESI<w!E2%L^H6u-2^VFRO|8APLt<wjMK=
zVPUREKk37NbHiA6GJdL2+)Fjt&v9=tOx8m=MCl@*AsYsLCr2YD$I>UqODF3Q#S;Rl
zA4+wmYPB3VVuq|IM}{WnI6%`JQ_*kA=S!(1T@vQEqhpP9tHxO)5~kLgbysiDuJzH6
zx5L&iral3uw@=0?0;{)bbw8I9?xySPndq$-r*CXb9Z*dVI!zz>>Me#)DV`E!*+nVC
zw2px@r?rzmsAhhO&z!5wTy&BBSE0Y4|LHq(l|J*QbmnjK%=OUB&BDyTy_wsKnLFSt
zfO-~3P@hUVTp4hug=;!HAb=K(0q2Sv023z(Ue4mT%n}dJl9cICVZ#GsBDalktz4q*
z<bW2&Go=WjE2dd;bG)MyO={`h$9S;&Za6hQ?4H%5Uz}y$pJVwoCuxN%X*kXaCPdMN
zt9Tjy3PH1D2ywIxBu>CSfw4sL`s|cC6j$NOhJ&zw25+`wA7YHMLuVLf@hg8)2`qkO
zHJz7uYz)|}&$F8OlTOSvrZl$KXLTxVwGu5`KeyKWvA3(jB$T4>#r%V*dHH|Su$4#;
z4ZWg2wJ6Vdjf@4&$1{|bxGJhG&1caM93t$mz`=+pCH8?}p5cU39D5f+Z)~I^Pqe8^
zWlno+Uf>-%!zHS4JIcP6hHDipXE)SP2}((gbA*}dVY$7-XOf!{0kH8eVoUWHwBEl3
zgQ?LJo>(E*IP-r)1y`|HKv*K8DftkP=>-;<G8OcuSF1(9HN>mmn<!A{6y+fw>&nv8
z;oo<@#B`Va$`)SkFTZM;(!K^s{YksiNEmiW7=_8JHBf%&BbnMJ(cw*XbS2}bPnDa4
zd_PSxK_xgDn*UZJr?w}@)~0J~hCltgLLHkM#tDgdnYo8q*^<VwS?#g4puWQ-Tg1xA
z^(V#er|kwc#(X0#ET+;%ufShGM!J?Si_!~!EtmVPRY*+w#KymE{un==%{QOleHgJw
ze#e&4i0m70Eau5xcg;sy(fc>BBsMf|u39dki|grg8|~Fv>~pO-S$0tgKftWxK~@cH
zjBiexYxY^^j&l4g3NOhm+0XOmHS-sF*Oz1Sr7eWqQY_=FQ#(z^Po;6Qy}3hvy&aES
zo2A~I6QppjO03?8X}Oj^!R3OVT2lO7qb0BGFfRLGSxoB!UlCWHl0h%pycO>QMIMzX
z5|zH)eXl&g#XZaQ)F(M0uA+=+V(0PO__HE1t;*DVo0nhlDNU`98!FbPHr16QiaT0u
zD-%7|xORC{X+k5rPpr%28_#~}d@TF)*Uz#lLt^2d_}qOxaxIJG7%#Jt<LW1$+=n~C
z%G7G1Bi=P=-8ya>?69U+mZcvqkfBnSm~H+2r_iYq7<5^4{|-$%RDTb66pQk`(|Tuq
zv{g(mT%lyQl}fD<Gfdn6seZ_gk~4<Ao$z=+S_uS+dt-l1{h2MvB$TvdE3W<@b&KFp
z1Yrr%Ic~GwrInUXg`r7=$-SP#c-<W?L3P!LU=(vy%56r8rJFYc4qNnpIv^;;F39a$
z9*e%&7Io0ZcO)hzY<{c#LA-QDT!0Hi9vWGWW7&I^D;6axy^c=H2^%2ClZ?kAUm3wO
z_cRF%w3$2VXKjOw)05=U+|%_)y6vy??LSK%VAi{|&1B2d;&mnE)r(|nuJ0xQWAEP{
z%Pu;~FNb%-U+mW?$4WuE;u#eUdwNcCR|6TP_rqll-7!bT$;RL1(hVLyb9!h3Nn1Rp
zwodA9Vo#mUn06`Odq(hun40UyN{Y_q7}c0+O(ng4(&ze6^|j#`vU3#dLdRfe_}2K#
z@J9_>pqhQ2ZF`Vo7-oo`1I5+cFRVN2YlnI<K4M8S>K&pQq!+ty5uGlW>TO2-${+OF
z4D3jfTuKUwYd!ShI!Zm5S@I^d=(BJCs>S|CuXj>2#o8<_Vw@=4H7m&psrsQT{llA$
zi8dXUH+4|b>~QgnDVV8it|Ub+hg*r{QAO0(zc*0v+DP-K`m;_tbGmm^VSR2?+Bk|{
z(ab<>m49^gw5!{_sUS31>3rP!bOvPOdM<}^xHmPo>Gm7ze&jK06ETaIc-*^jtl)Rt
z&vi1tQPNbP*Y9t+H*Vc7dot#6GLU&PUVbvsdh%i9WOC_b>fmJh(&Li}jsjv>g7n+m
z?FoygfvJJVz~nuY9y##{Op~BbmFV%wX^tbZCiZIab<$*?+|)XRc#TWH0BT6V4B8nH
z_{62VSDp@KHgx4N{O$F0SB=O;!|>Ya=|lvrb^Fw}y2edC@WDYI?b*|Q;P+}O%S(Z0
zZsXqp($99f-1|MyIal`w83Mc5Nlwp?>;%(_k6rJ%bX*zA38y>6$7Z8{{ziRlM(nCa
zwvHcx(KWcEIzYwG_=-lm&8GwvUPGA-ZS+~G7pE6`1%zLoJ@9<E-fW_R?}hV_n()()
z-+u(zWxV^X?YBm1g-MP1GIHC<*PsC@RD@}?tEY}k?Ar-HdVP5WXUml>JlTYCWJ&e!
zdc2nhbjpV(@m~LweVI+ClpwR{Q~$VR?!rfBn&ou+C(ESIL;}ujE~YnAUGhg$yx#N4
z3!e4b^H|Laksp)rj`QByvjK4v$ywt7!BmN7F$!WAl4S7;0X{tXVBWSV_8*$=7K!1S
zNf_+X+rG4_%D5UV7Oer_Yy}ktnd$q1T!($%O2-=OE}DAYnWCrT+$5AU>rJhHEj8n8
zuC*^!1Qz=8{c_2OHOczrhBkfli9%_1DtIAYVAa%D&^O8p6q6n6khN&_8^jFtOZgh-
zk_>Xci`E@xj-&gv8t<q3d)R4o)L~;VdiC;MAEo8*Xe;?Rk7fF2gaN^?*@EtN3<Vb}
zUCinxaXk<bCfCP?6oFx{>0Xji24?*pkOQT{!|HpI`P!ZAKM`5J{Z$eZxKwuaB$GJ~
zFO}ISP+XI+IxtSXLfVpfneg#tzP-w`yXa&XQLsx)6s@xTw}6D?0BhByz<gI?@D=)D
z3syZaovgt>>oO(!&wgXz+y>k`-)LyX&m!Y#A%LhT`>wpyoXFvRE;x&*x}LCx4x~i}
zYj#;Rts{1RgY_+{`E#0r!<rN>k@Qd#^I<Gu>M&sjd(D@U2BlB^UB9}D&CKFtFO0kX
z9Fx!;uxjO+{AC+TXo$(*r1X(YHJVH2;0Wm>q-uLdW*VFM;hhB%jKTSn(rgfdZ;yev
zGOP|Veo&+q=Otw`Bu(s2MrS0>a+~AWpCvxtpC>M+Lan9(Go*!6cao1;j&2?t2d{oP
zl`^ETdF;TGk~*#djWbQm{6e8cpE2+Wyr!OZ=twEG`YP`&b$tGfLc>2~RRoHcitEdY
znVP&zY`SI#S+U@1w8*RUu{+82+Zn<bk??}N!@F%Kt%?Ao9uVYpzklo1SgGOqvlvL{
zSGllvMsT7!h=CiM6jwwiln0hFRGXJLC%^;Bm?+Nt1ydMh5^*sh6?kBA2Tk+$5xinZ
zu-Mtt4*T%Q>?D9t*uNn1LH%A09Osj-`}Ko`FEpKjCFQ%3G1eoGA`ZnN8lg09sDi^6
zl1`*9b;Y6^YrouA{v!bBtyipJb&rS%zVmW~k~(!i3LUc7O&^=gQJ%0lM&NT4!Wa)W
zkL!yZ`W)1yPHy0$Cd_c(xAF}tHl?&L92=HGaLL|F8cL0t1{eR_pY-F8eR}oa$}5^g
z&=K;d_^C^K<(()Eu~oFkT8Tc@pM|LQyRk0=>Y}fiUi|dy^sV5Y(Xny5Ibj=@#rrvM
ze-h{L9sr{>jHYDTyu5MmC+W|(!>>YcD6C36D4BzBOakqrrpK2tju=ffi|E6*b~|1S
zH)wqZoGSpS5O?X44Fy}zZ(Jh&)+>huw*0Z8=%USiw&%)geggy<wM(<fgDK7bLp0+;
zTX)JC#k(YYZ8eg*CE>4cad@`Vyf#-b#P4rPX1IX<?QBtA&P%1w``%`4ML+fF*mSTH
z1P?-V`%dZfGmyNT8OpJH48&FS=fL}s?iZ0#jaL<K+;5J&l!!lTQYR?h-aLnJ8=fKc
zDyte-@TA4?F-w+!9_p+L9G5#7hkMyCf4AzQI;|Bu^l7L$r1Em2m`Jq;fGaSa(E21=
zR3laQ!766gL%B^-J?Bv;Lya2)w}$rHmgz=5B8~d6p+!q=SQHBy)ki@l7H`ea*S`4Z
z+T$hMHTYrI`BLyRz^rq;yK)yx?nuYc^uDz%Gl9;#ZrJ#!Kx-?UDYYN}H{-`%-+jQe
z79=u7pW%sNt1|sOwhNC&WVAMtZVey#Bvz^<`}r7*FW&o^OuQ34F9!h<C|#U~QC08*
zViE1*aRe80n!=kGvrAM{mNT$t8<f`fulX05mT5eND?Gh@--*8y44jSH_2$Hj;Url5
zthtVn;%>6htElmKsNH#do`&y`{9d9YoBTEM_+i#*TTfK*0MpN#=lZ-f{JFo0|76zW
zI?>U%B`dl&9Q^5#Yu3WL7xIZkvi|DwY*R5=(Nm>Ts{dO3zHwkt)_<MAz|xsr-#7Ss
z6uqPeY~)i?Cp1{<!;fA1Y9v^(z<e%JXoWy=?=*<o_Q6jj3{q3Rz^?!P81Y1}<_YsQ
zYKHPPD0|17#}_9~Y9}w?<z?%#{8wH=@%4#Mw|@gzMyb6Vr}+!7kso<yK!O~gy}~;p
ziI$_6<=!kcEO=*oeP%LGJlMdv?A0kr7SKH)A`pi}Qlfp(FD7c}PeJLck$$4`FHWv@
zq)nA<;U?LU{-aHIHs4F5-@+gbF`Op3_@p2OroTFDT;cF9)pU}S6UnbGjTZ=49aXU%
zKVtn19Bel(&?X7WzPSx-q)mrVCQd{+Gu0zH<)26nimwDuy}}s^urmDRZy|sMmg^pq
zj7bcT8O<J<3*kjR?<kRlgQ7%cRWc|e?5IASl3C;(a;+Gs+3+BT+_<E3ATV4Oyn*;D
z6^e<S_Hjgz%A^2WIjY@YO10s{!160i=p#35h8;;Ezi68F(c~082~JM=quKX>n?8o}
z&|#<hE_B6M`Ln@|o%qx@^k(mUyaIQeL8?mA51*C^G&^aCS7@@FpLzvubge*^W!jVc
zbP6lMQHZ<IbRbpz4)tw&6gSl(45aF!q{El@e4+_Ch!R)6UD&n=0t?4FJ0~K2AoC|)
zW&UxgY+9w-8tQA%<hZ)*I;IMdYq%7kTO1(pjpF%sahP6A8QWr)vm_&hp2$z1pc~g1
zr2g8R3Ba|0@|U5i-=$%$=wf0i>Ip!IZ^1V8BA+xiJ<7*rI6savn-ph_0e>O4;C>1H
zU+5lq@~`fb#cldGdAU!@8#P$WOQ^Vca2UQDlE@F)lMSHIRu<%hs+bZ<?RG-poS*4u
zPHZfdn8Eudj~p?sS$%}W39-j2h6z^Q6fRinl|E5r9idE?Ef4WdHBHv6eHO}j63vUK
zxwELdm8h?fsD(Ibud8qkGk48~8}nq>dYqP!Q9QuoU%*Bt1**2U{3@`vytYiYG;8Ay
zt@EuSmV(NbHfBxLx+?PLeP)sBC~-|!Y$X@}6dLe;>y$`AthM>Ovt<76uf!LAx#@vC
zl9YV0HG*+-1S^tGgnAfy8W#duDrtL?67x~2;?pgYp)3iiRz#G9Km*{3WbgSDNyt8b
zDyzAmm?U6PI_jg<OtBfERwPM6^0-48FE>g1qM*i~Yuwaq6$meHj=t52*h?NWif=Kh
z8ky_X#Lmkt$>!5^xxXHkQC;<MFZQu`!J~EB2dQ6bHbnD>?2v@-4Z72aNMxK~{@%q&
zjeRN8&alnhVkn8`&`AnUEArS>DYz$a+covH@{FmjP|TU2r<~5gn{0PQtZ|$wj;P{?
z@hArgp3^YIm^ax|58SGV$`Scy5z_g@ZOGzjw0v_v_*;xN<z7s*XvAq)k@LZQZqlzx
z)m>^RuWz}S>zB|MSr!haLDuhMzhW7c@C>@vST@b^-Cdw@R>Fgdxzw=@XhBc6!M|(#
z;mTrrDQ-r6ST<o8u8cFjFjZgC>MhTxU;*O0Tkg8dq`zb{GaS$AJ|KC~D%JDro9!2p
zo26NZRO5@Vr+)6?o2$j)53mWn;n93MbT&&6_itV{UqsyZs9*F)pL{iZ9(LD1B$D%z
z30UL_)xx7&zRGmEh2?11?%+##M|%`_r=;6KuC|qC<5-fvqPiBO%z}Q!y}I~w|J7Ma
zFX{}p-3%SWDcMqFKYHgRITtEZO9lsYc^+V1D?SL4F>ReNoJ!0j`|}NX4q(giBy+VM
za8??9(eHapRv_$qkc@L3DE;b3h}G;D97UXUR>)V!toJh+be)P5b@{I6jO)w)O<L_F
z`}#6^<dp)Kq-~#i5W)yjPe<faQ;z0cq9oFfNYQm-j6_N&_};}j-?e>%13Shy5wGV1
zCp+Hk_R6hY*(;ojJ<pFh8ez!wy8RhU`LF)#N7=rBj<ZPr>uttQmuh#pJ^05*FV9}H
zUXK+jxcmHgbz`V_o6D>4JMz;jTwYs;T=3^u&rhcfw$1?9&ljvW9kD;CVFCt&mir4K
zrk{Sv+y2&^^loSU^JnDWqAfl{B93I?MT_l~2qkVNXhj7^q%{h#9R1;m{l8Y$jb_68
z%0kjD806qSO$VC9pt+gnAp}MD@2cc9MdU1O6vd+*97Pmdx)efehL6?AZef&WJI=@=
z>YVNM$3^%JXqHMeQv|N!q#nda>#Y|XL%BVEejk}mxV!)!ZDkSDG#m3$5i`Z+&5%7q
zCXxlt#`-aw<#Rf<g#lxaJ#4E8db`86R<wb&x4A+~jfKnKAqLqlSmBT0Tn7o9&Twx3
z;{Q7RvJN~+aNfTJw;6E0@?yR^IDcy~e-B(>r1-xk*;29K7F_6{Sm?Wh2DXo$X@KNs
zG2*)&*aOY!0r$RwBev{CSauN#?BZ%A;$~2yS(Mz6(okL~#fs8{lT9{r)BBBkacN3X
zg<Vi>KfJn-$b`WftSj-zQO0sdwr7!7uS9-}U16=*(~0S}Oj8;(K*ymZoAjBO2`v|5
zgs5XXObM5_3l|G>7_DRl-{2^^L~;q?C_<9Dvhgoncli;e%9)OY>HQ)b;mUDCDrQa!
zbsXBQdwfFkujdN*9swzNtjU$O1Yuc%C(6usL+s3IPV#<we6@H`3PPRMt*T*KX-g=@
z9tY!zll}m)+D|2>7<;yhNCS#8?Wdd%{mV#Sts$C~WhTRlheF{d>k=5!E)yJmwMhn%
zbVa*(62t%^5U-X#Tyrs3(+5}MDiqNiE<HOSl0L}i8$-N;TOAX=+8s);ff8Hcl)A__
zISj*-1+p-0n#jeRmWDp^&mX4C)OQ2j;Ume~2Z0poM4{!*laFn-IF&=o%u_jYVC9ND
z2aD(en>r}8i&MG9kWjjuBWlmd?BE#_^AHrR_4cuqr2&myIGf30Zi2IG!GW_cg<(M`
z@$6K&2BFVE)WcWYfl=H>PD5(GL+W=ix|c3!<cgC=$1oL2<(mo6Rc_F(s-Hn%CDhMi
z?jlrH2iGhxjJ1A@t93|wXh;Y8#ywKWY#YQ!4kR`QLFs@>JSw((PnhWF?tv_xjX?=%
z+;P{>q%L8h#nDkdmC*-8FJJAvyrq8O6QLdoL^BNQ<RNuoIeOB-5Iq&ug?vqHgch)m
zcPczw$%R3eGU&vF5kC>K0_}=8jG-8f|2II9KFEfppnFU6Beo**X_fqROd&~3zQAMW
z(qVND+i~xB*9+C`8}(2SL4B7i?5fm#Wh};A^XUnJO^C*WUxc}4nrJ4CFaeDnR7`|R
zP7X-V77&Mp#wpW*!gxT+cM+7fr?GAvsAq_{5+u=8p6eT!R>sCizVkR<D>-6c>5Y~x
zw=Q*1>3B}_IM?UUM^63n7$w%vR8>B_bqCc5rNlj|m_CyPd!u1zx`aCO*-be^1}ILR
z=nPkJQWJoAy*+VRd=$)dOkFnlts&t<Db6G^J3?aU6HqT#T4mpQ`Z{8f*rjHT%3b5M
zS`k#)6s9L^PTh=6Bzrq0)cm2dk`hkxxti#hQI*;|qGlVbF8vrubwdFAS#uv69aN|l
z_)dNSjk&d(HTEQU^ParHhx%K)))pOs>o1(95t>WbM*xlu?c&V8jX6yE9CZ~ZQ5BS!
ze2jP)dRs-#NE*$0hm#76Rhg`VqC(bPQpi~I_5bQvItipYFC4E^8<|ZdPvEk-j4=i|
zdGu9(B^4QB*sOlW;n_N5l7+-wR1#Rt^yCvVmS3YZF;BLFP7Z*-6~Ilo+f(aP%<?Fr
zt#L?a4bvp-Dc!9X4Dmye<mo83bS3bXB2~4<29-HI=?;sDQh%!Sx9A5)MhN-&i_(lT
zH-dMrh5$@P@lE=tBwhihBWGCEy265q47K-0y0VvvvhPRfLrZ^Iyr>xD5m)Kz|6%Ga
z{F-{ehW!mTwvnT|yBp~k-Ca^6q@+til#Na)=@^~TARs8+C?Fk5Dq#>Jpy+=1eV^xj
ze}BX|=X37+zOL(=(D(YC65z@s_1wrX@L#jR?6vW67SnJmp12a_EixM~^>x4EM&bu4
z*)r6D__P;Hc~Fj3bZcC6*u&YV{5)(%e!lsOD|G4H+f`rKIEKimjIki^a>dhQ<@t?u
zmV$M*IZmKsvlffn0p<6zpXCLyt8u|rT`|@MdEfK>^O9sn%q%#SY!9&Ys(>pYJhv7`
zsV$hha(^(x-UH}spJ7Cvt?PjIX6vTE{P!)g_+xAOuCIdYse;Q#_wgGyH&G5>XQ@9N
zF@CILBpDP;Hz?@_4-gb?e2)Ea7)<Y=R<hw(^2r*~m+B3$`W#<A4$bv@D@yThZE7}F
zjbwP8BzlJWH<5NhC8tXq<w+CX%T{{G4u0IWdT+EqLLHYqa`~8<L>oDmQaU~Pk;oNE
zHs=4=7;~E%H{U%8Tec^%a_~jF4=~j3Gpw|N{V{=gP94^4tQ$HUHv9BX#dyeF@R7EH
zho?LSJNGE6a-{Cw_UEEiQOw=ZqX#qT8Ew2ZtOC;kuVTf7uf(|dDi{OV=zCci6b1O@
z)L5y+=e<>?m&irL*~R0lg$>0enRmXnigM|+H}N^FFPw8VINq~tmwpzg3;?j+fWY_w
zAV2^B7z57ZqyYd>EC3hEpw)sIjE0i)*-o^S4adXTsmuoBvqtU^Se;6D<Nt@iYR7YS
z)yn#dImQXL-=8YdZa*M#e{0av*yA@sCq(B4`hE4CF+HE{pF{9H_Z<2Tfwc`qB)$mw
zS;@FS%2IETpq=X~57c0+tCJ@QS1+9NSnqiFU^y!8<i$Wwa4eZ5KIP{X054zv`#}oU
z4=FwnJSN*!p|N3tJz~A0u2{hU?55~Lv-45Xu#Zs^A$ssTxuLV9^!&mkk4>gvP~r;@
zI!Tpx81;KWW&A}L(Zr}-Vub?7FKc9mLDzxJRF(_4@h7fUg+XwuMW}F!O6|IWSB^b3
zHrxL3ej?xR<5h*yzcHT6O%+eMg#6BoW4<goH#S+F{%O_eL!>EeC%VlAucgLeLO=&E
z;bB$9uDJw*JQZNtvQzRz6ivSo4!NQ7BluJ2Dgew`tP^7v#+|{F9?zmU^3gyfjwT~%
z!cO8YG}&@(kt(KhP4#H$x_vef7916?Sdx;Vt&|~uU6v{sHa97aJ#*pA!6`<v-Ffn~
z(<5Qt`47~DGVA7HTASq%`mT-|c!ma>_U8<|eBK8s;2taT*f)KCXrc+gFa^Fn;d=v_
zb`DlJzMsThvt`q-d^pE8_7ZKcE=m*i4<?<h9BYZGEl-g>{=YCO_T0TZS&A+S?~#N!
z-@ROhOBFsfupDtFq{lB`X}4BvE4KvA$5&UqP*ATtmKojHrWd9>A@P$#^{q*t@$e!n
zbo+t=A<AP?sjzZr`L(nB51oMVZ~(q5;HYWC2XKye@=Uytc*(=LX8G71upV&o)r)R!
z$3Wl}%yu#I#-LXi>Bn%v$gQ_i-=NgTbkHgfinDYWqZfZ59L@B7o&U|iTRATP*zmVU
zZN<8&Cw@f7prZ=63o4bhZo6*IU$%$^CqxmiCBRWI`nF9&T6r%?S*=@DC)fP+J!E!a
zoi2C+=+Yky_#9?eu;g4avHkwiJTt9wvc&pw>E$P#02D9=E9cW=`-8uc7`0}~u}1SS
zg=jqNsa_Yx;d1*emp()xX#SnGLC5^Vz0~Gjss_ltnTx;TfwNs)5&@HP{WkYZqlTDL
zM1k2xRR2;ksb!pbJH*01EvOljaHcB+#6WMJ4sQA{NE2S$8uzZNA^O#~xS#*8MPvNu
z^3@wSjY9YYDSkGZ?tc?D`Vh<zoo7l}f?O40C2AwppXo=XX8*=P)8n7RrGKv<@yq{+
zru0uAd1)Voqc*b#<3<khbPdYi#-Nx>=7wnS94mew_&)t3hx)zEt@Ml4Fzifa1EMND
z1g|@dJS%j#+y8^EgIYrHMwq}@MyLwxZ5+5x#N-cXNR|KED2|1K7530AE>u~B{7icK
zhLAM=Qhn(0b7f{)i41kV`=Z2F^3w#lFS9PH-X(t>b|g@sPy^wMguj<V5hDDbJ(Moj
zB$^+@m(mi5Cd8*jmD6%;17i>&9;u>16~9*RQHk#l+x5b!hh$sRI9xDkahV(pf4U|O
z?#v)Li_et*#<Lx8JWKU|uSv?hOk-v*=HtY%x6BthNazEHa#}eOA5qi%$C=K}!NMPn
zNrdyJ*v9Pf`eG7K{|Erk92_cblRZLJZMx#wY<R3U!}M)_Pl7r=0EwQ%@1?b-z~otR
ze^aF>k76Q>3kHS4QP{478Fm;#JG~m=S5>j?Zkv3zXlpz8y!bGybn0eUDFT_MXtY@V
z2|A+sn|Gc=Km!V7F%z~Qpiq+B$GAIN0A4H`p}Zu@u?({+um^;UhsvNf(nYexv(cWB
z@_<lfO?n0yI72a}5+VBlL7*yB#&*OnM7Egw_rl~U7phun^vKJ=D8{g(jFm$Hg?}5}
zg&}^<g7A-XZyX_hX5qxBNqR(}#X?gUj->F`Ke;bAzns0?DZ)&|E2fcTw$U9_%8+`5
zuvxES(JH6=+zqBSh>G^eCT4a(P7xq5`mugFOp14*ob8O5DM3k}?|?en+`M!ZI(^)y
zPzS(c<y>;CS!V_6IX}KrVcgns2uo9Bz0UJrmWy28xX%;nl+pC}y6y3swWS9QBJfj7
z@j3L-M;W%4zi_&GDVxxYyq!U3B#~ab!mu?jH;0imAH1lZ2f=)E1_Vo$vP7*Sg5H4t
z^5%fbsIZ6Z-`6eCm~6z~({ZJ@j&*?3f%`B6zw2;7+F!7;>FD$kA5c0yHto|OX^tPA
zkj}jFDNBV+lwZv7J&Um@02Sa>QzRuDuC_}B;~I-*itp&oE32==d{nJW-YL$EZ=#0E
zkxA9xUS)H-NU+NG7~I_?CLAqZkI8&!)wZrH<{5UHGWVIui6GpC8`3anzdlXs4VsN!
z9mh^1sb=p=Eotq=EQEI@^L*uW0yoeq4|*t&?$8!LXH({#?T#1{`^!mi<K+y$!7xl-
zo+<O&KhE@mxMje@;Gqg37S)VMLK1{s?=kJuK%&f7_Nt@`I$@$jyjn?;5|FPs=~Vv7
zu#4liHCcj}3<-@M{W}q7G<q(w9enY#*;P!kM1||>S)~Hb!+&phw9mwgzX}{GT!pbr
z45x=}2pk_YS&p^G6=m1S7duDr0feSHl^Vm)G822uS3K(N*k50$ZF?p}tJB4*x8uV>
z2$rBUW=bk1Fssq(5RH&K!05P&34$yGYhMr1emhOF|1pA^yB?!|?M6dARtdr0VWi6L
zcNi(#808!4F&JAw+W%mrw!|U`@zGGZ5nP44d^yfuJo-P3^vwKud(mg^QvVs+ATtV%
z$RmdrKOaZf2J%U4ekNb>)5uH>suEWK#Nd7A)Gf(!+3O+p$lVdFdF@VJXnTTt6h0hz
z(t`$}NSCz61w=ysgG;qlb?<g2SxAjR$h(OQ*7)CU_8<SS{b8C&uDhF_x<I}PF!aDz
z-)7G~`g`FS-(@0b@Mw{V^CJIE*XB}1Wf}D!<Y|}i(O#2R*Y|z?Hw9}5Du-{YmVb`j
z4C_V%eZBi}um8`)w8i%|&&E-S`_1%&t7LM&9BJSz16J2v$3*|EtwZ@EE1TAad{>zy
zP3<#V^^21E({}5h{huOK+XT~ZA0q#BKl1-}5B@V=N+82q;LOuQorY(L@*gA0Voz+0
zI~-{GkqU65X%jiF2H;_$urdwRgfq^eguqXCKT8a56B2g2y1zHK{tWj-z?o}tJviYX
z)WcoMaf(k3CA+o3Qs^&kw!-Ns+ywO5OLFmhaGn9Y=53OdZ5YJVI`_Htr)7QH19RRQ
zSU@>k`R-sY@2SxzH293)0_qhqV9Mu=zS0bLcaC$HhPzm4VKwiA=VQIqEG!W5BEvE=
z-O-Q>ToM{oY8lEIVS%5AmYT5i8Kp+@!2PkSoK9Bokw-qyLgC^QC>3dVj8>GVdlZhN
zX@U78&9Z3h$WxloN3DCvWg~aaD7-6xg8!Vj?A>?g4hj`fSqLT>V3)V~Uno>BBgXxG
zQgbb&brnxj>M1nWcnq4{HW9~-VcSVpeCB5c6}7k&fyup$++HN9hNlc$#Z2!f%}JZB
zPox^H$i2DX8aAbIeoo|B0q6Gnj|s)d-Dan4K?4`vQ&(vu-teSdhCaJFB)X+Q*X$<`
z@T9y;NNJl$>)TG#%vRd~JZy@W`kC<TSGS&dkh=8`y%hHV6ss=jA~Aeek0p%CZYX{C
z(DTu~)E=YML94X!ycAokN(!|r!RWSlYAde6oQKt^hvxr};fzJ8=}5r;2lYYn>T;wL
z!8Af%I>UCdskPxs$cNzngOYCZNQI@vI49(4=D5;EIr8Fr`MYiNqzTHT5AkUCn$h^n
zP;y$U@yNi>q@TH8Jd-?%;7inC)egVIM-#X40@7jMw(;e5o`VAKwujmA=zN{YY@GSr
znvM)ee!6!;?w(WL%5}Q*n!$5qW+puE78?8`TZ@a#G=c3u0<;AtwaWO90BxZV7QuPc
zBD6jLyDHNxP$oXZ5Gu4Kg8U16dJ2Jl#y_Z`+$_btlZ9RhQd)k5f47O>V%H=j0Qe^h
zL=AH^5^(&P9>VgnEM#=y1~2>|tmNnhM-I+=ep*-wz!gS->O#1bae23o{!yS(CZ$>E
z61~gf9hnk$cHHT;B7`yq7J@NzGMSnz+N&#GOcb4MDP5l{ZP*uqU%-7`%kYvgK&0Ym
zU15=*nKaM6?J(l0g>v50^5^JOQrWV%uq?STu5I2Dh263~-n&{Rd}NtBhw{!jf+V^S
zsiDC8iXrMd1<UI^BbzF#7<bRDk>%2X-{GR4Oc<Q$NS0kIuOEfEd3xV5u6V5_U+d`U
zb;@{*ih6paanGu4=V(wF#FF6^SXvCxE=El!T<DlluKu|u_RMn~r^H%R@+DdI&~l~P
zS>>r~9X6`&@st@~Qdvz$6@{!&-1;3vTgsdSe@a(-RfhRFfN>9mr>dA#l#!#$%{#-*
zMi32MQ}7P_2Zxsp$Wb%zuF9j)`$Ke$m$)+X#<<JMGH}PnvHHfVn#OcfhWFu(E1oYl
z*UJx=Tp?xL&+#NQJJo&;vUMfBa11t+bz~WdvllFQ!9v>D32NN_#dd-(a}}-wX$=!#
zYo0uA7~N?m5o@^lMJa5g1=?Vaa)k?TH_qw2D4BpC=}=nZOQhVR{9fN0+uG7r-?Ty3
zyp+`37~DjhoIzYBai@kCIH4)jz^gbV0<N}6=(g%$PhsK8&=1=T?4;3>cdnLXmo(N6
zZj}zg2rgmzc5#9Z8pjU7lXgMTRHyL{Gk!AeQ{2rq!p|n1wl+8q<_P!GiASPT6m%_Y
zBf2DwaS$&%JzjNjmv#LZ=u(X6w4UyAPbTxRX*Y^^`8eX`@Aa2T<;_uY-7z-ZVrMVo
z3cHhDb*F4}r~U3ur|-#>>&dq1$%*L6E9@zF)l<{}@7^sjPsVZcgYs<jke-o=I`*0u
zl5ydZmh1L%4E828^mf?1GJo|_Fc~KZPSPquY3@&H-AXC1Lggy@ic^Ia-~WDB1L;Hr
z>3<k0)m8ngzK4DIXMOVo&C{>$l>43C{A>%@OOeA-`qw~)kO(r;B?h$z)I4tRkNl(r
zCQ9b4ERF1NbpSrD32)W(Yw-|Lj#CI-W}7a{YdQZnH`CHaR4lkd_i)bM05|*L41*HC
zUsoDO4RLWSC)3Ecz2TaF4OST>_UAr{(D6R!@;8Avsl#SOV17d+kVjoixA4C?_|+qD
zs>T5R%^~3wW==wG8|h(5fkA})2#4sK3bs&XWv+W=glW67t2pIZCcL&NS%|6VmvWtJ
z6cZ0&yr?P#c8KC_rg&ARG_SZ#<1Swd8$Z4Z>);S|X@&5w3>=<zX~rymA$GBF(>IZU
z0?q8wKNgID0VD0{BhQi2CV>?4d*ZxUeu+ZyA>oClB^j9l$$#9cwk(&z1)U?IATpY-
zZf_)rZsKp$$P+JF**Rd?%)LrAp-)4uYNv5OYDeAYX`VlxoCi*3lDEp9O*yEIyuO{L
z@yAiyCR#bo3mBk<#e(LP2_eo1f<>j7Ac8?t)Ly#*ib`Fw11>8q(8-}E7)1RpT66It
zBT44r`mn+WT*b^B4vlTKX<T&)3H8JyJ)1@KFM9^P9Pqa(2=~3&LynmdubBy3*jS9-
zREK8d56zY_{j^P%MHhYW9Tqz`4Moj80cmZ^D~FlQA}9>srAQ6i&ZJM$ev;5bX6rr}
z(WR+WVfYb2ln39q^#QTYQ(*O<k@UZ{J6{;+doP~~*BT)<1SHJ{gFmnke6=v+Z;LW{
zMe*{|P(Rq>cP>F3qH)F&o=n-mQ){tRmB8`IpLUehamlIK&0=K8?j8?vN76F*(pG~T
zu3>HkI(x4&%fft#6A&wv2DZ*rw=Vcal2>K@b!l$T-2QVc6%;*xd*ILzf)mDQoi+L>
zWohwO?4mB~3L<iFnTqDEI&xmpj>N{Uf|O<`7p^V31o2<h9ifjQYAzRCRrs@x&_neb
zX~pi549UQ;IS+&fa4D<FA)LO;9X^g-@F+1haSac<Ht#x3kiEB)!z|o)Y}H}R2VK4y
zP~#SN?frS(x5wKBAIrPZp>I*G)sUOx;nCuO(9RwR_R-!2?S|On8iQI+iCmJUe#ZI!
z(r7y<b}RjguT151!R4_<B(m+jnLq1`rt*H@HOz201~cA-uzvip<+?+KzsH46*xqjG
z-x<*3Ni<71MD8p+RN~K#G~$-&V#R644aXn%mvszwy+T8c*VFd7WhW!hA;vOB#w;tY
zE|5JdNI2DUgx6Y#OK>D-Q)HT}H<LZX7A@c@b!c=Ad0c$xX>aKDAlcv*gW{cN18$cJ
zj9k!+1d$$~<5li4g-gW;%0hzmeYRuW@APv)T`S8`K$vYgT*3!#_xFIh@IXX-{ZYwh
z2Kz&`TYhgW<vO|yhnS<k`r7lYs+{N8VsULhwIyoB#%R=WPd#rbQS1KlTFNSH%auQx
zay8mbArtUEzA6-@w)!YRagFxIQ+GASkR~?r&x*O0fF;i!=qy1(<YQZ!{<?}+=eHQ6
zRmWocC<jzj4OFDno@tIZqVhT(#e>3amB@61Z#-Tc6lx!xKY<!2;*@=5@H#w9>*4kT
z?XxThA2IW6LynO!S@_)!5ND1+B}PQ0o;MjhnE}<Nw7Zau4A|V4e#c6C?0&ULkl|In
zmH};6S0~nJf)ze*N&ORAAP!4E`S5M5D3@FqNB$@a7kIbD^OP9QFW`me^ys9)@-wyb
zA7Q)x2VE|a*<*j&I+B+IPfVk3PTN>H`zDkU+jADbRuC0d{?in8u5}7Jo6@A4j^S06
z@V$`!m`w$f6lTuPN~AI={pLh6h$dtCDl+x$#+6kW_Hw_zg$_4!o9L=VBtD@2eV9F6
zx+wKjxlX;IAS3H?T;*OyMG{@bH1twV@tEj4^IF{%KOI{leubFqS;H}j)O!7=9?a1i
zXVp6UMa0je^q=I-l>%(B2KZIkNg^?Tx`k6Ql(B3$4e4oJHE{dq)y<9jN39Psl}b7l
zIl_0^ButDDyr`3yrr7=oR<&74IGm<R4_lkH@XOldc3kP_vf-<aoTk;@hC^&Pjw}-Q
zT@(S{3H!OH7Ont6lm4><{6iwvrkAAOPD=a!8Z!ZOm)IKqd>U-M)oJ?7L<TrRAOUC)
zgi7L?Z6J{xhZ0YELPYr=%POyST^`q|PlM~8H!Mts$mB2-@aNXm)Xw475&Mw<uhhzs
z^!_lCZ~EDwL?QAoh|cWLs9ZgjNizI@<JB=8+sPC`n@gTNOP^t!r9bY>Z4Wt3lBhaM
z)C(=V2iugjz6~H;7hiHfO|Shm@y876En3Go!tZ_m(D{#-EwVau8k08MyySYv)UGNt
zUoIW!?zIQtoRVPAO<N_O*4zltD3<k8e+mAdEOsU*w#$#NpS<1mMVEiW-MsbMZ+FyJ
zZ05xhD{>4cgFc>#(f>SlF<5AY&-m9rD)uRa+5R^4{NS!tU26X){O8xLH}T94e;@x!
zx>FFEDSiHPt0nH0udW1yfZj=&H`<)M0l@l>Anrx;2A!nK82wsW^v!4H_T@Va)HzS}
z;SfG)02~3*HyO$a`H~U$l8k+^ZkS}UUJC+WA@hGlAimjxp*CFnKHljWg-1P>AQ7NR
zWOH$*@^z|ho{J-PD&qy6FGUmBX5wa?(Unf-B$j>u=2Q9hKW4PdU~T{=DBB91D8E1V
zU~G8KOuRyLdZdkoItZqjE=pFWuO~LUpNKV(OO;I(m9KJsuP=?_nKe>;wisK&EhSzL
zHJWIRr#JZ3L1ElsQ0r7GOQmYQr1dc+uwH@GyQ9j?lIYl&KY}o+!BTm2j7$cGk3;2I
zE>OGb%pAZ<^Pq!euTCrO>rpIOUZ|6_-HIMC^HI8f1DNEunx{>4(`*R0onSlFM(K!M
zN9}z|aq8ajKJd$}AZh}qT(3jgc^*n0M^`c_FBCp^B*6tH%Rf)8aVH+udu5YC^?}kU
zlViD?JMc637{uW-zlXH+O+ux6-mbZ}XIuKLy+b|;yVF6Y12tGF`e>?)16=F)0TkQr
zW2Hti^D4W~T^_4wClh3%G93Fv*ReFYA>VF3_dbSKGy1#BR2P{;ht}ONO1%}d^*uc!
zFGx%#MZWn<3r@xg{vp+*ynlA*z^-d}UEtOp-BrlYcWE(!i*VA7D<Z*GYLt<m4sdU0
zIvKe<h-ez@JRKGem-|NeIfTx3M)I?K)ZE_B@%(DhMfhf0CzqE07~@kd+y<xlNz3~8
z`Cw?$7wi15%ku9w^xo8UjUNLH?#Tw1fomdzdyaB=zjkhL@qne%dLV_yu=`AYP5pQ_
zUg&hqzKGW_zCUH;ZSX%#mO<5jzW}Cu6?@2&x<^!9MDX2aR7_W$r<vB31*5Mg=$pE=
zZ|`h;UvGv()dqnQEHnVN{aCD%`L-r=b#7<7v5_~`zCA?yY!J@I5ltWT@jVX9V4@it
zqq;7Ww!QRVhc=g$5UOaOXB>QzY5*DLXS(7#?>|j_7qbzlJIk?v`zUCH>tZ;L)r7P?
z)`d0MW>c@-ohr(ewn7|f1mRmuhxqO{f?WL|!kYtlE{_wOfkul2vfDAddi4^Lp&Fuj
zZE@fnK&q#U^V@Jtn)Y=WbIB>L;sSC)qNz32tPZ5`V>|naTDhx6H;%N6%3YQMsQX`*
z0t0=NUCu%m%B%w5)slptgR<53IdP+O{xw$U22_=-NFmzW#NdQHh=-L(lDAPk7dI4F
zNxm#rl#tD?4{Q5?pBhKUICCL8;)`=571^wZg}4p(_9q@)+9+Zgpv7BxXHN1P912ii
z-e?CofyrQ-VsX^}I{HM6L5x`m(Ohb~WM02aa!?HWIAy&0p7+H|dS+;4RqG5)*JIcU
z_A9wR(mZo?Wn-%Jn-pNDi&B?5&&beI1!$#DdG!XMzsmuo|7f)`8lmvjqri&Ce$%S=
z#oT~K9)i?X>5N_~G*<~4WcC2PUK&4BsSFjKZ~jD@P?RlH1}!6hqgR}CQBg>!&i&?>
zp7?%6U~hsgfUfJ`Xu0-6{-KrwT&*Vr-PGj4-{kYFqv+hfMsjgnVT+U?rHG|vYq}E4
zG=WLX!Y9g~a^ZsOq#O7;onv5jhg!Pf3*#;eaDS~6E8Y-XeJv9MSu3Ep4A^FED#caQ
zZ(r-5bx@%4KkJ}Shd_1gfTIs8cOMf&%GTq=nX~5Y8;HO8pLMWBC}fs2;qX^Z?}Iz*
zpwDtLYEhSa(oXB8OM)4ZBK4ELOCLXl%*{etRfsHHrP#9z6danVmD10~G&he2A_Li5
z*I9ZzknREcYOsB(&kxUE+&aR0`TA<Mx%lr@qSU@x>6cZCwt?U1voTQrZ18skNDmof
zbp7(2C@RdcC7Nr1rBCv)W~lCCRyW&9$1hq#Frz*=+GS;8W0okKAB!ghj!yPs&0i+m
zv2m;;UK8Vn;;>iyr`dF{;u6RVMHwQOa7+cDnYDPiJ$^V0da6O#fpKb)a)D+hx1RLb
z*3b-<51lz2UABt@%p9};W{M+_&|e?*pgy;7eA(*QF?El>Uyzq#H*ckv2Vqi1Fd7JQ
zA>9rF&y>PvDXn}%hr)|;F5-H{Q!tY9sr8v0&?PD6{=0p<QlY<P&-4cpIEA4q-Zf-i
zLYbm8|4oij9e0yszX^>ljtBs8q1e~7Fb09{f)i3VRk?K!=>V3{mMsQ(`t?k+!RN{V
zf)&z{KFJIeN85awS9--3b0TNN_xN<5h>gy(l1Ke^_q?&jJTV?7f9J@$BGd(j*_dXm
zK;-}f-w36Vz7`IzVP+=(6kGY6KZ^Id2aQhw41Kb4b%P~GAqB)T(T~roLtnl8N|&m-
zsmFrt(j}9Jgx&5jRT)hLtbFZdFxudpo6)2TGIFOOi-E3mHg#vn`=dS!eZ02+jxZu4
znBLxGZYmB_@f1l7w?#nLJ%9p!#^PchM_A=}h9xqIsRb4p3GTyjv!Z?xE$oB#*eve7
z`fW=lk+I97Msst!x$YJCRBnrkz83)(#vdgJS&AE<_^41GCjSb2gciJ2&Po0uA>mC8
zbLf6$UEG@adFVjhVMjXa2_3xqHA_SaRdf8MN6abq!|GHXn)#UYIe;QETd@j35hL=|
z^V!Mzo{sP9LS3>wcBPx?_+P=}j0wl=4mTatea9CuSt#xI_;z#ZuX1N>iA>%UexSyI
z@fedBB7uL@YPt|DTR?gDV-jUW;_zb}qtiIQ!<O@lm<wH{WE+K*T8SG{WgLkCv{nm*
zBjMWx?*YFoW|;lYuf#&y3JdY%2~}lqcF#}Mgg9jsP+)*~c;JNmO=dUno*%AcC>lc`
zUmh4Qe<L5sp7>=7_;sU+tWW7+>gA<sLSY$RXt>G&y99+m0!@01;Hy|k_J5$1?*-%u
zPmJPZn<s#2K^jOC3Z$9nSU5#FC)78#v}3KvdQS=RMYLp7tnPWHqs*jpb|c;pQsA6E
zd@0*EEMG|@BcK40M-YsNzGGLLv>thz)o;F|gvA}8ap|Af7*Gk~SLzeX4K3`MgneX(
zek89The|2ZHnpZF{33%^%W&NcNrfOlp-{2bXv8%PPo=2*gfD?*zsW{TJ@<4t9@$IN
z+7C$RgC&h(GOF$uu{u=J<hsk`Cdf0jlm5VuVs61RjRM=M_Q(!3JIRl6d&!~?qg*=D
zvfG7q)Di-+)ei&4vMR=?TgHe^M2bS`SuPTgUNUIuv7;<9U-?ltfdogjgx@9!(V?m<
zJFV;aoxP{y=!qt~&8A2R4e7-wtP2M$q)0sult&ez`88B4W)&qK%2#;8TUvmlLXKNk
z52HXvTb{;0JdMG4wBJi^r^W!SFv*<@TGLt+Pxx?%*%M##b_q>E<fJ=YN7RunsYzyU
z1f-`bIiTg0g~{2YDH58RUU>~>j3Q17l!r0fY*4R74Ic_k(x7AyLcH7){`(K7`~;x&
zm3f%P@ekx(X!vNpF_ft#&ZL`Dq8p-;gbQ9kg_BiF8-X@u5+l;tWfxim5+G*j(V9jH
z>9^AZi_wE#(bNeO1e;A{0KGe07HJFhhsEoMgQNr!gBs$sTi$>fMxKboPBzZm@6(&-
z5LphIWqVv9&6h75o`4OSj-!%I6Gwt2=WwKs1-BmSUyAE5&LrI=>aEKI_tXpyDhKd_
zh$gc2ra<~Li+YTQ`u5kekJoFw4{O+2;-lzzrU*4Y2_TsDR8I5^d=FzcX7q*xW^JWs
zC(ZOTwI*!Da5Ix|vk<&DF<N#%W|U8(blhh@WtWPi>#tYRe5*9bHUjg{&2b&3%*_~5
z5ojloCXk(Gn*<W!;?ppM#<_P7X12#VS+S(70=ZjWy_%MDUys+w!x3mf^Bi&$1ixeW
zLLRxxO{OiM*@AMWkMA9LcgmrEW@7T7Z;V}E1y-y-)i`%VXp&woFifw@r`{Oh3HiVZ
z-Qjrq=gYgrMK$a^pV0!o2GJ@mDl=No4`SIu$fo`dtqkO*i8i*1=RGwp+c8xFo5jK_
zFwvl!by`Q3_=xQ|{aVK7JrM7_IFc~b9p^qfe`ohjB~J(Hv&4rQ;We{q#aJzBM4IK8
z%<ZbSnFgC_MVe&D;63$=H|{5;1Au3b;>-u2bkJBMySQZN{E_3LB`4H&$=p5?#mGVz
zmS@&40%c=~PwXi#%QycIaHn>WEU<gd%#pWr|An|A*xZ;B=b?I+*B12!+lo=AxuyOR
zrzf7<5}x~?gssWM0%NqLJLIWWJd#u2rxW6<pu3`M>9u6hc7}FJU5N!)-tSy0xSrIF
zjmCQVnQhk2`hU^0Ac~=eqHVug*b71(z!u^jmVxR(EjZ&-K-}{vOD*-eOd2S*wLU%+
z#kV?yNY9FP@4UA+#sACf(N|U0QP`HXKnxE`rnV?gYdw@k$w}SZDpFV4YrRH)y-E<4
znHrCLUW8F!)AKev<4tHdz)8U*1m!IS&K1_BTX<IG#Z#^zE0gs4SL2`>qxt4k#^n(T
z_wj?;yVv4Q>$L}ngipF@N?xQDOo}{<f*JTj^Cm1uBom?j(AVjujv1Q{?7363P=So{
zx>YFuE^K7hHlcg-?ep?H9=lont-5XNw|{Jt>Zm3?5|)DPFzL2$`?s>3rHA#mu!DPc
z?^A78yzLexKXfDjb-J}jLpS3>(@I*>WL?r0mbP}(p-1L<!}@lKp}^k34=F&x)NSaq
z1gIw}@yV}u6kdrsGFve`N#r6jcsqpMcO*^v$KRtLG1B6}R<UCABxq+sfB^x}RUsoK
zxhH+$R#2bBY<na$bu}*)FJ~Jjl*lF>tLpxY>`-Z1l<+R)-f@bY&d-J95D`~zlZPNF
zEOsbecP@|^s<<7RoE_Tg9lEX^`mr5`<sHUPj-wb1QZj7|@PTQ}VFON83U^u(*`?;%
z<x))I9fYy+Ch!>(r2~oo;pN-1D_R+p9;DdkBz$ijMDg$`ucMzR^J4LaoCIB+Iz*f$
zeoAuZ?0xB`jLoNf7J6^2Wp`0JaWpAi36`xQ>iB13ul$t4i1azDK?>p%jO-e>;IQ~b
z7SsWl!~Qyvm<RV1mQ!p*<>&9BRkCNaoFo?@7sM+6RV`IPBQ+|hZ0X_NPozs3O&(e%
zFD5a~>UEmjZ9@_AK|CjI7HvI00%or)C<MyPb)+3%Isj1}xKbrCvOy2mip<N(*nU9_
zix~gZ!N|{9bzPaWwpKpEO5XdyAJiuM63dp0(i!`&-NNWRa!UAnpD*x~FB?Pu`ZIl>
z-#?QnZH5)L_P`z!GmzmIl<^i+Xw$`8(;ZHKdi1vF(3<k$Pc>|){c{Q<%-z2=b10^;
z<*<qkhGHrkv@U(6%`^#fdrHKVxO}JbWsSII6+`p0))%>P;M8S*&Js=djA5I9kcg~k
zAol~VOn11QvkCI)#MOE%1$?Ud3md=R=U>hf$k*tH=1x7XHfhUwwZNH}+BjL?Xjje~
zf6g71`5s+Q$`OU<1TBbLsLtq(l{we26{{~`tw~zXEdWgScnG|`&s~Y;sUkDNku-Yi
z!l8-gSjo(M)5Y0SQgasbP)@dq_!d6)x-yZEJGsp>t^B06tG02yzKO1{#pF2i)T^n!
zJ-)nZbosc#>7gav!=D_r-s`n*W%--!%PdA3U3<kIb|hl^LfV!*Ur0!2aQuno<cU{R
z=5pnNt@BO&NujQe`({WXh3DK#(bo=nZ=e?4O54y%-ymsx0Wi_s-v8ACk4U)x3dc7c
zY|5LkUp_`Y!Ty!FjS_bceVAS(vlZSdX7i<$`nvUaO7Sax4EdTbZ&njExsbzS)NYd3
zRf!m=#s~6V=4*;ymUO#B148QeMz^)SlW5NSPd@a4sRWkdxyW9MtnW8;x#v<77Eji{
zGj*Em31f9SA2)&w`x1ZWY$~mF+RJ57PoX1NVu>thoQ9c_2F?yG&I_RmynH#S;*@Wv
z-_~5puF$oY{FY(ppjn6j);Dx#pTs_I07aZabYtnTc@45mBC^*^xqQ^$xL@`tlCtN_
z`4V{wtPYPzgvtUxD&o8heDbibnY`yy^q0g*_Iu4TX@vm=(ShpswjQLu>S-{hUy>{S
z@+x*)rgU#WGhVKTzrTeYs&*By0t^KG%H!WT-$E$tzEV)zrp(E^$Q<Z5no}r5_7Wzb
zCvUb30qOxkmuc4L$lQK}Z35IwB}qjscyV}dPZgavNar>G{#u^RRvDfGi!Q&E_`s<n
z@`kOlT%Ht#6sh2ne?@Mk0&AQu==S|mcj4bR;s`;oGWhX2Y6Q3`qFcJ~n5hHY5(1S%
z9$2bS6%DvJf<%hIq8zH?Dd`fnswtr%^gj}?!i1`<4Oa?%iZ^%C&(09p6$6i4Rjn^?
zxUb)UzEQn2zp`~-%iSI^(+bD}sJM7(79CzDMuD=ZLmYE;bCkzh54B@>%&TtI(eC~+
zUOFv=LP;ro5iXN<#wetYb0xLBvRK9PZ@5L;Uh$j6KG*N&5$k#08eN+@0O~UE<%NGo
zc&^bXm^s%XyZ-vG*73kE^ir5_kak|ScERQ;Vb5gI<|H~LGrIP7UXk{FiQg}M6`=l8
z)JEY0*EjD)eqmUry;ER!kp5@;**%<$qMC6uw9Egr9utCRR;jD>O80luWA)czY=40w
zFW&AozWXq>@GZOO^N)AmM`pz;5=Pjnv7%d?kgZv;Jn%B+D@!Mo;uJTy1;iNj4y=a~
zXW~K(Fm7Py^ePO$$P>fqBB;4x(=MjC3aHeB(KbVsBND@5hU$^q^ieOpZH}iyUVlzH
z43o<KEI!7rJTj&+pQU|a+*gq;0!WBVtwy$z9jHge;8P~Gm^aSCV({<6)SahlFo~<A
zqr~=_RAS2K$NEDH>bdRI+-d2rawbxXG@*ta6O;yqGvvH{N6wU*Ca<jU)m`^i+#C^X
z$5O1`blYl_6$FxB!g#r}<Se<#+O!UQ3rEOxH_wvDlN`!k0DGT2rvb!fiB>G@%XAy@
zn%0D0oqs*K65bv_L&$}^u0?jSBQd%&gX5e6_|oIIH~f!I5{JmeBr=j~^d|H;vbG|h
zpoWq~0<O9bmR^Z(?FZIJaa0293zQ<ZEc%V=_RZy<9_0YnZipum;o0X)FeLrUJ1wA-
z)_I69t&B6&u*SasC<bpbThRH_Z>O;)?+NPN7A|~V^<)Bv%5GC{$(jU(8AkoQVOthY
z8A=D!&APGsce##$QmOauS3}UB2h~K}9khpxp}XcG)~@9@ss->2{VvC_h|A?g18i+A
zo4huK28#(b+u^2n&)4M**c<RY2Dq&J0c%3@s8k_B7_RbGx<im+$QE-MY#)9C#%#O%
z)Cx?@1iCB7%OQ9dRcNu}o6)J9rv66{5Yl?>yGk3-GI-XBbRA7`@Ol_`N!W2ujU&qd
zBGpE}SeiMFlvCmmhJ!a}gK07ku&qee2zM$^VY@^>Q`h*l2$NksB^2_pK3>E`CLW{-
z<TF_uRTr^Ic_N;du%Lz3?I<$pGrR8BSGMwnyEi;0!{cv3zonSRB=|gFfM+cuXSq<G
zA`qnvz#Sy}y6aa%bw<F6XDdwK=0(dvL4;86Q9ZvE$#&n%ri$?w5jgbWwXEaTsC{kb
z+)f(&W~cT~PW%I4`XYF{*4HR7ZN=lgas==74l%C?V60j0FJ45`2!+jKkqOphd9hN?
zZ50w~cJ87k1MHJf_Gbz+4CjKyJVpLmO&nNt(--t7x9yJn<G+R_ehOrrBRIV>J|d;|
z2-_C)a1|t%%xxkidlMJ*xGNN$|46O|2Nb$H+C}Syta>!`OKo_+`XjaJKdo?YD|jRF
z-iNT0{(B!IfB(6+4Xho2aHCEnLw6kcUra5>$$k5|n|hKzNYyTH|BYl$I$COiy%E*n
zC=RM9?;A=IX;}#lC+<b$`wE3M>Z~rLJvV&y_Qs)xT%hr=(rxXxQq{{Qnf0-w^j`;f
zABp9hD0Xm~FMt5y$B1e6+rzU6b>G!v0@`PN6B`!~A`ybCh__1LMBY!lzN_-+x3j&x
z@^RdjDO2ahj*C9EB2cK1!&YrV-YoVgQ}4h>Xvi|!sG%ZHP)8rX{d7^fJ^Ic|*X{7P
zvZEGHN6o!80xa`Ih3gY|$8c>=msFV);p2zH%B%%0{EK=f97Q6+Svdx~${eEX@?*U>
z!|L$lP#o{|J5)G&O0l3qh-29iO-lhMg@h^`v&JUI1Cb+4&pC(pp)qV7AecT4535Bh
zzV>4>2<0vs$)if(BCX5u^HD3ANSPYz@NT^cAn_4E)KD@J({dWhBfH)zY-Ki00M*V@
zS{8X0F;iy1#LK7dnvuk<JS6yI0MCY_)nC+V&N5(`g3<_0o3+ZJ^urv7yH<t3^AI7z
z6jFmV+;ycdSHtJkPt=Ljhh%sCAP`hN%2iu#wPiX~%UlkgaZyx%_PEGJl)p#4QXsGZ
zO<D;#iPzQ-XiIzy`y@<`V_<A?p`C5!Eb^p`jGhITX5(x~WZgK;T3JABc7li?xJ8fo
z=$m{6fj#kqfdt1;_IqQiQy#lAhSWF8G+*Hm!8GGEa}JKO^U9i>Z*wW=09;*QsN<cW
zL|3xp9rJFUK7_Lljv`ycKx03vvwlKnmPkCo=c5bhFjZDo0F$KMRI_0Mi8$Y8GjOT%
zYOQfB936<@sm#tADd7)O-mr7(1t+Uh7qB3<CFID~Omc7A-T{7y0|W$X6^N5Wo@-!J
zURd_q%YL(dukIlTQ1H|2sJDvIt>qwC6;b0G@+esj8)ge$iZb-*&ZT(l@|63O9|?ZQ
zHbh6&hGO(^72vn7>65IWztq%xAw$Dp#=%RGY;Km8X`bS#T)}Y3Lu&9ld$Fyi!#mOy
zA^V%Ihpeva+{0TODK!N662zr=fH1M-SSVh_y;r85=Q6gay8SvwijQ@}?xH?-{O@I3
z>p~-sHh<}n{1TJ#R{{U`iRqGb>;O(cw5(BCoP6kTF{cQw^}lJldrcAiu?nO}B$nG?
zpO(RRn2zQA!}Z&juZ0g$vRpgyPeO-CuC<2I2f7ZAzQr&}!_<}7%E;JlfehF-44R^#
zMU=8pg~-_`Moy>fE_EackQ8a@Crcr{_FNrAKRiozZse5zG0dHL%J+Y3Jw_z6|F_no
z7H0LuiDvp5#33b`WX`Y+v^?cCZ90E0x_3ZUDm@B3j3VXXsUp0$TFk@JmeD^&*&J0R
z{P*%>DoLZW|B{t1pTb}sj3KJ{$3C}Rz%<MUlSn||4zYocDU@e`Vh)jD!?8xwG$b*p
z@IK^20=V`8{J#ox;IVFvk|2$7mMoz4L!-S9k*6Ag)jZ>0zXbX)QgIP(*3n`U?&XXa
z!qe`zKk8!Q&nUk*Gn=mEvv!feQf=(BtaVbPu;&%cc3;$0ZAe_^)a13!s5r&fCXaas
zb2l1yi~mm%x>Lj{F7%p%{Ad~0LFAZ&bkkVKj_a)9Y&hX_lCyB@63gj%armQN9FM$<
zDm?rwoA}m|NgK{c>@fEZ&XOgS;>GoIlZ=_Uj&qOxdnnn@_mKSW+;AaHiJ8<3u8^O*
zYG}~RBzxjUOyezY&sOZ1|F<(`(ahqpITW#b6=Q3y>Ig-mdW%66Bq+*7_^HI=JD_6F
zi$FVb7xGG-q8qu&H=BC~@x6<~CU;lVgJv9tpC*%qSjtov@*@pzD1z_U2s5Xnk)=_k
zA7{mCU=-<l>2bmJbQGH?Y$c*+rvYm^;Pa-4<==dJ|8Bl5IqDY&4O2N#Nu`+41zol=
zxgN`4`+2`H&?-=eAjnF1?-D&jz*C@vpFg@VaC1+V1n^G({cnj|#cP~}NY`89qqVHU
zXVJp9)q&Vw#f=r3Of+|i9_8Q$RooMgfM-`s;DY_+x3sgeuGc+=h5PjMXG!CXbxwvi
zEBv5e3W5=o#tz}eV@gH1+}BVN8p;PoW3ipdDH)W<x3q(Et8;5s>L48)Ar{<f;4BbI
z0?;Dn*~YQY(~{3BtsJ?TH*}bY;&4%wbHSCtV9LyqkC7Ot55~1)n_z4^x`zOfO&RV!
zP6n8;7hw_@!4(%k<F?*unTIfhe>VwTpOM}@61`vwlWo`o44xE*1i>=6{n1{F1+j=U
zMV56?6wn%wdTXt9gIDRd9EkLAmHg1~?NaQGI_bdBJ&`p8z(FvSsN#z<t)8l4<=_w!
z$mWEiN>It!badF?Vd6_-KOf~dR;RQ0cvi&nt(cjY5TCSr+L^MDDh)}OjpQ1_!GBWD
z6XVncR*ncNx3MknDmEHwaqQ~fO?*s3Uk%KLvXWLKe@#vwNvi_(0n)XF`IJsWQOZJa
zXGFIn&t|EE-Y&=PZt!zBC0&L<Q-+uxig^)Nn07DG7$~EGf=eS2KeC>d8Hg{@r0~Q@
zXFAK2us@x^ZbI-7@>3NuLhO7xAPQM9uW>$Q5eWahcxsJG9-Xg<4}=*Z6hhJ3m=OXR
zXI_?(r~PY_@`KDV%no<hLlBTBR8@M>PC0x?S%*W!KIX@0l1Egf*0P<B2D8n<p1et=
z`mcA$#)=nx6?zsJm7g4fp2lM5<qdsv(tS~;3LgX$m`u#dO|J(;-Phl6IP?Eh-!oU0
zox#Z}1`zh$C3Q+T&Y2yQtIY6{Ol3!{>p5&9pK%2k(@>P#T*D+Ml=-%eMEUmR&)M;(
zIPKP}h6g!~3_jk+KM;C5Vng=e^2LsglqSSwUjvcCUtTH!j^Z-ecUVT**Mrw+s*b?`
z$t3Ip$F_aVxP7g$DIGc+S<d)j34)0S_-oR3zCTPe1-H~+)3S9WM4eXt07W}EQ9m7E
zkLsvy=HPnp(-{Hy7<x7;!lh>8Iq8k426KJ(`T5C$aL>Zs={MuMN$>#4T_bh?@eZs(
zbZWUM$sS1OcA;J4z56LD-A(VwWMCJAZ|^4ym(K)VpJ6kMdgr5FKI`ho)!p*kChk#D
zLTZqa8ag(cWR_8aKMMq3256D@$z;>nKXGpff`|?se+o|Wh>$;R8|1$pmJG!iNoOj|
zEBUFN6Z@?u(A~Y#toDhN`h7Ycw9_tugd6GDAwt5vDW;s!j1d8?X*fL4b5T*eb$_9a
zU2-KoL@)3}kbM@F<b7sPjUR*_H-GjBU1P)ICbEDRf)_15<Uj`JjSgQiJv>A_u6EJ)
zh)~=TU*;KQ1(8^(@*-n2{O*X`kzz_~1|GC!;;6zY`pKE4m5Yiz2BDY2icnP7@KV!!
zJQDq<`YAxGV)sb%5RktRqrW}EuE!~qs-}H+vK^zMl!qwS_^fVrT!D_!N>@{>9*N9|
z<s!Yi7LPRx+NW(n@XzOtb$Zs8S5|*eGoUys<2r`zA2)?ZkM)0kMA@KM>sfNF+;~3J
zNJeP$!&*~F1w(vnAmr(qUSBsAGyMFxPBFHOtzPf8fB|E}Z4zsajJ1$g_szyC<Hvr4
z4aC~c#o9H3OH=EW;V~*&pg*i&VtG{w`9Ts{kXrXBv9t;s9~=8?b=w(rJFSt<Unj~G
zF?QShqu)+O`9R~x4e#W0+7%07<)7^zd!0nFnXD>{Tn|fkClt$ic4YFN_j}Fc&`sNe
zx^ws^%TL<X>0jxLkbDv7k)$)iB)<4LZn_xL65{Flf%?rT>P-fEHOxb)mtSw7;eKu7
z$ft*+PrS#;Ud%H!G<gD>T`eZZj>=Vr7ACdqd7#nKTE1$~Aftp#cRaUHJa<2j6wDY(
zBz6Yq7BwK~FZG!-Rm0=UXy9r>(4q!U5T1V@Ac{^XRe3yBo`(UnqTr5I9c7rx2(2~U
zY=}$O^j_2oiUFq!G<^seb4!>A^@Fx6j=FXWxm)?*do{@ief#V=nNOItWuO&XSz|w^
zygxR)k7(K-GdwvL#9xi~M5^u@Y5UktN*L=DG)^XUCwAX{yBsmfIv)^~nj$bmDPdyw
zPm>UNwMl->-{Y39+9uI$zJ-00zsnQ(J$-+#`;smTeQe{Lx?g_91#*_ws1VVRuf^=F
z3*a;$fl3;tG~dtP#$aCy{m{up$hX))6O|@3a%f<gUdFpmCfwk>k*km=YM>00=I5bi
zS3|x(+hA7<!dIStjRQi7E*jwIv6l(>%@aDCTlm%RsbFCFuMb#!3dUA@o@o(UfAXyF
zW44wV^2s4~dKey2@<+N=w)p2FQ&hOgBrlmhPh`L!aZzXK&`eKR5c<1@@_pv?cU{#c
zG{Q+*CSe#)Li!ohJx*q-Nu$<OvpZ-tojCaS%P;I-0YA^G6lH1lf6LP*Aw$q%>u)7O
z(vX)#Kkje(<IFFPfTKc`n%dt9O31?bu17#`cp{UxxveC$M79x4+aBQ1k&ItXAb2q;
z_^573BxP9HZF4_h@Kld?`ka(Bb-smIl>5SwVvv^sEyf%-iJ9qD6BpZnNwUX6ilaoC
z^|x#<#BqsfpWYF$;xa3SGNt0OHSMy^;&LzB<=%+Pk7L{A-vt(TQ27H=-+Qqs;HE7^
z8Nc65QKZ&WioZ~#?l^v&HsNAAfdMd%s0w^3{xX*)A)mSz^p4Nwhhyyk^N;AIZzQU6
z5-QOt8i5itbRF6!lS)I$2<DkO`Hm=xIUuKzBvxOCe~fqymjE2pvlxU-A7D<Oewz}j
z`#YURp&WlFh=f;dPcmAD0=;ehz*ty~=nzLiUZwh4!l<;v;ycW+W?F|nCB3QHCGN*&
zP^aVm0`D4v&pg$dgxv0ap+iit@KWY+*`?6v6r~leX5S#(YexFT2O*be3FaxA-{%(0
zQcfJXNePQK1KAc|!G5q@C30&0vPIKd4V4EE{Gr$fpLn8^DVB^!4ZnRLH~Br`sghy}
zGdK5XqYX1f@PwGNj#&3BmaFIfU{h07FjLcC#3!b>U$^98x%g@KJuuDO8hkITuFEVo
z`&p%wnIyznMGe^<TUS?eC1GJY6LP;l8{tUtfZkkx7UW7WE&xC|VWYKzqcpUCS}+tY
z|DmYiQP1?TeE6L)l!*L+`7`Mm!Y_W7E(b}3DQNK-74!Esk543=*nbwFtdlrR+P$q>
zZr6LNY+m5d<|=?mL!)&EK)-27$dqwKl~Z!S`6=381^pU26uYCfX`iduvZj)WshIS|
z($4SDpm|qcU)uC4SjFgD#WEJzgYKvC<|S=lsh_}(pIlnreXgF))5f$*7dWn&&V)v*
z_9PcB)pxEp`~klJC)c+YG}INPp5$fyUQKYghPhnFO#^=mboYT@^t7Jz3f}SS`PuHr
zBEo9VlgugvY>`1S<D=$s?$LZ+J*L+;=?a7>n_yQjH?)$hqgN~oDf0{~i13Rt`9Rd4
zsZvE$sj#?-WlOX<<UrQ;P8NbD<pr@ns1Z@sUZ5<!_O@F&Fc9iC<<xW)JhAgZ9sLeQ
zTnBH@04J6Ydw;YPFGOxWPGUITES@YQu8Lq-o9%6Ynsj{D`y6S1m|F6;UW*X|IN=<r
za+Af{%N+_HSg>$UGj26l{z62B^Ce(q7s2>a=7_7{-hLrqy1gCd3&@$@?L|ZLiFJv6
zOGzmMoN80Wh%n>t3(!jOK>26<H{)WJhVl_wu80&iV%a|V+hGN>%2X;Y@^46;6gT00
z!oZv1=*Dbf*&Tue-{Re{>5mvCBRVOA+INlf!qTJfG8`Le*u}oFkuFw1@L&D3-9{j9
zX98KI<uS5CH&0m=W|_-olO_M??JS-ov5=LsDhiCa!Z^-%OlJni9z8y})L0(oeCN<N
zV|st0U4HW8LZ6bUBi;@HA*=8pH>D)_?a640(8$WmM<N_{owU6vuk8s25Vg{eQSaS9
znD*_R#InqDQ06%!HlygfQFJU=0snO;?GhKAmMmGvKu(ORL`cWB5n4Iv*sebr3Q~>G
zel5c_<^I~mp@>){CU=y)_~rdiMpK(le+()R|NgdjuwS~jP~!}eRX84a!uX*<H|JAC
z`2I!vp}FgUMaY3=0I_vasg0H5r-!di#BnS<4`7E}7x(s6Ump`h{jDD9ccQX!wzzb5
z66Z*0GF|;Ec=^X)gY)V=NEsAJ#iE?3bdlM|(w)vaNLkT!#1gt+qLfT^L;3&Fb(e8X
zH*DX)x3P_ejc!Jc?vfncjnYU+NJ&d7qq|c=TDn0%M7oh~R0c?+fPkn759fJZ_x(I?
zp4WT3&;I`%$M5+54AcZ5Wu7RSD6$7>Pt?<q`V~f<Y4)1g{5HcGV{_Od#srSwQg*@n
za4Oh$U+>!1?mnD~s@{*#Q>sS;QN3PQTZ&wMxYRTuZ$Njtat5+_vWb#y!@_ppJer_X
zZ>0QdCKrV8uy@&9GVMPD%W50KJVI~T%Nbm&G=|;ZJd-wjGt;Rro^36R{iq}CRGRNW
zp>Z(r6kQ9=<;OWT8=YVm6^f^3*mz<MH<mv#A`nSW?>x4Le}07!ntW;GBarkdby;bC
zN*Y1n-@N|X=4Dd3v#7+tf@w0l<*S=$QNzYSj55Avo%%b}pj3p~TgOygH>%&zo-?Hw
zePgVZyXzkjLDz(gaWO^ol^h;%a;NZ8N%*MdvkGjc1igM-&f1xNY+Wa&Y>$hS?Nm|?
z)OMlmMT}jt*ow<2M~F$RVw#^VE-F&vFc%!p=W~~P7{M~y$qpBn4wmOe=$$IkYx?9g
z4bys)ohQFAV~wC|Q=n@aB=wcR5IkC#VJ3bSD0mRTb*)~@^!}Rbq#+U|!cs^f9J^OD
zFiBwDG^}QpG{vPZ0#_#Ma@J4fd@NxT8|3d9o;Y#cO`^=(c|oG}R%B;J@pb$0`GkOS
zV|k94POl3#vXO%vpLY<j6(Ml-^a&nMZA^b(q~u=_BhiOPRr+%2WwR=DzB{w32u6L5
z0Ya%8k0FZ338_WYEu6xv%nPeKWrF4QI1uD8m3;x{6SkO0qnp(z*+-U<4<9Lh?^MQD
z-e9sX_M8}US$F?Hm_7AiA5+5QT=!mY6ODVvx3U?|Ee(vdyYW<|W)k_KK;`uf!@ilC
zpb?GnHUe@2Xi!zdj6q$dk(Hzw{^j&9=S-n7Oh=`xuO(%P0(R2K<K#)6eN&H`0qCXV
z*v9M50EnXga_(gzwai?y-HhyUrh1kv)JCPMt8&uy4vZ26=QgVYi;Ix;64t~xV`h0z
z7Xod-wW>=|q$#5ef$1g5?P^aeKACl3qV-3m4$AZVW-2#4xF^|U+Q`>j!%!5tPtx(V
z1HNXVQ`Bst=qZ@D6Q$Z;;dse9kM{T?+ykTDl-8fLZ?wb15QO_4BdY)+)$T@8(6eDi
z&t1O+zxDDL^lw+FCDC7yr;;+h5yf}OR=*Fbl2bVLsF<A}k+*oC{*J2usUCE?`lpBK
zwNE34+TxVvG3yUap#^$V16TE%lP_UoA$xe_K#{XSW7%taUFk0qjKG@cw7>8tp+KC+
zl|7EVuL;J2L>q_M2TRcpPFYAeQyKrRDAD{tYoiC%3)Sv{suZV`a9ke@z73Tkb;%R8
z87Uy`MG^EtL>MEwC?&<&INp2;#)cdvfT!XV(+EAmHbD$<gr<|r4dO#NfhAHA9q(By
ztmDcmZAtp5R0NY|*)&B~a69%116IPRqY*X{dLB`V3&{yGzqA4lb5zrEnviliQ8HN=
z{-_LVd~-W>y1mMgFtYQ+IG?*67A9)-?CY{r*jyn6Tdul#&sivUXBo3pmAZaXT1L6Z
z*ZY6O8V~E!GV6T4a@$aAntn{nYHR(<@~{_MXXD(oYv(IJ+LT10x+INqyqCfOuElx_
zp!taN^+Kf)D&ND3?2sStO)_b8((z`R^l=bOe*-pe9blMKD-(Zhn&xWoERRVZxuPfb
z(W|f}_rRz^>InB^?lpvRcH0q9{VUl;Xs3YgL7d(>IPpbKSpohmp2E?!ZaSF{6Jew}
zzN>uF%Z_mB#A^(E=Zx^8+ryck^A&093~t%JA^Y>evIq@l(UiE0a<C_wub(MKkhT9Y
zf6js0!>u{+a0XhAd|La?yKBCXhMZj)a6i=UBh+y%!?KqcmT9z!jRFHHr1aGu!hR-y
zT4;rK6^)SYcP!R3lhwx1a;pc^7!<MB;{7S2?jL@#oL=EmE|lq_->jI{{dtj1>FYMD
zA#|~}Sp;Bl$)!k#uP?Tk*~k*htzF(uncIP&8lM4C`%~c#SMNaBtU+JYs#kN0;3VHu
zTq8vyRKwtl=nCZ%b&bQExx#j~rn-Y(r+4e?ODb($ZEjjdC|n1vFv9kI8{Mo;BCA1k
zbmX-<!Q3Oh!i-*AO9Ms9Ft~C$*oJa-KU=+#TL?&A_Rj3u-9O!KbsNuBpj^=;L}u7*
zx&2uWl)h5!6#tHN0P5GK))C3@s%AN@%=jI?&1oPt$z~dkIBToheE>k8V*;SaBu}d%
zH7*#xbK(BPU{OAVEiE_n+jAx%>p_8TK_R=F!2!hm8+0%t!7nD9VuWLa3&&s^Hm`#9
z+({*&(-SwPRaAUitwvk;_q!zW^0qWz!329PJN{t*Q9btP4Ar=Hx!+p6;^k3Ir=i5|
zQLNColnv2uhhZG?cH>&ZiRs2Xt70E=9sI6FjLuyfc-JK!*tTQmiVJnG5AoXz>WuL0
zi|zAaZ;lJLk0hMj5KChZyn<Z{7d_zBi>cUDD)qG%fA2|3?9Yvh^gtUnXFy!3n8}aI
zp8!Ns96sOWC_zg-hR+LwL8kL-OV7qG%~eVESE;GTG_r7smXsp=JMY^Z;OB|)_tS4y
zYSy_dW8G?A(I(%BApoIor|_<nWDpO(%lH)yB`rX>)O0G>uUY??Nyy!M$H}CCt3LO=
zn<M2RuZ#ya6e4wOW~hRJxxaP3k`|K4dpA$p^j4{!{!6O02~)m|CT?#Lkx?Z^la3Ef
zT~<>$0bVJm_vj}xTI&L2L@GI(U{#{{ywZZg2W0d{SZ`*Cb+3VpPe*@^YVwt7%#<qr
zQ$des|GyRV0##w6l{N&YTtf;XdiLEj($V7B`lG2Iy(66pj;uy}i!78XrzW@W?(q<y
z(vufG0;dC{W>f=+>*1^VciTtE6v@T9B;V|T?gp9Fpf7hHMFw==9~u**uoHThm*_+G
z=%8d7TS=;cxtdx^r^AgqoBAJ-A-mI+ovX;?>zWVNXM)eQj=8@?OgMhN0{=I(EzQrS
zDiH1D21|I%Q%o1VspaJZEBgJnm$u3O{P;dyYn{jX`^eMrGTiddFm2?4RPgU-s$L-B
z$;pZ?32y+j<v!I7I4Lj={8d1788GmH^xSd&H#hgO$uW4a!8dD2*%h0AA^ER|<H1EJ
zfrz|LXq52bw{JxiU?TpX8ASB#Ohh8+@U<Q7Erd=_*bM=?>tnL^ojZy&PUm&kG{#Cm
znc}qmQRMd<qEnpHuYnCnA%QcEnp=}(RtY|6Sbg{-q!!L8A`K;Cg%DOKBGnjq8@N?G
z{E=NG8j;k9ltkekl;Kme;HSfwS{3|wSft7N`*jrXE;XAG+ju}{$`lWLsc@#?387sD
z>>E{H0%iK5kNmds@j3wF8KANnbGv(F`^<jPz9I}49u!lpH=6jVSC1&YmnfW>_+UUz
z$JSy6Sch=-ebI;HID@P;A_KROuv9!<K>&mPhm|^H7>cACL+6gh*Xb4O$6KYTsX;*3
zEST`Wp~+4+yXi({>4=_l=xHTc!!q}3>l>)v^K+-^Yuy<&0l%OLQu_!VEBtoAmY)NR
zkR5{A^>If80ONYX-EcZjv`EJ+@2GY&3H%e$Ay}-4WLE&NHp{WZ<o)P`>#C8s7(;yj
z%XWir`%zF}#!jGKfl+>oZv8vs1;+j20FuxY%teAK5xm#Bp%2e^W1Q*sU{JpzTx*n{
zD;E{d7UM@WDQg&Z&oT2&@qQqHu7?jG6#n(r(QnY5>As!Df`r{ph_G7#<{v8PwaLa`
zvhVQZLzx}IPyx!yM7zdBJ8Hw_)4bvEkv*7%leYv?Y`|6J#pPf?Mz$66NR>A$R1kaw
z?%-m`v4Mvka=&Tj67TN^!-|7Tc)xhnAA2G1ur`r42JC%k9ycM%)6v3BW?DnAK)Mj&
zeJcmIRvXn8-%u%klR=PQ5kbX0@mLhA_0`D0o+)lq{E&#wk_oE>0gHt*mU=Qdmr&e~
zRjtt>ui$k$CG?i0H1|af9P=L{N;n@Y@T*~hVyp!s6aP}RaL-$FzBJ?_E0IvfNN{UP
zOuZ5B`^fL&^pGlryv{~~JPfZ*m@ps8yEw;5&((PU9qPrb_qRl$dO0cjzoNLAP4UDR
zx2dYqH!n!|&iW;%(h+IG93i$uI~c}q#bjb(Eg3d=H$@D=YBDwTs7eH0gf+X%IeRgT
zb>Wo0M!*<hq=0NyfQReE3BkMoXLqa_3ZLd5+_kW##ec5_m?T6h1{k=?iYP~hf;oyA
zq|xdXTS{;dKtwfG)EVwAKn|=a+yx-(W}@5NR+eE>$tzQSGsCY4fn>F+--S!z&e8up
zS7K>JageEzD^!~F3klUS^^z%ZE{G^IlmAWASQd~83x!u>W)HuCtv4ao2u-yC>?9@{
zGwp#C45b4$+;2~IRZ)uDg_Q%uA-q+7oUR`qqf*!Opw26;KUDaPnX6JBYEaC(M5b!I
zz$HU&wBFAv_E36t(4fYMp@CC6(f%Qj`;mC2L(D~Ol1LBq_*EH}+CyIljmxVSC0zN(
zV&;bW>CulqDX8ZzsJ|!UzU$0jQhBJQeGc8|C0qy%&=Dd#39nGX3Oa@f6Br5?P78aT
zpTpV~ofi}be97NMA-?Tcekm~$-;&f}mMIQX_H?uKjC^2l$y;RiSbmB+LIDq}NUDcL
z+9*u)f?VP(lS$Irk~UVf(#Vo@aRYRP1Z`VSEb@xXvQ}?#4Tf9MhkMozs0e0R{!kFw
zPPYv|7PYk#vp`Y?D9TnV${}_a3H+Fj4dtwwWIo$5;S8c+O7aP8PpG#XRr`8$Y;A?J
z@X&^h8Ci(xeoWFl(X}3v))I|;31^F+3+0xxp%T{3LtC3AmtVS`pitN8AFnb%OgIWQ
zeOUa=kKD>x1aK6X?$Ud$X#3qF{WL?wOikx80C7QGJNv#}_jh7|r~&k8*!JxljRsIj
zsZ6(V=La}aZ-q^t;;TRlf<cc-ty##JXIbNB2eP%OLuF^&IQT4i$Uyc<P{xjN#lqR|
zJ~A~*dtFLz{W8Ch)>geFO4zYbVL3@jxy~HFAuF3!sIkfkjw#=eiNbTAc!+_By#e2&
z6(w;s3rb}jovt|Ji_yr7Eme~jgF*bu`m7*(PUS$yx5(;jpEsAmyKhaLAx27(Mp}@E
zMi5IYwnunuT@^K5P6_7S5DT$>CTiOYx-#lFW9Shm`iDKb1^%~VIWRMc^H(M-Ye!x}
z3sc%O<1kw6E-*Xf?-HGUa|A9|M7HSj1M%?ih#N^(P_(zZWe3popGZ4X5u165vETNY
zOF1(bqofm+WBnL~b%h8K?xVNp6O^TL;xIv1Q9Z7eu<@n}%FEXNwrs-1b`KXCYbbb0
zl?Wg1dT#Q&eY0^}+jV1AbwAgHilFJXFg8}3?%|W3JnVo+KXv@0lk3<b#rK}Y@Ut@S
zIcPaBIU&f7SM1gF?dLm^T~xe0b|HQMqF3?^Yb)_oPCoe*ks$1+S5Plk2e18sXObf(
z`zuL6RS%7TAoE{IOb%&S>=2RM^tQfq&pJPfsb)PDdy`>%GsTolMf)Iy%(D)pLqIO?
zG5GFP01o@42NzQ<*_-NmuA1|H|65?dt(VNa;;f!i0LfH#Jho?dE_Ux~_^VZKGEZk!
zg?!2q@Gfd<F1&ENSksOA*)Q_f?=lKcs8i`5Fd%Ysk8-l~0WKU+TEAEX;1&MqmiG<X
zZsi1m`bCc4>3w|Z+^kZqFl03wWivju>M)Z3mb$<mo6<(rkKvW9is>_)`}ORqNk(T@
z;)55TN1QiRgA+I`f8DF2^%WHR!3JuPpQB|>#w+2K9&?IS^c;~qI2g5>PzU8O9FEF9
z?7yw5!9HCf%=@8QgkHLyFQaJcQ+`)>zN&hrtq|2!*$~M_Ggf!G_e8<I?qNx)bX)b^
zCC%T#S4`(!9$l~Ayxf8q>@<AwtFL9RuA&L5hlCA2iBVv#SKhCsc48s;Q`tgO^QS9)
zJWwHF-|oA*^{f5ZLGD)VKdsufJf*5_yb*20@0e6*<3x1QErQY~$=cX<z&AK4O9XF2
z{<LaZQw0TChXsiu%Q}`5l70Rp-v?<^{=6+-Co2u=s>;ji@9Jujde;{8uJhfy_kZ5?
zNp%keb=y^rT13UbVjIS2vv9^p>ZRVBR=sZsdVfG0MKlqq7fQ6nM4`q~I69VJD45AJ
zo(0`tGul+|v28sM`mkr7O0>ZZYw2OLi2C*}a3}hMI#!iW+#6?HLdL<WB8}<=+Q2*M
zU^cZ)VzbJa68r&N&|vA|7ryE0MvWS?n<}ed77L3(edcD5jbYz>R-uzR9qA!t_vqW0
zUh92Jb1`k2;0z7A&W!lZ{3H3){joY6qrcx-Go(ASYB~!wU*Jiw=!8y`-*k>{OjHH4
zG9(~B29HNpz5lG)Z3UQcTpvB5WB)wGu%-QZ*L6IwWYz>a=Nyxpffn02o>)4O673u`
zA#q|o83rM?j%~KKqMOyW=gCUunhBo&PAn#89`UOkd6BSeH96-nIonAvr+z%7OMqv1
zY$u$AU=7*g<D2`WwdEAGfQoF@n^JsOwxFOe&#ygUAoGBTelh_v!$^q3SC4g<K=66P
z{PRZgXYd%Z5^^{=IM?!K8I!zdLAa#j=5CmX?vTMaxM6B5Hs+^Sd<d%=LI%G}e{Kpt
zK<I(&pBzCOPPK?Hr4Nf!05ma755UtWI(!W7@?UptFBj^eOvI;?1B>L1*t`vwR>XT7
z_fYx#UZ~D~%tyf=gO}q(d!c$K{mb6Qe2S45FUblAsBWQbx?4^4Us;mpLUpf+ez7JH
zud8nT410DxOtj;sv*Vj|2`xMgwEZ%_T<S4>U!eE-tNk}F*mrkg8})uZt9T}_TX5R5
zU$5>%!_0g0SjU~yvXlzPx?#U-`2#AgKCjBMQJoKdvuh8DCzXLWE@ANQy5%Wgd5GW|
zJK>#|sOCi~!QNSBN{Qpzr!{2sSWJ&YpS^D+Cc@HX7{Du+I?bKI)$jR^(ZkQwW1;mV
zj~)MEFF@hgMDZ*&Z^(HWr@yICmG!>7*+!q@=`4lzJR#O&>D|v<hq5hQ7bkz37PG8f
z{_065Y?&;Moj#1YeB4Wk)~8A||HTwf`8bXl_c>)1W>=XRQURAr_;B+63u|xsqpw0d
z>iUA6BMdjiZe~1OdtO`%onFbxyr5RdPw(%Fpn=Z|_L{~(-3%EZvsRCY(&XiV4IeBy
z0tu1`zHWqy81o~}5qtc0D#1?!L%F}|De>9yOZ(7Zv!d`VS^1qe?s9gOU?yidydZ;F
zCL)&-hQbu}d3K#>{<v=(!fu;HJX*QV@bozwxXG775dsg}r0$nLHNNuv-g24~;b%2y
zjX7f*Ar)e^cgar7Z)qM4JP5t^aGZ|*M=?Fyia<3B`=wf>!Jc6&eJ|OH+-F{C7%`|a
zBiyvJjp9I_&TOB1I4{;@sv5rNwq0m{2UC75ODO1Fmk*;9k4lt!`|VSA(4SjE>5fy(
z;C)dRL(zA)zF&uxMT67nnS5QlYpARE_JN*#g#(sL;ocwn^EDs#G42g9_ow?i0Azez
zFqeMBjnXV6<E@9AS3G!_Mkx?uPhs^P9kFPQbD0`0j}K9}TeE{GTv!GFSlok$F{eHu
z(cntFP>B37>-Yut`e5X-m9)H1KR)u?@)t#U0RwHx7873(0e^3iqCe3u4=oY(*6SHU
z_m1LW(zPj*?L?&3bxI5+o;--{(mxF1yJYjGATG#l&sbw}5stzxlsUteQs2x3u`+C3
zJq{%Xaz2SiT8NthXb_<3lpM$dRyQALm$`Gz5R@aeGf~|%?-?`p)3P)jji=>VR(Sbd
zoK-Vp(&{lg35tkbp=Io<%Blh{uFY9ue`M&rQED$UZv~+35l|FZXxwE{5=Gc0<R^Q^
z8DwMqmV{e%M$v?-hwxFcDK^R<=+(cIB>U{k`rhM?8!yKHcfSU!>4ZxJ(O;V5<gvo2
zdLoX-vpBhB|7Hh(gw_w;o?lx(hVVu7G9&yX0Td{GqW84lyDy<AH^7eVI;@f~(d@7a
zD3_JX4SULE_2%-{I+3&SVy+ygF(rexNm1tFyEvs3SwF`%&RH0Kr-Zlh1iw_7cQ%sj
zOg#ZcO=CUn|Cdh0N>C0jb&SIf&v(J#o|{=5x-2K=_EekG;n{j<FwJWE>UlqW$09w3
z)=T<4tb*gZIEhWN641V4*8W#j&Wu!nNS&?7Q&%u>ut}9xrm!!L#%u?p%^&}$PnR*7
zo_4ltCCgex+RTxJ*ndWH0TD58mbCZ<O>A}7@vhdnPVEbt*OT}jE(IRrSK#Y(V33G<
ziR~o2MFl?0e$$n1H~;63x^}Yps1o4urjntFG$g|MkBAV2;*rv<{rrS@1AQBEBdH7H
z6D@OPVgI_|YK^=Ac5^ypS0}n`C8hLSELBb=LNagP4>YR&5oyz5b=Ce;^7$z<QSqiK
z(+dOC@zdm>rE~;{zCX<9+K#qW9!)wd5a+9f4ueZ0ehO5|6DjOSvX*My-8!~WjeA6i
z)M6I7Qj_eix9O^5@CZ@*gfCZ0X=^yfaWhWi{H|H(Cjem;Ixvui2ofN7Pd>&|g;J^Y
z)BaS8Is%1)`2Sngs#64%xZ9s${Ms=@>J?sN=~@~HGJ`jZKvUa471P-7D8<X}F+6RG
z_rWG*p`O}@5yQfg*K&s2RT@>9oWn^uakr@^{D=QJ&wn;ZLE^JdWRC-cI8WjrF)QzT
z_PHO2;OPwXI;m-$6T~R6mcUahmDoWTKIC<ooC0S=&yGj5Oz<dv42q}%f^ax0qNc+a
z9;vDH%B;JOP$hX1yPANsYHn0tS5!4TI*cXy*6~{Bw7kI$+(Pn+><x7EsZR9$#H4JW
zLAc=QK=7gW>zn*n6<v-3-Bia&Yj|ZoD6o}uzZW{)3vt8KppMwu1#5al^F%=C!u*JB
z2hkjZAQn)TQ}lWfcBT_U8|jP{wRh>w1&2Q1cMk<bq@3{Ap53@@qPCMNmiMMAtG}Xt
zysbzHJ7H3%#BT$@ZPXjtlQ)L1@fIs@qwI|SJH8eXfTcUrK5)TESIO=^M3B^&hA1vZ
z^F$JqdaMrLY!VsthKgJHVw;!-E`2Hk)O$_UJify-sVWzBMy}L|@7NGK&}~(Y%J)$d
z2`;qs>z1MGcyipg(;4q8X(s@LN*aw2x!d8Uls4CAC~mX)YQMHx@*`cUc)G^Twzk&4
zNBR%fXjhl6L^?jzJ$uQ$6#D;o*J~hq5bz$p2H=1JSYYt~g|Pp>9{>Pgz&gkl^dBLc
zz`CR;7X7b~El}JSPROE>uhvvD6c1v2rPmitI-HD9j3els-5yQnFs!y1Yc8M27O>Od
zX;NOq&Beb5Q6gLRloI(~qP+dK98`*AAxS0!_B#pIcen4cwhT)Dsp_g#it~6nAE6LS
zLvNyo!DVY-TTS;<Qw?oY=C_*CXy;LG!0S|rkjmN|NQH7zT;R=q|B@OET-RO`@|>iZ
z@epLdF+HEJH0&cvq(vx~KbLG3s^ua1j=J}-bt%-%Z1K%^ZXwo7m5t++syiWAC2Ngt
zuO(_@y(*V$p-3}H?UOtMJA6x@JW66%u!O=!R{)E&^h{*EN7yjyopW5s^Y5|K2hId^
zO_HA92q#?R@a|at#6WAZEk9hB-u$5Yggs~4kYYzHmL)Kv2W!+LeTAaW@SK#v(Ybi6
zg*0l?rLVE?z~GLsz1=`j`dv{!BnTL_QTtZlx1|oIi75)h7u>ggCMFw`5=YtzOAs<k
zf#b=g&T!1(vk9CjSzTflm_v?~eH8Fg%9hf+O@RJsp&%JfSei!9Pg>u8+$Ur?nzjoH
zSvQw&Q?h#=MpWc*c&?`4{wAleSMzp1U{^sRJmVQ$SI%ve1Yrh=a_b%By||hk1DbS-
z6t+9r>J`-K*aZpU%y#*K&g_|wY-uXua|Ou`-!KNm($rw#-Dy-7`&!VT?wM>!Sbc(I
z+)T9$^v47~awU{NfIlZRjB=pW@FR~p3al!8yD~tCl#Hkj$Mt^ik!w_($%e%;;BQzb
zD9*cn+@cQN{9kw5Af@Z0f=k#vyKToOo~?J!ZtIgve{A<_+5@@X#+2ecgQU`Yli$t?
za_^elrF8?~r_Y}bj0OJ3-qv~aSwH>w-rk-kdkGpU8ZEi9Xt5n({2}Jir%!+5=8T<-
z5S|jlZuIWEmDuJr+GOX3^&I1|3XQQlK1_l7bdXNG#-Vp>B;st?5Tc|PxM)eb`F%v(
zYm}SP-wHH|uX~2(%oBXaJ_DE#pY6H>Oo*ZUKed?aDbk|W?x1u(CKuOS`&V_ILq{T3
zJkof!T(B)>W)hb%R}60Xr_1|LIIS`9H`kK#TvKa1HLflwte@kE)$^Z6Uuk%13Vy_c
zbtDFm$PI$uUuQV{^MC@9eg5`6jyCzGbX-_2<#h1%qw=Kpc{xOFL<4c}zyBTgwhp5^
zDmgE;!@r&GD_m{iI88Hj|AqO>u9JBnUR)ojh;;gNWJ`%!?)zxGOv|7gEW$&2JxT@S
z08%ZW@kDp}Xh*rw)U02jVhF6T8X@^W&<qf%CI0{g`y}stnqa#xPw0YE0OoX(C+I1{
zKFo<={Efkt+hidWuHA&(rGBLj+?OZ%XTHwxf9LD_SCs#o8OKl(x=uf3w=TxF;TXWh
zn~kFFw553KFY#Zdd+b$oOn@{7%tHm)H0mfM{U4?~m7UvGKi)!Gp7b@<5NFnD!~|yy
zBal-~;T0-XC!&Om*cJ>gZ$!w~GBxXMsz{8_I<s5Lb5XT*p{>(W4T6DqhyEkdpd>K<
zgFY60f6})P`(xCMnA0X<$>u(%;W+UI9MM#vln5YAuUa4D{%nS^b2F}*P$|b_y+Ias
zL6X7Wb_ndwGE0>?FiiqBoiLo(K<gkoswhJM3-M7ywht_XGbB@wxx--!ZPJE4=pz(4
zQ#6O5u(@YSOI;DQY#G}yUsq$ksayrLk8sW=*%<C*N^)M6E_Z&lCA9T{lKbskUO$03
zK!Iyk)ze40=g(Fthcnsq{y>JA;gpJ$^K5#WJn2bUDg9ZcDk8%=by<W{k{yn%4LblI
zSU5_3QBU@NVfY4%w^9jKtry`T>Q^6p0J`Vwsg6Bjg;$jM`Bu?#lckn@9r|w-W;m;B
zal^8erUpR(YGYSTAE25Gzr*3uzXFSdtL+pVr?0uKu@WAJn;^RK<STBGe%H}BYgTR8
z#bpDwXDuK8`f8ZdlF2`*b0t85Dz7~KW`q`x(g0)DU2!QP&c&3aZc*lhhCzc)3$OcM
z12Sn`q`)9EIc%JHt-Xi5t=hgW@L$K<MoWsM;29HSopSV%NRc4EN6>GgF$2G+T~d8G
z_@Hol5g=3nq2{e_9>#SMPI0(0_~M*3<yVhrGf<+zLpUw<Iq1Z*&jb2QVkn8#-+_LD
zT!6tnzE=|}PqKI)T<`ctU<r5pM__5)DtLKcM42BueQX>3o@XPR%)h82W7wtS97;v~
z-d~=ZEp2Ay=_aw9kMR>7gh~JHPvJ8ee!S3pDATqrkIdC##uLfv>3y{Z<O+)IGuJDQ
zpJe^3G|J(fwB}Be?V9!qnR3&A$RHm=@A`=9!4c2$?a&$5gPabd_>U5LWuB8WSrKK)
z-JB(RPbOkB+;6X6u3&lGJ4B!GFgUnd%0;+k4dsM@67u)^A{<wZ=uM!VcZ!qpogU=T
z3n0#Ynmp{9q6nDsKQPPUpWh|&0)JDqy(LGRE86NZmz?xjYs{0^l^<pGt`sRBfC=KT
zg((DITQC1!G83%lSTa2DAZJ^fUrMS;u1R%&zO-C%B_fe9#VaNgm%LIpQ8VA=I?N1y
zB*;tdVO%G|AkoF~oNW|$7m@sOBRu{UpYNMI_3|=bimCM|oGz)v!-dm4lg$dhc5lK~
z(w+O)s+1>G=c!S~5CFLI?vEHxS)FIt{x#$um<8O7#j~=pdk?e3X>hPg>$1+sQdvPu
zdWEP}2RC*Ir-qbC=nVEd{Evtby2x+I_a}!3N-=>H{(&+s5|*NBjA|>|-&E_<4~|5M
zv{&ahdF?-huA=w5d`C4iYb00zjITehX(ye(Qyj&WQ9YZ!lTJZBr#~S%OZ`{(9;E-C
zP!_gRiiltUZ_b{4)TjiLoT_?KFo*n|7%Aom;L^LDk0JL(s5}mw$HzQm@3`(@ArcO+
z3?&I|RiN~lJ>+DRNWcrmInvY(Akn-3v)kMM?fdPS0V}u6*dZ$6^=UNJa2C<6EKiBT
zBzm->Sv!74+<go9vTFS2h3)E>7e7D91tsQxXc>6j4SRJLyno>!dCvaav`m-y(ER1F
zQTwx6KgDk_Pi7dwur*A46Y5?B)h!}F+Y5xqV|C3CEr3;SAOU5_m%-wp2O}Y$kshxd
zK~qRC`bD%Yljb317!(dp&?7t$z<=%o5;z43G)mdQDY3i-!ryQYg%Nz%l!^fmw_~C5
zGkvPXLYbQUs+*h_5Li{42%43^dpFq(6QRcu=^*6gx~HKk!3Df#*1G1f;GlUT?nT%C
z@^;yv{+yX|IoRAk%ze~Zr8vB*H(Xl9A7tbIM9oWTiN4<p)MCe=i$SFMkXDx4eG<~N
z5PQmgHv?33k}49HeyJam<RuyNkm5nFNtS<%XuCzTBS?M^uh9YKXACQ@1g2iYLcY=#
zT)P9UpO*|gLuXpM7n?%Pu>L{9^&A_cV4|T~Z>WN>OkkxQ3@K_6p~{SXIc6ts;A0%I
zZB8-SKBR6GG_UO0?}-KrZ?ch5hOW_gUv~JciJ`H0C{IRcE)rH<PA>Tf)<8w6Fpql-
z1CPK6X<43>Nx%wB5?}j!X;4v3#R$x*!P=ZsJfK0Ej#OB&AlFm8TMxoQ7_a}ijWmnx
zdqDwkYa$-psYRIRHbSaPF)7t4iQ-L!L4T^HH%hA6*Kfvh-al5{CNg;|O@I?dbC+vg
ztrmf+pXBq_prAKhWgtzi>Rv5>1cE2MucRrBfjwGrFi=eP%%aAB0DDlCxU`rWNCgP?
z&$L@aNm~<^10Fhg5c82?7nNd_U8r~#;UE=xG(CvBJ+xqhl4qfKUZ*%_@IZU{EQcy=
zr&XwUMl5zyEc$-97LfI{DrKnBsuM<}dVw>wz+U-?IK3!%2kG_K8ZRK1Czw+`=2tel
z3M(@pcS2k%O@V`P!L%}qa3b6^+vi_A+(SP6;j5h0AQw<>z=K?%Pj*27s98O){eZH;
zPu&!dA4vTwF4mkT;}t`MM)jb^Ck~Hy)VbZtB$=D9Li7s!VzUD|Ltote#CBD`2guo9
ztmaFG<^W+h3Msx#*6hnq*(Y&x;vYn7u;jOx=6!B_l$Mdd`9SNC4EuOTCn4bZZ}t4Y
zW4!Hp1jRo*q&C6g(U1q&;Qv?rRuL>%FQVbt1lysc3}FxtPR@*e;w)zP2kN4&U(tv)
zS~-|6ZlB(*0MSWW;Z>};2(@)zN-6Ipg;*DhO=E7suY!UAebiSUb<;9-FGJ4-qBBld
zU8i)tPeH&_YooqrddgY`_C?pfK$NeFY1fJwyEK?2VJv1PM;;|+vlZ-dCAwUAP)H1+
z5}QRkPd|$2XD?wMLNv~ccuj!N^bEw}fh|%>n12__j6`7l2NS=&Nc8J_^8&9DSY+~Q
z)C3t?bx&erubHB~{=vjE%*;^oSVbt|PmOrx%2>sSs)=6O*SPSa>Z*YG>c#VF$#$%H
zX5t79Jb_IwB@|I12;LS6N*8vz=ft1(SJ&g!fTF<_an-jz>M2}R8RNAThs4u?x?oS!
z!M3{eL)}iA%Cvcc{%XR(KvB~c(M3-6rNHW{HLa0XwP(8;yBbx3Tq6IFqk5v%fm8?1
z7HtU0xro$cgNBtgX{(tx#fO?k>d~JMYiG=?{~qdcdSC-j-{cFVBNY;qJexN0>OORM
z`Y{PrbWy}@OP$5R7>0${VUOW=3J<bS@MM~*J(^Myw5VD5Kjt`}H-jQAu{U-TNllep
zV5_=Rt8xvjS)*pHsbzx;%u!VN!t4PSu+5@~rZAPLB9Mq!k@?p+SGjXTgLuV8StVk^
z{LyIhA~PX>kc4263<Wj0s3v{DAL5{+wwL=FKJ!|*v$UR`pgH@F?o9J3BeGU|B)>6b
zq&}I74T#^7cDx#?s&By=^z!%&`Bxv78bnX5YF(ag``MoGPLV>j38t&coQ(etx~f^S
z-m$9QrN!L&ZNGzBuxsj~t72Qjub=fhPW)p7tZMTv_?cIdW~bXZ$A1*mJ$Tm#?yf-t
z3VtL_gSkcHJ5R5>X31`DkM44sKb}-;e{}uA$hKW5Iz=cN{=7qLc2x|>g*L-<D%s97
zKTtG%0CdVu)X+>$n0uaqIx|1$1TX{Ax@!Kgm83cXjC%M2-+gnTIQ`R0$pga)h6@P8
zWAfM#=$GV7{VX@#HG*(aRcL9ic!GR?*eolPboY868)tXFVl@e}7s?-@baU#Dycys>
zW)A`lCg{5&T?YlwgOwm|(aC<LV-gKIgpe!64CTP*U!(%A@I9#^rC^X8N@(JgTpiPI
zGC4%o-H_%&Yeg_@+f8D)h5gxDcG3gq`R_p_0i&Yph=e{!aA{b!Z$xE}B=mTMeNW@D
zE3r-O2+y71C{yatL-a7}cr@;YLoRqIT^b=H-<jP#cHK8tcrzwJFkT`(US=^~5j<X*
zKVIEEUb`_~e>2`lH_<FT(P}Z#9z4-;)AC%erZC|j&HM*9+<|UF1T9O@$JRqI>1Q$N
zn?Iq;GsZ7C`LT9n#$s%afF!AyOsjZkF##TF(VxOIIgkFAI8O<8DyDGl>%gC#niFIX
zw4o8EW3wm*?HuTc^waOSew?Bsz1kqYrknb<F`9KV`tcE?ntcEA#>Zl*nFZIez@`}?
z%#5u3@U`F|8_08$XO`@2N}h*=-IYDn>!Tfpev^seMKF?%a899?(!(pnC<1m5o-5sX
zO&$X|&9M4Ji}3%Be8lSGR3nXmd$y3JwO|R(i@MElPfbClNE)k<xH3azGSffkK5pfY
zaPcCBfKvh83mWgoEG?%Rmykkv4)(5#jF?&bW8|q#Ebc7xU+G2gUs~<+x!3q?cxNCz
z6Da~WO7{Yod?WrUY?Po_V>}e{$Qtr0O*2)9Gt-MbC}iM!!V=G?1@p5`3-pM=$zqiL
zqHE%!Z8KHT)Z&rLD(TcJ=+n$69+8Cm%{|rwY>ezS3ii>i|EZm<uop~%RF=CG++fWo
zhy!j!l8w)ZH^Ko#!nw~BdA)v!Jhzj0D<tf>EukmWNn^kbWs)GGblI`xySfYIyHsS#
zVu?Ft=D)DzhwBS|Cj8uXf+84L&)!+@mBB|V3P^hk(Cf+WvD`<<)$J5}lswX>YnUgQ
zuu3-xyl3W@pTlaR@W+fkK?SASyrnu@q!y_*H;v+aTUPZ6*9`JI5ie%S6sK`Z7ppC|
z=zA79h{#xO7lI6e1bT-4to6}rEyDP=a_G0yT>Gd0EO^dsOBQaIg)oZpv0W<ZbUjh%
zW>r^PRD&xSP=V*!ZI$E}bs#osE*DNn6!^0Tp@SK1;HB0eD%B)OZC^=in5^Ik_v@&T
z`nHnVQwu7U0D*FQ?Zj3E-U|i6i}EuB4ANEgpjA<Z?8yj^N}!dB$eoeFQy(>RA9agw
zUuo8GK(jkd3)&Bpq!UaumCF^9Vl}3v_AtzT{=MS3w_tam9$zDVuK+k0JWp_mPXy6_
z78%lkv%_S$xF2-H$gqX~ZHq@|hrI{G&oI}iv(@wBxQAgcg>DvycSrW~(T9~~PQK$0
zvd4=_$I5&sKA)!gFE;}+ofj+Jh%t}VQ+Q4;t<LP3y?24ODyj0NrqzQ)6|#cFe*bXo
zupgAb=ZS~*FO|j2o-Lm6_D~t4dHTvNfA5(NV430UI(S3{#*^cyfPz=;$nL&bkl4dc
z3-QjaY}QmLh@oH`F^7hS4lU$Vg`NUA<nf)>r}aMIx1t_+ce0YyHdqwiM2&%4yjQj%
z!DO5-4_98y4kc}SPaVn2o-Py)kM~^6BrVT;+(ssyFu&L~roZ$N>gf39TEN>WD04D(
z8{c(%vHT6Q#;_)t=eafPN%|uJBJT?k^?*G0Fe^3=8TDHdbNw7?H%2CyX-y3DsDyg{
z+(E!@#j*-+LGG`iGwog&iU$^bs2uKZwGz_4g;+qCm#;232I5?uJx%udY3yBPi=UeY
zX~O%>6W7;%n4Rd0E5EBNSc(Ms@<+k`G#D=ce}Vf)1p_jTThDAq2jT)NmGDviNe+Sk
zaSK0oq~D?_Smf3@8ME5Sty@+2_$Qq9;sUeU|6&{auI?CfbGd$dZ1Vc==MU!w#J9aK
zZuwp;idoJucD!J&borHf3RepNH-!>jhu)d^`FaEa`u<%|<-c!4A1~vR64F*wM(}0G
z8X$FY^yJkM@|Hl*g$J^__<uH4;~MvyDwF?is<gl!`!jX`cxULrO6)wC$c5Q^DRh@>
zPdiy$H)1TiBDz!dLFKss<-XEP5qk>PVypq1W;QFw;*W^(&AteHUpzMF3--b1C@twJ
zV<ZY&`l9g0CR=G=QEmHpmoB(vZ@NhJ+plnf+{a8&gq@PXo?D95o|0LT8*3t=P^Hr}
zS2kCPv%_hvPCv`F*0!VNwmX{-+O^((u7h>YhqDqTuGc>g#U7~;1)rYe^>`y4olQGV
zFxj4a416~~+;)54(tfFvmbzH&dma78GDy<<@YDS%#qO$7^juh8-f61HUV`<)j(N8_
zHa%4!29mrFVg`^)<|1PY^E+|DCPZsI0$B7Vnh@#VOl+Z~3|b9QjtSJ9ly+8|({jl?
zW_+PPw`$zqKnR8P+B+ip4{8>l{3s%wuQ(iFs%b6J8TtDg>##nap<7J>&#-Bxx!@e@
zs958$KSsU}blpc|XnpWiAzCT)>);QbJa`NZ)(X0u^R`ztft5<KI7WBvS{q4Wu(~TJ
z<>t&0p+5{~22gr=Lhm?=M@2}x&(<c~yN?#~d}O|~zSEUFFWV5*)nTzek<g(J`Dl2R
z&;9H@{lgOx72~>egYF{%QT`?EQts*bPpp|_%gZJw-<H+gr2hAW0>~Thua~+Fmoy(`
zqmwC-DF%yxI8>4)uACHSmk@K&nG&o|krWABRgNTW1m~wXUiIpOiB6AEFo@hjlTsgG
zE#zmf+;72bn3vANRpI?n!`l_RbW4im6`jhk*Rs-yE>#U)c)SeW!m)3d5s{Nzt&hc_
zyqL(oMR|zdCrfVOfCJy{x1^PA6y{!2%HkB%++)LA(=mFEq!-e)5~CN=`QZ$Fuh!;Y
zyYWfe+~MmUPYu!=0}=wAC$c=Evn3RA3EHA!!~%`=n3Q#;H5}{6x=$aqiMW4XqgZUS
zXgYfMt$n(i_N|dV`9|jtz!&qC@23vko+HtbqVES?6oE;02=4p)2voW}sn?di3XWuI
z$40>n7OD^5X0$V!wv;WBqhMlMpREtz1SqF@d3@lI3DVWu%JjQYccezZq?y1P=R&~e
zp8_5al~S>u?G`>Ea^SdJH2<;#Cgk~v44o8TCU2qkTZQ7JM{^zWX83AglAO)<b|NTM
z+?~|YZGv8No|r!Wq@Dlv-DheX|9+OjGih(o+^+#2g_uvr&TrExVQ9K2)3~A~rY<W8
z;7)np@QaJiOe@kt4a>(PdRjUnOiCo2?y7f~O~EOQv_b$$&oLnQ4Na)IuM%EjNc&}F
zse|doxSQ`bp^w$q_5s2A`;K|K4Zll?!9<NXbqkBn8Nw3XZAjzfysh%VeI<VPS&#N&
zZL|lo!XJ#17NEo$ozOuBu8R$mh%1dgextGqM(HzPSd4i}uxO>RC|$Tx=sn5QZ0c}a
zo3Bd)tQBkP1eA<<!i);Lw&ay{($Y2X%4jmlLM3~4A^%)qaBag0C((?l0uSS*&qvh^
z9A9QvJ<;PkuhH!(&umy&Xv~Qj9<%p)S~pj=C6udWNeGX76=%`NtV(OnOKP%lr%zm-
z_H@YD)bUkMe<|w($7DI=hapC3PuOl%%}yseZzAH&*2hjQ@X&nW$%FqKa-{IWep;~i
z=$XWefiiNIMVu7Y4X2Ba0r*d-hQ!-_5ON*iWCEdYP@m*ybhs9ZI4k#+^HvM&0!4~b
zgr7=jzA`ZN^OoX?e5#>OGw;uwQNdd9M(cj0!@NsoK=75b33d3NOOFnFE&YEkJ?2WK
z2%R<1hsFP{%KXjrG#Vp+fAX%<PIQ)jySA7r%T+5{@YKldx6wO&?;OX-BQwl+VW;f;
z8_D-BmX|a}@vNd1vB#BKKWP@rY|jfr>0R9j%;yKimYM`C5AN*Pq*gmC7R$WKT^&T<
znSS(JYIzNDb5fQvo6A~ieWUE={P3OGQu|U{LnN=GAg#H7btrLuQJuP5{QAb#(%TP&
zhmRg&mRlUG@mm1(4le<OjyzXIS=#$JODT&H=X;EImG~AxwiR6(*<Dhm?%uK7YHTYd
z^j9fRlYt`(H8=6b_m}P_%Tk|rhP`_nmGSs!^1c8}DBrbX@p}uZX9LM`X?`bu^9fhj
z{P`m51FjpIcl3<-xj-pg&xq6A$^#q_tf+l>?4b25L+|?odHjM({1C%6kfq1-dX@@A
zw9Lk4LC1g5qqA1R=hp*gPnzP7@VE1>{D*Ugiira5sHSQ5`}uV~jR7BzDw5Ow8VRoJ
zm%R`&iF?{Ph}7{+2(c)w!V{V>7vo5sAkgC+m?7c1QiEAz7^TK@KRPTmD_Ft^?48gA
zPvQra<DM?(br*rP{QJc(#nyvJR*R5oK-SOtn~esVqmI6<#c=v*c(lrVY|oqWr*!73
zcb79o700-}>|)L2ppWt^%3}FZx~v-t#IB8z+3P=^c3i26hF`XwAb6i@1f4G6_mG4>
zCUuRhez3}JUsUH==W;k03hO$W*Qrf(dm|)O9Aq_$O9Dzb4zQs*;TYjbn@JfLwR^s?
z89@|$LJbFRD%}=baQ*8P**za#(K!5A;C|P4{l8Gre(}eR{YO8Y%=VwTj|u?tI^Bn*
z<{2o}Rv5P`>2qV>SA_ih^9A@)qEBYd(<@kd2Y3o#sttTkx|%}+9mJCD`SXg3V=G{J
zMQFmZo;|_whOwaUc~j7>_j|IxUAGcybIYtAG0!-6g+~~;^(*_YsOT_wj{X3XU~l5D
z`S|osHu_br9F{46!4A)e7a!_inW!!3HLAUyZ+Pd~scL~m`crkt?d`=U;QJ4K9qv8P
z(?Am^DWuTfLBbsFX8_n|hA3TN$L2Aduy9u|wxoeT1w%lhK%EluH%7`xoxZAt<TOm2
zlPGNq&TQhNtnPi?`}a05e)+CPQLV*9@5%Q#Nb&|t9nzj{4&$D}Ed>~O9wNMO>(Ku0
z({Z3&7ZJji_)}kDM&iiuHXGlsUUO+-9?;lfZ07yBNtkY&B=FCt*KYNw$APl^(yywp
z+_6qpS=j(sz9@*O9)%Y-P#A|++#2iJA8jp+Mg*aWJi<6pf|oXU@B<1_lY1L13qaQk
z>SpxK0n6=U>z-l-t6>4iP@oH_S2#{!N0#1xwAv^EOGj8n5s1?%3~GoL)e9HY13%}8
zESLdo|G**Gctd#HOAeNYoXI1|`e#>Qg?$WUsE7dnFj8x@z8d3JARc-qOppq!chtv7
z(9a|dq#cx}Pw2hFt?iw;R?x*65WIki8sXA!;IjZ)V0ZxXn_h}wAX!eo_gEKTpN8fL
z2xpZiRq7+_=qFk0zhFXZgvtxeM5M?Us4gh*?F=lRDpIh%r9^?808wPu;ij4cwA};r
zH%hSJKC1k_NgONzvH_k96dpl~tO!<eELKWY45dg!Q|ypL{(w?CTCXG8#RE*_OiYUt
z_1GlLOCo|hzjAE`Ae~Y<H&I5~0n|px^LG!4OT#oGlxd7ANd>~YO*-3!Qy5I6Sw{iH
zVC7(@kr#2wc`hS5{v#Zks(-l^hNRFQlS2g$vdPRyeT+tSY6dlrVcdiL+FGwk8VBe$
z<YQ3Lcj_@%+WzIPt3%1S)M}-J)*15N7OCzxDr&Q6^38rVjj>F!vKJPqrWpffldQM#
zK$3{^A2wN`H{nqARG?=AY#&TOB1&u{FmW9R>B23zNFmxEV+EvDPU2PUj6sXz71Uz{
z1XBzq%1Y?OhNSw-0C6)#8gE=-QY38=F~syRG{r;$n;tfeQk;o@!&}8@k76QC7Zz14
z^~P4sZj019MDt`!>#<~y<$h#EutpnMO8ZW|WM{fo+PG{^+{-Y{&Io81t3Uv4WUpRZ
zhjjU5Eu3lv%^r$YIN%>Nnrz`gbM0fBanNA6<BB*Y-gJ)xM#m?6!{61G_mqj;dO+_)
z4^n$WV|>+8Hf|<96M)n!qr5vHd=fyq9BAnu?BMG#%)~$bXwS+6OUbZzbj8SUGTJ}b
zA^Qx!&$Wf#k<=<d>$EsB%j5_{(?xJXZ+at1E46DZbT?e5QTfxqr3KQ_({jJZZ8fJo
z^IJ(*LNz2blc{DrMRY!1OimDJcU|B(24T;RX>XE!)VbeF3h3Mtr2Fzr|A@$-gpvKm
zDkG~a$L5v#obW~_JmIB8v_C$8!Krif6r1cA=s~4WD3A)J(|8w(%D)}~%8!>-CPek>
z(|^*hDvBE)j6;p0=@JRZd~$=m(`Yc`YbikW(I~%BsFwuJBOwJ!{kbA1gFE`a!~BHv
zf-*4-<Pa>+h6U+VwoyEDN#KKcYzLDFMsGtwHbcGw?Rp6VtTjWE{dqadbOR})WRrRB
zOgxVqLqy2r)SnoRsW{G|Y0Hjz={lBfwQ%C!3omVH0<NQjI3QTDMx!Ws;y97Y78Yig
zMdZ{RaCJ_}a)CQ&ffN<{g>*3x1XOCmk-eN})GVXt2!9%b7u_G`I0WK_VIhjr?jhB;
zd7|r1Kog0w(_qm2Ixg;w@DHOVRc%?`f)xEyq7no|mKmgxDCb-Ikmo&#h4wPQ-&jA!
z_^;hEO2}9kG7;F1FLGpzWh0=^wn*7)Xc*F?pgaQ(NJ$4^TSvy-iNGEy;Tj{UmcNa$
zQhvfsey``^wERQ(kxHGqY#vCiGWw+uu*o_$3l_%kSO2H2nEt!?ex<p*{nuGT^35@(
z+9%<hzNW9qmxA0(^i3)fR$_7l$AuSDi>THzIpSN?;&bF<ACgPG-H7kGj_>V#gUY~t
z)k|7Vk5eIICV#(@Y<iuO6Z>ifw@1r7ImRsKy%`qgTo8z)24^h|gZ}|Q&<8WAoQdx_
zS&QxZw<LgrDV83;N?Ds`CeqL2m5Q&)aENI($6C0_dZX`p1!SToajbjPA|9~bK9pX7
z15&As^2v$hk^Z+BU<TdejQ^;bc*~0bS&#s=OPyMgxHFGi_ikGj3TchAB*iU;QmaA8
zbIm71+Ia~9I}feMaX;xNHg8^9Xy9*D3Lv&aOo-tdb(iK1gr;Sd-Fw=`Gmyu#%3pTz
zCgZmWJpP(w6X2yNuaI+EHp#3$Rx6A#NPq2$1JIuUdGbe-5#YGu{1zaTS2Wy`BDura
ztOKMKP^G;N{xVqy=Q6E`Nwg|uBb>*Hd-Dkwe~AU*`-K<s5y+{*cSa(hzswRr+&;KM
z#BN2niwBWST=R!3bBfZjYqAD>A$x%)kD8o!OUBJwPqV@BQ_lvPr9jVO_-wXl;4mx<
z3(0U9)#(gEBFZU;gH~1+!DmCT8%KYI!$@Rz=Xe@}(E<q(VW?DqV*Zeq9Z=mBl7ljx
zBO`T%0Q7YD2f5W)G1FM_*z^ZyFjRfwl%D=N$_^6(+#f<Jea2NzD)Vo{nvs@1w1*3|
zKhe6v(GXks-GN#E`<Ve~bNx^sxs=A?j)7m|2*@sj<uTTJb~!(0#M~b%gT5*zY1IQ(
z0f1G@7lgvQ9ga`_Ee05+5YeN0W<xE{nj@hXq0k)-&_h89tR2x=s-y6~Gq{<ayJ8)T
z)kT}N0LQ4=9*ZkjerJ{{N9D2yb*SL_n|*A<j%?^sxwk{Ee-w4NfCzXe(%cS}?2%j4
zNfj(a@kBpsaA)s1=X_pOmY;j+-E~k_kSA57Ro2_O4f5IDpxHf-2fdAOr*D!<YVup@
zdRt*cJv-dl-s;(}1)YL_JJHW%Ws-+IZ_|tUNd3I<DM61@jJj4*z0=bND65O1o{X<P
ze-9#eam_jY4^wyj(B%8T|9*@dJ-QnPNO!~NMmnUsyFsKoMmN$ejF49866pq|QyN4-
zbcgrnd{6uX+mH8lU$5)&M8h@Br1k_lrYt+@e}t14wqD0)kW^NeaWyT6OV*N#ju(80
zAWHmUA1rUUTZP+{Y8`lh>2Me4g`aHaZtv@F(_Q_u^Z}`Bxr(RuDC8cNnv-Lgg&f<M
z{&{)j*6pMu;w0PrD1JHr{y@3npE5S?&lawqvz{(Qo-Ysi7{9zoRv!ErG`BgH^G@?K
zVim{I9~QCk?QPGr7sh)oz34BtKjDk*4||XJ{(}1}!+MX4W<bTHr5USvZYvXuQHo9<
zlrJ>m?I;X3(1J^UQ_vk76TX1{GrT3UOj1pO?rB{Yz~Bh#aO9I-xAYr2tS3S1x}vYw
zao6C>O?tX5WAG`LJ07|FEI9J_DAl()$J?c<zg!nr|D^7g(S9}2H&vu&F2DcvnQkM2
z?p-N0prI6Frt*pfGm?Q><PnHG=rISnocne8fObVp?>U$7{xL%M553nFua{mMjw0p?
z)p}VN{on^(4ubl0)UAZPUaGrtiBMH9v?$xttLx$ysDD;e!Q>_o-!pE5=D>dsl6J%F
zakDb(e(?`ZsO&{jkG2ewW_IxAGRj1NnmsYCJ?v~s=Rwriqoj{zw4^h3bX(L;WH(G-
zW>2QN+*pYuE^cK9y!kEC334yn%qvQ3!PW2z)hGN9#F+DcD`dr`#S60K=XEm&?!tB6
zh*Vs!KltjFU%#%Q8xpJ13$~JJt$2M@F`~*ee}Jh&`b#y9QGU1LHmTKT(N|CBi%z1S
z`MVtrM6pS8y1~|ajkFqVL~#JicfBK~G}(L8&YHpCBU_96+aW!tBh3ACR)btW?X7#!
zik8<s{v<&WCcFN&4N00}e!p~o{r)~GDfZKOg?VKDPIIOLm!+3H;9jX=AuqV$DH0MF
z$=XX8_=({mzMz&*Eig*@A?_UqLez~TA&osz+F}TMKTaobtMy^5hg><1<2W)9TwmXC
zI-UNdj*vB|Q71si;xSX{F%OUHLcNio^f7;CIVm8h!TRw>>thk(LtjQvD8*Cv<UKLl
zQ>Ee4u-H>oz*9}!Q*G{3UCmQ{=TpPjQ{&3hhofMZKIFZ}#^%$25Q3nEb@tOXNJ~v)
zo5xdAz@J&`c34{DYEN@<eDl}DKRFI{t<tRj`Tp^!nMgFZvfOZ;+CJ&$pc}5TOJZWO
zysaq67xZT{KGx5jIAcfnYu3-houS*951+Q43)i!pOepQd>O@bUCnC8B;jPBs9m6Bp
zLrmHx@&0ypJHO{8rySx%P)7x|*T3z{ElSQ0G3P~kq5mySsyE^)L<-xiZEPtm_>@&z
zDG@k(O8=%*-v%cB9i<Qm%E((ngl^M@%}G<V$+8YxKx`xb@|WWpYZG@{|J5Z-<@)va
zx+Zna;@uw)1d+<!4Qf09NfU#^@rq71iiM;=`S^-nJ_ZY~px;VEPd)($*;U|LR<Yhs
zg%2$coLqn#i)4*of9O$|8V||o+9QS#eUU|>o^A}{hd|Tl6f!uR1<EEX6v^H7P6Zej
zYVj-lE5)wq7iyH+oR=oEouN&@5eB9PffJ*4^AAD_?1CSRQ=O@&F|IDR#HqPS!j%1f
zUv}jo^<ldhx*HH6>eK}{onDH9LTch>s|-h4MeKCkXzW1;-z<8JWpwm{(T9ie948fZ
zI+Bgs5{NttP~l@Kx~fFcIE?OOa_MRzE2sV0!R3>m#UMiWfB($9Z~MkahWg+-Lk3+N
zyRh18Ux|bJ?>bVy>Qrr+JQ-@V!7J^(+DSLk^8H6eq5M+L^z(Im7U6?(9m{?*hipgS
zkzy5l0>P*9t@)-N)VZ79nD!AV^mYA2+87n_zW=QZ`C+Q+eh*gh)5q}5NE|7$oj0x;
zs0IeEWdSzH0+ITr2?p09+NQWmBDsndYpnaJeE!7rrXvHZ6{-4WOSVRehg~+=I=c^*
zDN^2Ruw;asrm;bWk-drzx~BSEg40(V+hOAEaoHFm4Gff6vD(`7IN|<&3`VEBV`wbP
zHH-m<=~BxZ%W#op4UGEnzs0@)!5b$rIwTz4gnZa>d5V-tB>DB`E*j-HS%n-Z@N}Z)
zJtTS{4PuhaJ5DI=UMUNSIA@*(c}}W05MnJ|sq+TcwkT3UU=%MG0&K01u_SBx6KMYi
z?xIUM={YX7OmJ<uHUwR)L85WN^lVi*vg~I?exLD=OJisffeg12UO=o0S7iAZNINWv
zx6p5*p;_ewKFErMaSy{8cy5&!jobfOrw`ULy&k~^slx}%f=_bBt#d;8CQYi(_Qnz5
ze3cu0r9sz&uWy*`ZYH&b6i8A9zWh4MwLFw)pEB*4YBPrB_yL`Qh`Wju%56WYal`zt
z#w1kEP=|0e`ss#cD?cDd<I*G#PAjY9nDSuN!Ed8+gJaAl#0&!&v0Ry({zj^>V>Tx7
zGHbgDE~}8mYf|E6il$?918xVKu?&2{N;XR`b5S<^)lPdF-<SFN;T`zt_z;D_7m({9
z1(V^&4jWuDu5p>ga{EFZ(37e5DScH2#ZqV;iDPFQD|f7wRIU<rlu18DI`vtR+qa9}
zK*X|SM6z-lsuk&Ke2IC#?n7I4!@JYCpABXFPLd^tc&=!=fE3^6Ds43~WgrBkyA7t!
z|Gble%`%X1WP{%RenXzU8^>4r(bZnT8EZDR8cA71!%^D?6OUsr4d<!i4OT&v#6Pbz
zowF*Z;B<Yd`75xBZ3XojoszF}c(QqAG+Sj$oHQnyBsqLGh9?vWuU|V6^#dn>e198F
zk_^RYIEp-JR{a^c4NL&>IAdy4-)X{-Jz=s?D`k4HJZX>2Rlo1nE+)y4w>(quEInT(
zJqofXlqdfRl~u3oCuRrAf_@!xJWtA#I?sp&56o&YBp#0^H-eSSF;q&m@)Zer_&KvO
zR~X9v>}dcKe_f0t;|9U0YPAgVXYP0Gx+XbKD>8-D_~8r<7VH5XQV4xaH&sbOJ0Jq3
ziuGmeloYl79N*qf^!hcoQ~sW;H-5ONc3HkQpb+G~jV4_CvR&u+=JeVK{l(ihFgT9n
zDz`zleFg^m$SJYjK`|%177DkMHSsp-KLX<E$VPbvNb*nA={Yb^%>XgNgL7!V<`%pJ
zv6G00%6n>EueD)M))dOQ$aC4e_zvocr??q2_7|BbNVQ4;xFyUhhcM5FNO__4QDN8D
zGDPb^?rI!8!Rw((ZMtD63%gDvx+uI7YYxD$Z6(rhmsNy=RR8*mf_ed(PIgP99a6}I
zl=g0Gcwgv&?loyYZ+=EZZL%|4E}zU}%h|iuEOry8?k}&P2;v-dRc4MM-!B-}c3f@A
z6>pyN^r~faxR^y%aF`u{n?Wc+Y=8A2t;-?~0w^f(cuk90l2(9#25R8(n3xuPbyTV&
zaHh)vitIp;C14B1NZ+Y9AqPZ5!DU&xtcUYAE0aN*wUsvG@|@1?izCZ)6@u^gF<Ubu
z<qcdgBKGxlde(<0kI<2LP&tCr#R=m9B&fISN=8_pT8<a#AgqHBG<FzniW~;Fa=PVb
z${z`^mA+#QHNWOJOJ?;;&F<&>rW%Ur2C66ZrX$X|iTjm*=lL2@xOmvnu~!<c4Zpl^
ze-*9YAPspuYXshBm?9e1k$nOOUPtJW>_%XUN|ehWkg?)ul+QQ>HW`h*R^@hG<tg6E
zs}Y>XkJPYhr>R)(6#Gj6MOpOglwOk*vR*}rag-qwALorp;r7!$fjMPijGoMvElE~=
z<@|729FuKbZj4~6u)8uvQ1(|@$@@k}4VU6hjcW4W5Lhzi?@7+(p(MiJFhYRwIFQ$i
z>os;G`O3p6s+G6UI7d2~Te+<bSDWhV?P%UWM@;ST*Bj=*vXWI4NKCD1b!UrH!4(6b
z<i~_8*|~~tbz>dUXjKD$-^6=6o#__Ms}J2zU+bJ#8|^sZ;k5DF0HxOrHg5%iTB8+>
zvVMcKQV}m`NNOOf90rvr5<%(?UVz>o)E+PbP4r?QMe%DF!O85sC|?^sML2`VcO%sO
z<J(04|MH##hag#*gqM;t%9+1#p9Vg%O5h&NL~X0gXX*>D_cF+yvmMftUP-29sUE!#
zE95g04pVk^<^dStU7}E!@E-rPbcK%z5!Z!=%y4S4lM-Ow%45JbWP?@kH!l$8zV$aB
zW8c!*NYmCl-<WETa9}{7s13&jUFPL1Mu`J^K7!8`!pH6<wkXc$2YVxVOhfV1_;$jw
z=)fe`=-V&O5%Vgu3jNhL#4H;LW-GkeH%%VD*}w1I{A^oz8hF6@1GIAc-I-a;G?(<-
zQ_kMxi|oZEjy9JeT^wwb8^gN|s~-!2n;7&5^EZkZe1P8*sVr7NDmBAGT+4|8>)Q-Q
zUiOz~Bi!VbXyvf`_TGCC2g2cx^`yXfg&9s`OTwCyCGK;4v|htv=8}hPSDsexEoA1A
zzxv<~o$cTC$mhus=2_)d$;@xI?+iA2W8TTKBYtn0WR-uQwLgZyjl@k2?S0G#I#R3T
z=eL4y8s0NpUeccKtY=8f%CW8h*hfI{h}Ll=&7x@}n&CbPGtT`V$m@8U`j*;cme4Z*
z32cBhG%B<-i?$1ytzSl4zEoVD?#vGr39N#dYzYd>TeqUaSuVx-L5JJ)zUhGO;k#ut
zQf9<;DZaTS4w_XuQU-qT3RW;;$cAT#UY_=4<4aC8sQFk5W+{U@Zp%FP3#<<Dc@99c
z`bpx8bd>3dt?3}(1hR}WRC9Wg&-7HIJNN`;#24GhXoSskWmGh!fQvHP;FaC)r3W7@
zac{P0Sx|`3cD1p~@hD;#60_-P%9%77m<`IApSGCo%URqRApYf$Fb3Axa@JG^ww!Xd
z5(f6_a`q;MR~_ZAJ~ME5ThmVNaL7huULiq-%m0WDa~@j5sjWFrts#kJ>@sEe_WdMN
zkvtg;Hme&f1@!c?);|==Wh!I&B^YQ=%b>~q6ya8edBbLO^hk=@iUQMqR`kNb6;PuJ
z1_IFARax=XD1jn+aa=?$cmAHQlMU+fp6&>}^x^iw_8<+~zC{e<4Dqn^@|+xgr9q_)
ziM^_TJA<6;ury}0oK8830R!eNRAM-imqs2-Z&bPqnO{Iw`rcB$uOB=<B-~Cyaatkc
zNCk8bCv-$A1SG?G$yC|_+wx2}la;Eim1_6zWiXUQFb2t(fMjTPYSXFnSNo!$r-<EY
z&l_!Z|CQ^GQ;N#O+E!NT<J#e9Vt5Ug83~zc{IK19%N%W689+Z~Bo#B-!VL5uH2`9$
zaDY{(aLp-n->}3PVji50@6%2m(BDTZg;he;)A<~c$X~t~1vUM64=W2m_}UaaSV{HC
zz>r6SSJW<g1Yxdy_KgzAY-hrvI=b(2K5T1n*u)&|IKR|-P74l}cX~=Tu-xE0MxtB=
z#<ZI{VU`^MsHxB(GhWpTM8nPnELQ(Co2e>whna<N=-f|PJlN6Y;n8YT1pc4pi3uE3
z{~baxs%g1uX#W{#V`osOEbQg=hg>PHm-f3pM7ix-dsd@JMKYRSRe@^JL-6H8M&m%?
zae=V7Adca8_h>c(QNkzyVN;-zK%7r<R1=Y%9ZJ7Tqn!f@%DYL3Km5oYP)npgYG*rY
z9|)lL-5DTG4#&r+q>2|~8TLRK^AwPGNv^e*IS$))K;@KAo;*t4J@%20OP$n^qpA(f
zV@)(b<PTVyEq0s5_n;-P96JcqUN#=vlVL=vYl{##xk^w4JXmA)lUd7dM<y4EV{ge}
zvqdY{Nxwb;gr&*gBY}Ww#H<DBLS{DVC(IA2MKqH#i%zs;C`BYFywncR!y}V|H~g!P
zf%gWH|C9_(PGq`RVgKYTH(_dBY<59T0j_9;J$2Oi1`=g#TBgdeuV+Ac^|5+8rA;WF
z53F9bbuxOVH=8GN66}VWvGL}t{~6HnvEEgq&JuMg?y;^Mr=g?KAMR^C`<S)54)R#4
zhtEcczUy}PVfMgOHA)lfc_14306jFBf<~1>BivS2tTvIPhN7=~Mpzw=Se=yvA6pSW
z`}879c`T(Rl;OiFeF71p+NiZWi4{b{DCEwkML)Z08@l@^?NJ(Q^TN?gb7Yi(gF8u|
zuadrq96`r1KdfRlaYPS^P4-^BYU%6mDnC%1QvI+wNtk>FUrgwth|uVmkezxpRNim5
zl$YTxUwcrY7wyVMwDu`h_H*!?&u401p1)4aH-Z}T+sQE7V+JKnqZsoHwTt?39Azo#
zcjtF2XRFEPK99Q<AblY|2+wka#LJ^Kz8adx`YaV+8H}q9z*-Y?8K59Ms|A_-ph_8u
zV3MJ}TRQ&+!Ym_8458v2{r4h|sZC^{iK)v{ISyWns@1{C7ts>wH|6Ir4VT>!=W-m$
zUs!REX$ZdOoXgZUj$Np&TnvBy-1udkqlc*U({j>IQ%*UC>#SlT%y<&)j9D{|K8x1h
zR-{_rh<PT3JJ!U}B#$z9Wv5u`fNiVBgrT|AuetNQjJ0ipApq%$#I9szQnDqg<cR(m
zo&U=o=cKavB#V2;R%5|vLnLO+oG$YfXS5?l&24?^p(o0plIG=Foblv^`r~knyM1;1
zwCiU~hFzrH@aiA<Q<}4vzjI;(c;O{TSc|48x~tk{C1{U2-(-e02{1f2iQu7ixq;v;
z=-IbF1v1a;b5|0|K&`7(?`f>Sm+g%*zOt-f(GaKS0En*G=NVZlbif`1F)n>P#9~=N
zAiMwV6Y}#k>=&CtfZ%spUo`*|0auaCW31;+p9i3i2h-Gx!j@OS)eEY3Ekjg)%a=m<
z`vT-D!#tiUqvv&*^=*wz6PpxIfC|sq8l@~JHs})^XU~)1PLoWnWsT*UK&jy_n(JJB
zMpOTK#}w|#R_WwqO8V#0-ZN!|=Q}mB76#_<k5$~wtE$yioFDx^e%yUal&KoYZ^kh6
zCKijnRp*sgpF{gQB)T07cEU&ZQ^UiUlig<YigeNXr{@rv@W3}rf$Aflkba`4hijw=
zkm1i1O|hZQM0<~o_i+|WAx>t~t*25OD&a#A^i}u|z65GGt1FsR0YZl6Q$G#rAnqv-
zp(vQ>+yO6!|3;Z-*q&8Nc#bdzTPD*-uG9xzfk>p!$B}%Bk!C{dj}Nt|f$#V&*D;uu
z%?H&9Oln3ce}cOIzcvJ>7ad8Z0EuG+*_CO5KsABVD^ckdbE9@G*=PmW;0YKiSL3|K
z?%QeWqY+>LxN2v8Xm2}g|Mg8^!2THglqy6VtwZ@r{zv+VQ#-Of3!QY!C5HjPHU0gM
zbnl4pc%osongs%fXo?kHCaikFW8YdXFtnFR7tsO*eC#X&U?kv!el<};7cnDl@jlII
zet(T?yd{r#jgK=oMucttKHT(Yn-=c8HtQkL15|SL)({VYr6jq)Bc8?UbNRRRx;amV
zA42GGnfY{&Bv>OvEU{qa)@DkV`P7~X3Dp%bV{;-MmL(rn^y|Qf0hkw~Aa_RYj1GYQ
zR!}>UWFOJ`s@26Kp$urz*>Az^&#J64&p-Eq&cC`cIC}m8xALw5a?kftf{XV3d}eF$
zZhQW|dIH+~ojxI$L3^3_5$z{vGWa~Qg3+U&i~g5~XdL&<H?ZKCDLL=3*tl~8`a?xX
z1jA8OT|1;cb>JrpYRh#+ODF4FwCXmu=)N+H3wY3d@4hxEtR6$>3(U|ECW1E-#ab|;
zq4!6u+&~-s0F8nPN}U0^!ts=i27fwSq%&od5rl%qx(P12A%DnJ%u4pEb?x;##Si=?
zkh~>PQ-j_FO8*MP+-QZ8kI)@#pgWIxqy#Yh#FsK@T(14?jh?+@r0L2V6C^w7-M41g
z%x%erp=7%+OGg?j7;T6Sh!QR?q?9ipme0pSfpU;Qv3rL4`hRc?;~63Qs^n7hft<nc
zc+X`8bk;G281qj-Ikv%pm(%*uJ%w4K#fa=g8L@Fw%D^gkifayNRUkCU2cRBY6^C7)
z>A{m64<h5kg#X`ph{#Zk79XPPvpdui7L@vhJ1h|~t>GuANbl}LJ2n1{g+^C-u1J)N
zc<0P%y}3o1T5;iJwD(d@sAUKpGJ>GlRzpxH*tbf};#2SCs_zy?H2v7aLH8dSqdzH~
zeiVcfDY+rCwmmZPA<)f`pMd3L@nqiO67P`^0+b#N(v>s4Wji~P(SYR^lxexbqfXlB
zLFs7!;-mHg0G`nh{+e+PGw!tNfANTnX?egEu(QObK9MZpT%mvsV``5)85J;busnN2
zZigD~v?#`rJTg|Am-zRU9M4)Rxp320Rq4FJncJLK0wamvjZ0oAax2N`#c20>%o{q2
z{DJQv&-~m7<5V+Af2FsHlCl>OdGR39&3F02dKz^V3NvX&3Cy2zoL+HPehU3{#{I!y
z?a%551m*^My(#v;8F9BlCqxb>kz8BlS6q<@)n;EcmwuXdHI}ZZSMm)9xkmd+D0_^y
zTD0=RFS&<g`PH#L+=pJ7sj%~Ao3ju@GS{~&c=GY!uunf4KFN&ZJ%^?L`j8@6w+Ep(
zz#C5Z{)w{f!A6^_UE*BqQT(J(>hyB>XYW|0{(4oqbk&EbDmLlcFK=@n-{v8yT?c&n
z-jKKRhEEp1V2h$)Nt|5f_{Fgv279j%bf@1QE4&cb;iXp<(;5FyN6>Oe`mfOlz5MiQ
z5`p6d@dBZP79}-g8m?2poYrZM<axOG^0SXP?5#iA(#ea<Ldv2eQ;@rlipf1V{(Y}w
zA{vAjUH^SS=mWww92`*p_);h&#4m!_Ix>)I<-<s&O1tY#h--9fb?WYURvg@MeIhhh
zQ^bf*<mgylgzeacVGz^UbGJ)~ue%+gfQ&wtW%EWosi;%5NiX(z5{1{%AyG0Z<PcsY
ziN1<dlP~e1(o*j&G<vgZ$Ttct7J1F0`;C@~1Ifmt&)!)22AX4$zuOz4p})k^QlxQ$
z+I2HJ4nO^W=@qd#ZY;;X=|K~_u+GPD77hP-P(uBA;hN!Erl>cBKZ&<}k)oL%Ub(v;
zJrn(u1}$!ioT72!0>cNcFkN4L`TG<ChyLDPsEZc8+8G=IC?+cr6;Ez3g+EW7;@1!v
zPB{$|XdxQ4+5?sUB=?_2%OEw@!gq!h2{fiA%6#d>m58yB?ld4{beZZHWXQ)?{f%AP
zaQdNEy|WmMk@8tte49B?oYOz2+xKqK7?v8sTgkVhOhG-VB73kQd}Z4AZLM`RXg=42
z%!Q$R-79&F$_a++*AVJ?%l~a0>nfxUEdOwzsq}S2$TOr|u2FE{3r#av7I{{=Zs8(3
zgKU1~uf`TNVZTtoz9-K8sD862F;+fR*nK9*WE}>N^^^Jr=v8kFYOM+-p;DvaUscvz
zqjU^<CjBYy<vorvxeeW1;P#mn_Bbm;hfTz%n;s*@zc*~xsyrZsr)Dr-uaCcSN*!7d
z2RTbrK4L;^zAFksYu4|WJHKx~7q5PgKxbLCE{Rr6rif<7CEG!hyARwCSKzweB#m5}
zur0QnniKHbvYY*3oFw_!m>89rYw2<R>)tM7jJd<QR1mG}dtPt$+8C;wy|GcW&(c7w
zgJ;m|lWI;WD^P%~Q_x;Z4G}%5#ROXJ*~gexb*m0aUvcxUfORA+KE+2CP|u_0AGglj
zw|`{2|1|x%==)t_v^7ZXK~+Q3UpIH1LZ2IYQ^dXnQY$_ieRKI08Yg}`yYr*y4o%Ba
z4o`3&Bj&w~tjF;ulR(_R(Iml3qV5A)++?2fOYYCnwAC#R<XpiX5)U4^4q@&|g^0_L
zhuyR-k*EC@B`{tvY{q=}ych2i%9S8Gf6Yk>-qxS9v7@lR2^zouMH4+=Dbj@GiOTPN
z)fU;qZ`mT18NHtNTCv&uhf>?;J@73&Ms9n%Bv%Hc35%p^*hb~;l5+T^Y1;F38y!j}
z3r>YaGYjm1wDV+%n_w}V|3}E4hQ$iD@1Ux|QPm_o4gQKpqZ2#8TMj(q1evyR((~k*
zaj)WQTy_a&{-dRBWD&iayM4kh`fal%rS5=|GH>%%OFZs%JSyH_7Wt&NEwonhHrtcG
z<hLTQlAwAv1P9}tVzTKGIC?**Gjj`gr_*7*N!zPL9ZH0UUIARQ2n7)o-dK6h7SE_D
z^8k*Ok(Bgpyyy5~D&j-IhoYY-X$*0aaP8rQm$uk99wmBn?=pt)-7K?Ue2AozWR&qd
z%vX;I1t~~Qu{9+Z#9_~k2b#1L^T>aD%Xqa<(zhjemEWei&y$|7#If8`fIn>8mZ8$=
z9*LXjMYVxt3rqB4O3n8vg!0tV3yuA6_ctPSdNoRDIzYi5G=y(o1ytp+A-E4M?s&OQ
zaeVHbx81!gf=sGuC8S%ldS)iTY%=aD1TH78Iwq#>={nF}DECx1Qu$4+;gaZ^M*V#P
zT?Yzz_d*czS;_<Y=t*qG*-?>R{Od$tB3g_J>fO>2Uc_VzW;Wj}Y6o4M^zbzktt5NR
zNggV`rE1N)WI1%|E;+Z?-ExE?H#QOjatW20uNZ0>3C^q!AM3-lTuw%fS&k#bDM-HU
zB*?w<slw}`xkL8o+BI}>YvAMUS@h?7)xxo~qSH{PW5Kc<l#P05OTMu>!gXI3&RE1J
zinZ>gbKj~o?CKOzVU*@f&=$#Ls@(0Tv0AV3aZ1kBj#6!X<syfR=`9C$+ArfG@*T`=
z7%Fk)EXv8^HaYuC1#tbUF)*5m@S08m5L}w7@=!)wa)m54zipVMs)XwDdWei@Csjuv
z7UPFZye!2W*)9cX_oN?&<edzfhS3TNtIV)Oi6;U`k_<HP`Sg8_rd@>CH?m>0;J-v4
z=xQ?2llnnUtY8k;t(HNva%2KLHMfl32^c8<cJBJ-=lWI&*~q!Im%C`l80l~SQNdAG
zYq!3&Y|KtKiRnW{@t=DFXrgUG|6Dxn)b^a%b2|D2Z!*)Lr`&{^C&r30K%dt(7P@57
zQ;<^mr*<PW;f$c*lc@Y(K(bezUk8}DKv+5hsgPq!>Ffz_eX3Smy5oN23c9wHRc8vv
z;Xygv9q05mJ0Z*0SZ`9F<D`Vr8@lybcwxhX)a&Whlt)Y$@Y2{f>^6=7f*X%l(>WQ8
z!OqMs%dO(~99a!T>-r4_9lRZW^$DSS8i@Bq%i){96wNq)8i!<!7cPCw45Du4<sxro
zm1<$}dOkCf_L{6BxmWt)cXTj1Vgwn70-C;N^6WF>$gipu1YMD0_TGi^!Q_S3({a49
zE78V}6>`7(9}OPI(d}u<HTY|1Fh5sWQp=#odlwUyKU>eU9ETH*<6|l(t?<d8DA)}5
z;l9Re#ehF3hI86@#&0fnu<2j7#yFnZd^O4CPW5U_JKJBK?pv9Za&xqLz9Fy3S$7Hh
z`Qgv8tGrqWEVb(K;~Q!pl3TIz4&q?@Oim^CH-$^DzVX>~xaNDjpV_j%SEHT(aA={K
zjFMFw2N9YFQ@&{X-V4IX6#VWQewK)ra|Pu5;#{IFY)MEWn&n4zz=GV@bN>O)*ihB0
zxGIqcBPkKZmy4&(ujOP_3#*?#R!z)0sdZEej-F3cU_X81mpm<6IZyN`ymcHh9sOcn
zN}GRvJD(GFJWkRyr%(N}v*77A)$PeaV{6U8VtF6uT`>MHw@6N#SAa{2K7BEyG``C!
z?$dvw8&ika#(o&pwy`Un+YGtg{ci`<1}5+ttuT%5faW(~Bo0-bvm%aFVUQ+{dS}EX
zA<+(@o1+27GY3c=0C+2B_%MTLib0b|WsBbZyX(<W%6S^BzPgKXaxrpK$@Tl;;xO;r
zoCE9DyZMCcYCo|Vmg;fJ<9US0a6iaUnG|Y15}0`qfsY4s-&(^T5;cB@9wEQwUi0O6
zQ1yK9e~l6c2by7j?Hl52y%<pK$KFMP)W1reYJ397jg5{n@W?WXSkqzd(h*qGr|$L-
zLh(qf!`Pv;va$qxDO_9(lwpGb%ZcpXDO|z3IOKB3_uE+i>8e&u+f%e15qy1zFQ_8c
zd=gR90Uq)-$Dk!Gg%u{eAG5rFU>AOG&pG0+;pxn^<3EM2&vnN%IqsX<s&_e|*i!76
zwq$}y<aLIT%e5L0Ta3rOwZ29-b4S(2C9=aEEjfRR)Iyj0iIM36a$`ol06===4XWYn
z&*hjEb!hXWQeq?82s#BF<%+MhC}K^O1bM@>Mf<`TF~XH7Zve0NHl14lP5qvc>MWJA
z7gv(IQCzP9kkWdN5>$<*5&Cx3r^9lp?~(gqb3+2x#KtqJ64$71T*%q(zjJU2y=D&d
zJOWsFCRlX-Me?rJH|6SZVraN7C0;!_dJqZn(0k#nWVw^@^G;CR9GNz|neqV(Q7!B*
z>}}H=d*V&JW1+A^1?;^)|DvoU<dF~Qa_NpaKC`&`j~e+8np7)5_7wU!6j>$fc7l^1
zRk^E7xF(gkyYAwdM7<bE*~dd?k)7P#tY0Jl9nII7=J+<j;iBfn(#pQ!T_&Q#pnDml
z$R1oh#csx1fxtM1>7{UUzUJai{Lac6X1nJprKIxQPrW*1Z97Koh#udXQGPteYZach
zIFEMieI{_rzva*;)W#!z%fUYxBi|N|?Gw3+{<dC8zC#AOJQ}Cy#!t=`XG<uMP`7T2
zzu|i;3~><bofnR4<Z{V~i6#^|L5pxdEb2H+9IY13=67557W;53_Uc%m<$sqaKi!HC
z@Jo#NNKCXze7lvH<CkP+6)k2J+)zM$=vQ_fuTlp{9b`tX`nd5~V%b9_9a!V^c2blb
zr2i~PU-NT+Y%>c3P_%2wB&2z@$7hTm7O$i1^zjLPLvw>eWTUL1l<h8+@rji?@6`L{
z{<6p+*mTYNWvB<^SL1ykB1B;{*3!1)a#gq9n#iOCtV)I4WbBKw(`nEnJ2}l*r5A2$
z#zs+>C@R_4z*Wx%wis>FU-xf-I<E|@p6Fq|jj_K&sT#FPQB#zoi(DjwC1$nHB>?3{
z2@ntn8rFN$wWt;`o=&Hd0dr96y;D1n*EmmG*L+br%1E3E(e2=#KYR`FGd;vOOMI)d
z%y+VMPK@pAazvm3S9+QuHIOTnZ~?*h<BRI_yAHd0T7<++LfP)PAN3|iwdwV<*X^{O
zvKAyb4K(z1?GJQ*5kYWY7RIvV?R2{mC&rr#OnH|2k(wF~c7|*AVRSpx86%ajk5I&>
ztI8jH!-OTH4F&c02PSOJT-C(HW^O3MfW^R6l1D}37+L)Z7Bo2U<)xD<EWG4Qr3odm
z6dTju{Ub^uamcVM)mDuKYP9jA#+$n(qa|X?nI&<{(a;C`lGBrt8z+NRL5>@42+Oir
z6wvC{&msV5rZA2Q>}S=qJSX|^rO%RVy^P8p3h;^)8ZK9RNFInpRbacLeK<F9btdzk
zr15756anq@4FGZVwW;iN`+E+${&pHKhuM>qz;H@-rYq}2%`Vlkg44S4Q?>MRW1A%u
zZ-0l7Wi}w4lkvTC*~?qXNc=<xJ=Ms@(EUc3QkAs~*nE$|^&_-3(b;di7~#2V-(c<j
z(?Iv8L&LsaKXlRlXCs$pj_ZoH+j)c=8#1j~GVA8BERrF|nSt2sUQML4Q{ggg=`u$i
zNh1R>WJ<`z!qRi2(wX{WebXfU89j&WZv~S<=nMlEd;njk%-X{*>Z0BX`0`(*${t+^
zpeS5p-)XW3gv9sr&J04rflg7&fzko~g~FSs_^jSQ^c+K#t{iB*ut9Dm`80|0L1l>2
z?=aOBw{P|GdI1f-0Drp`Y71MD@OquPPIA}^H9uPK)v2u}Aiys-09hm;pi`(j7w)<1
zeNOK)lnedQ>0A|H=fM1S=+s!#us$%dp6Q@|-EJo}k~JAg!GMSuu~^Cyjs%(Nrw$yz
zSp|?Ql36|8?No28+Z>qWeeEv&iK1E>t+h%?!r9x=(EIrnPOuTRI$6vYlrJVVwCkrR
zhd;YAUXgwM**D)nba55Z($sC>5SJ#B5b?lTPxfii#pxQrv@1iPJn{vg-j8t>3*yFp
z7$9u7#75fzF|jB9{E6zg8jGWzda|0Dj+~gJmRQ)olMK-F$cs*Yh$F>8ofg4SL52Lg
zGX7A9oZOE|Bzke!m3m30Pz38~{EB@tfWJ#eR1}zS>+)sLEx9=lawpP_QT~Du<H8r|
zXRQc!We6kn(PVdMng+oCysUjKQ8CWUq8JBRTp==N@cpVZgq)yCK3R4#xw~dRHs6S^
zUs)p`7l^MvF8ks0IIO@T{B7@JDE!eq#V`r62yzxF2qM5)Ad{lmFKEk$yr>9`UmXyy
z`q8irROxaGx7ECZa-%+iYF^=%!?HB;i)NJahZ@WhAM^aI%Y#UZFCS3=YnjN{1vUp9
zDC<o9qRDtw1ULEFUW3_7Nf5_Jtd_f|q+L|&@Lq-i6w`y<e|p#VXeIZ^3Uc8CxHcw~
zQOYOQU*Rq6?mfI5u57bsoBwvJgRJW^>7=9kQI;=QQW+j8j^Ci>C^ih%a<bO>1Yfh;
zn5;~b9VZ+1Sc8D)0vI@*(?Go00cIj6DC|nSBtsdo7u=K|H+YvqmoX??=t1gk-I%%E
zxF8lVy$kr8VZ;U8(UfU2lZ6yD3k)Yu-JJ0>J)tUFDn4=m0tUZ5AH3dCpFU28);^&M
z75@Jk6_%RED72rq`ON_U?qCBdw_O2y?KpD3y8_4-y{1s1iO*nOkRkFvKpzmm<++1W
zx(=@s0|-%~7Kr1NP*RkOce6cl01FMi!2^Z&QC^x9BzTalUOT=&Z7)IdjmZz>O!~Ah
zVSwJ&G254T2*KS{&v^<oSbQEup!3TgY2T2=<&b7bi0a*wDXw2n)f2y^C3*n>Z8sY7
zYwFV)2vYsA{V3TWNSv&7j~4L~sECX~FJTvNMed_>_@oX{Kw3t5XlEDL4mq;^N`*b5
zA3Cy7T8B)3=1n)EPt`|LC`ZJ&kpWxU#QCxRO*+RQ$qP8<Cp#7pI+!Ez<M14n{fPDT
zVm0ywDjKdu6vR-B^S?TUYQ?XtkE7^0Q&t00bDKu(IFMBdue#9j5D9N7WQ71UwBMWt
znx#`SeFA+rRQTFb&o~z{bfhGV_5uZ)vnSu-o6`I8RzBrFE<S`Ra{Zy&NByr@5wUrO
zhNVo6)h>h0!88Cl++lFv^)BC&nuh+Q`k1Y!_<D&#dEiYvoi|XV@UmzusYrU53E*!=
z6l_-9%eX>oyX+UahDg}pp!w^bX=WUMH;4G9kCM9WyELEayFe}p@a~@_Pv3;w&N;CI
zjLdc!+^qG!_XhONXMg{;BVkzlc7yY1<*(JCrse;sQ%F^;|K*&|m-xy{ogY(fSksSp
ziexeLx2u+Jw?YOZm=0h{H5y?u3U;k^dv4IK;G>b+WiHt*ra1e@u&)rd`_)XnUbX>A
zsq}Cavtw3i@DH?A6Y@H2|LeusygS_>^|qZv09Dh)1((+kd+6&@ESUky!2yIG9pHf;
z&}eDw|FOZXnk}p3<gb?4;pXW9<58XE?z?}i5563N1Q!|1C%K<bG`5e%KH(CX@s3ii
zAK)HJLJtw*gFpPN&y!^rY;0G(BD3oU>VaqfYgcSD3sisiQZztmwxhzkaaJ;S{=AV=
zG@t9Y?K5aI&sNf3{8=ZAQb|)$M4DLQ-6rBZl%2M(j7qKXyOIE6ZG^M%B$eh2_wvqM
zrN2^cGwgmR?Ds*K191C#?Nk5K#)Acd10Ht15&kPl__r7E3_=5O@5kAc!6~8J9$;EO
zr@2Iryv+68;b8Vq-7DUmFtt5sj6+pe%VV?O+`)%FJv%?L4?XuLL$cDJ@~-QG#6G;_
z<r0Xpe;|PXz??P!i~2+OVPaVVfasNwD=Wjw%aFi=XE7YZJR=dwS*FOyOOeM}jI~4r
z0j9G7<bjGmy*^PNOCsq`{*?DHRKRBRNkUcL>DpSwcGN^i{%Mh3K7&X+S{-<MJWQcp
zyo*7n>a^4VM6R_xAz;xgmU!F4aZ`u0n529{AP|4Uuu?5T8GJm<HDN}_;{2J6N=Bh3
zNQKW`K>gZkIFVKdRY(=wVnyU?{@8oyWDB5L_?It~a+x&uQb81bOPR}lpx1;v8~%$E
zWWT2OA#p0$5Muj-SgYSn?xXkluJO&9HtEEkaSb=J<Aq4u<Lz-<t|1CrtMJ+sD&9XF
zTA4?e;Y4y>Y_WDng$btSjbW8*56eHj3k%g@MXrrON^{}Ok4khZA)*JA2269gh<VjT
zyQ(Nnq&`cckR-usutKc9Ke<<5H~tj2^tGi18zd`yRC44PJVxVo91f)U3nz$U*njXH
zB=~*xvhh^^YdZ)s9*#<+N_)1=c;)+HbvKEZVI@lRt!Y-2XaxM2A(^j3&)f==*B7X@
zb6mC$lAjk$$IM>j2a%W^TNCD6-Pt5&&<G|FWtnN#MHRlRLXWVR^LB8#gE3BY3$ty9
zv}jen`3;gc)|M&I{I~-W>njx0#i>b?Com~+>jgVi7aBxI30grFoHNwC*$#5!SbC0O
z*e$R`=?#4HY$N}e1orBJ`_^*uYdC?-%YN0`EH4&ZiI<wuPN-(>F)E61D7HKFwl9EC
zL8k>1y2>E$7*=)EDV+`4qX><rl43}#siGqZZIWB3iL}W^8k!ZI;A7q1w!5jXxMNzh
z7<DbJM!qog_*OQ?5i?Qw6QV!AQjrd4R5c)8!%vppOWt?*z<;9zo?uD3rx|DH^>rvw
z(@D1N$)1g>W|^V*<uy*M?ZVkX+zqO$<ccV$emlWM8P`@>)K5Er#@NWCKxLD2`T4Kv
zrr?)<Ku#a89Ex7{X_A@YJ4Ut;(TaHaF)z1{NbfhtT?Z7Qx5G>YBKS-fW!o`4`<p}G
zSi-<M-z3-7_ZF}iH?>ow?;VFgRtl4)Akk}9#$l|C7AN3NEMpTQFxyZl%Z?6`7Z$jS
ztRl{muS~U<CSKaCLaHDTuG1~~y>VAtP9S>skx!<tAEFPhn4Y~vGLm|Z5$~T%mPpM6
z4#{)lL#IX1QPt*udTw86iFQixddWdHX~Hkcbcef-h{`-aOC#0JNGW{yZ1VZ(Etl_%
znyEd!M$*mmlJUQlS2S~uCC+H*@!nR9j!ZYeGm6leB00}h7UsKsK~+z-br~rvQPGDN
za3h{gU_OWYu2L?DgAg1WC|9uXY(ptq8jnVi_u&~I7;q08WyY1or~Zd5$siU1fRYxG
zVk^l@`_ieX@}P%$mPs2W$FVBw^lQj}rK76T1@t_OBqA)elm52g-0YS~q=~fnAj=~i
z;Kt!-*77F3p)z5XKgJ_Sy_DT1w0LyS6=%(<NhTY#+!I<IP@ot^mTNBpqZ^OVJv9r|
z?Cdy-I8kUdwWRS6SfH*L7D1*xViK4vcdQ|b-G9BJneV8tYLz5N2Vcidio;x62U(I#
zF^u>lCP4C~Se-;l8l2tnN}9j862`0P$xJe9%z;x@!HK@r8OnYgDjAfTnOwU?MuK&b
zWf-x9#s6LVUso=QHFdPs>W2N99K?59&n)T%RV&m#5=<2>=$!~43H;0_vbq`NF6Lp9
z{i?zu_=`U>%860_6~na051vxesv4y)bu;<Te24-XPBxjP=x-T0X~Hk}za+%P)B_2Q
z$~m*y6j2k)!VQj4KQ}tPowS+r|IA;+USv$jtU41;Fjni-?W7Ajr8nwYjQuNGr_CqU
z7NOZ#-g<JZ$n30}t$CIw+2V9LoM-?}*DP`Rb!@V+zD#Wyfn70<V|rO{;O89kVPN-_
z<W|8lA?prdFkQ5;^Nw1})62+bxWR@NYi(Sr1D!6D!-TC+@oNT3n;sNfWna~>*V(__
z?SR8+=X7mBszZH3put>UoXx%Dz7bwLfmdynX6ISfk*HteYEx*iUj7lq&Jj&?9-0i{
z(XSfR;PiNp^?fb}fOog*=F7(S{j^@FcNy`Ekvz#~W7Ge4&&LC<pw6E0+xpzj=8uh@
z?|V0Y_4pNezU4OY!JO}S(*OK?-uw=+vHSoG>__2(N8lxIqr3_nz;=g6(PHmls09uZ
zHNj)JlXtLP0*7Er{nS|jmPAE6_*Ms37QbH=61WZ!09jJwRjAB}+l;=j3bmvlxmw&W
zKa7H=Ti(5WUbw9HZ@H64qTU5#rGu79&RKWq3Es@#-;<29Qx8y#_I{(*l}CMdJho_p
zJ<13P(%H-M&RH9_<6bcOI>*fS?z@Bu|BwOOmva~MaE>FwnV3nm>05J^U5Dcv<4>MB
zDd=mVD`LW4AY7C>EMG7#G?^Z3RKkZaUs<nf|Hs`N&oV&!00w2>*UmBUL-8w}%RZIM
z!<%0W0XXj-fC!1G>BqJf*{;)Thn}|)B|c@;Nluc#dp-~4a8x_JdLuz9{x#g(KmXm^
zL&=}nGk*T}t{={SLTM>BuBq;QYg?VtSt#b*WBgTyKFvyekwL37LZ4!}KTjME_xc>1
z;<*)&q_Ad9>n9R{$vTj%0v{lG#u(OJ{(cdVTe$g=TA&4K!z~uMaAVK@r$<bKYeLPN
z^<KrFEkP-+BD#M*5(Rin>}|T>y_7j8$r4_&nYi!bE23#s24q3P$^Kb3Br1-|*hJty
zm&Ji;RZ%GM11Bs&PciOaZ6-Du0u1mlnkECP3_M<>E2aH^7=XTSQCKor?BY4}7hv1;
zNTO!^tBus{!MFVw9j!5raJVmZ>i^CM?tuW8P?~IvSzb)bl+?Q<G7x3#!^{|Wv<Bf_
zKlP=+u|n834&;00)u#5Z;!Nsen=c;&%A2u-shhGFm7W_1N*<2>oCeKkp+tuL;`|A1
zc3el#ysLWmeEg1kCV9(zKNR)fl~(hy<Ij@c<yvpy@6-OI*HGCghokW-S_A)Iqd6iY
za5Iug?EjF^j+kWpAY^HYvKU_M@^@nfQ$JRGfsCd|RIR0vL<O_>f>+qw<!CP3Tya2z
zpbjBGvJ^LS8~yJ#C@dV$iOv%E^66a+N4a4?kHG6MkSTiDf7X^I*YP}tLixMrqjwsf
zyb^L~QgWC!hE#6a68I~x#lWE~rO0TzAs0T#1w0Wd0bnId+_|zq0oIUjza0h@9X_pu
z$k#+;LF_*K4#fK%)OHlDMdtl+EcBmV%-BkdF>9=rvakB8>q19p6?%+wSFmMX)Hvx|
z4UyOnV@?E0_&+`WL$JJ+9F)lbSOX?RyvV)%Y>-)`cl~6LaP(sy#t|h4t#okz%WU5Y
zh!|qgC`VS9#}{dlcuGg9M@}@+iNH@!P!W!g35-u35EmGKb#{e9Y^{+KhyVvT(p2D+
zF)QGQbVd_{6HuA8xbcA>tUSyefob=6PjC=VL`;n$P8mN(4{Mxjd~geK?CjCYCGn7n
zfY_eSq=Au?(cBbI$Kcei7^lEcm)hu#xD=1Tm>@-4ceL0^h{kEHvzk%Nv7;BhQi?NK
zjD394e+U-7Xd47M1BP=B!`Zhalz@?Nz6ML+`~0Iz|A!x4LxML2$MCKR*18sUVNME0
z0zc#;Z{tTP5THH6(Bv(d^$9Q}=n@&`nfj2^3E9%2Mlkezn9u<6Cs;z|ZF<`+u9z1P
zl8?qr0x*am{jieW=s>p-AHy<>q$z_|7M|R%htgGMsuGcfzJrLaukm{6dift_|IAA}
zv`_QxvbQr%F)?yG822*lO5e$gu|+fW?uu1vN#nx^*{BWmeMmKBja6CA)>KKgoro=p
zH9(2L)qAu{fPyX^P`~ejFJQ(4{rHS)@AOLZwdqiJB7kN9%pdr;;}N;xBngr#q|#2n
zP+3w&P}q4~Mtvsp+wF`dLaoLGX7<{Az5aYA8PKn7P_#9nP&jt@US<;?hpj-?Babgl
zHV|g1JQGl$&X)X#j5y1PyoU@R<%vBPP8_>}KSN&ZTIUrsk>>Rf>?N9a%j$5P;Fg4%
zy8Mvk?o@1d9BPFT;-ZrKcv5mpPE2VW=Wv)6V4U_R9}#WWmGhT1B+@tsyFMkfPA8xY
zD0E|&$_tLA51%KZ=kU^c-$_^H1itT-5bbjEonu0*ks^80ymw^2SroheSfC3fU3e*z
zlz|22z;xx5XQE<lWGv@pp2PG&c&WN3Tlw-ZzJ@W?Sc}W#j(Ar~#W$f!cdrn1%u;Y%
znv-(M{!r-yMw#Dg>ih~D86*|47Go7ub*Yei)|LCaE@yu{H=OxBFu2O8K9!m@4b7w~
zur9|cD9x6&CgRDJ&LQp~0vJ|`n}g4~!B7-;jZO^3aE?YpD&-S<%~3zdMt7>AkIy#t
zsK63TkQf&(!XOAK6*IcYz=|nUkbULZRvX2D$Pd<y48CF8j%0D?7xt^jC4vUF+=VKx
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

diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst
deleted file mode 100644
index f739ce980..000000000
--- a/docs/source/about/changelog.rst
+++ /dev/null
@@ -1,1124 +0,0 @@
-Changelog
-=========
-
-.. note::
-
-    The ReactPy team manages their short and long term plans with `GitHub Projects
-    <https://github.com/orgs/reactive-python/projects/1>`__. If you have questions about what
-    the team are working on, or have feedback on how issues should be prioritized, feel
-    free to :discussion-type:`open up a discussion <question>`.
-
-All notable changes to this project will be recorded in this document. The style of
-which is based on `Keep a Changelog <https://keepachangelog.com/>`__. The versioning
-scheme for the project adheres to `Semantic Versioning <https://semver.org/>`__. For
-more info, see the :ref:`Contributor Guide <Creating a Changelog Entry>`.
-
-
-.. INSTRUCTIONS FOR CHANGELOG CONTRIBUTORS
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-.. If you're adding a changelog entry, be sure to read the "Creating a Changelog Entry"
-.. section of the documentation before doing so for instructions on how to adhere to the
-.. "Keep a Changelog" style guide (https://keepachangelog.com).
-
-Unreleased
-----------
-
-No changes.
-
-
-v1.0.0
-------
-:octicon:`milestone` *released on 2023-03-14*
-
-No changes.
-
-
-v1.0.0-a6
----------
-:octicon:`milestone` *released on 2023-02-23*
-
-**Fixed**
-
-- :pull:`936` - remaining issues from :pull:`934`
-
-
-v1.0.0-a5
----------
-:octicon:`milestone` *released on 2023-02-21*
-
-**Fixed**
-
-- :pull:`934` - minor issues with camelCase rewrite CLI utility
-
-
-v1.0.0-a4
----------
-:octicon:`milestone` *released on 2023-02-21*
-
-**Changed**
-
-- :pull:`919` - Reverts :pull:`841` as per the conclusion in :discussion:`916`. but
-  preserves the ability to declare attributes with snake_case.
-
-**Deprecated**
-
-- :pull:`919` - Declaration of keys via keyword arguments in standard elements. A script
-  has been added to automatically convert old usages where possible.
-
-
-v1.0.0-a3
----------
-:octicon:`milestone` *released on 2023-02-02*
-
-**Fixed**
-
-- :pull:`908` - minor type hint issue with ``VdomDictConstructor``
-
-**Removed**
-
-- :pull:`907` - accidental import of reactpy.testing
-
-
-v1.0.0-a2
----------
-:octicon:`milestone` *released on 2023-01-31*
-
-**Reverted**
-
-- :pull:`901` - reverts :pull:`886` due to :issue:`896`
-
-**Fixed**
-
-- :issue:`896` - Stale event handlers after disconnect/reconnect cycle
-- :issue:`898` - Fixed CLI not registered as entry point
-
-
-v1.0.0-a1
----------
-:octicon:`milestone` *released on 2023-01-28*
-
-**Changed**
-
-- :pull:`841` - Revamped element constructor interface. Now instead of passing a
-  dictionary of attributes to element constructors, attributes are declared using
-  keyword arguments. For example, instead of writing:
-
-  .. code-block::
-
-      html.div({"className": "some-class"}, "some", "text")
-
-  You now should write:
-
-  .. code-block::
-
-      html.div("some", "text", class_name="some-class")
-
-  .. note::
-
-    All attributes are written using ``snake_case``.
-
-  In conjunction, with these changes, ReactPy now supplies a command line utility that
-  makes a "best effort" attempt to automatically convert code to the new API. Usage of
-  this utility is as follows:
-
-  .. code-block:: bash
-
-      reactpy update-html-usages [PATHS]
-
-  Where ``[PATHS]`` is any number of directories or files that should be rewritten.
-
-  .. warning::
-
-    After running this utility, code comments and formatting may have been altered. It's
-    recommended that you run a code formatting tool like `Black
-    <https://github.com/psf/black>`__ and manually review and replace any comments that
-    may have been moved.
-
-**Fixed**
-
-- :issue:`755` - unification of component and VDOM constructor interfaces. See above.
-
-
-v0.44.0
--------
-:octicon:`milestone` *released on 2023-01-27*
-
-**Deprecated**
-
-- :pull:`876` - ``reactpy.widgets.hotswap``. The function has no clear uses outside of some
-  internal applications. For this reason it has been deprecated.
-
-**Removed**
-
-- :pull:`886` - Ability to access element value from events via `event['value']` key.
-  Instead element value should be accessed via `event['target']['value']`. Originally
-  deprecated in :ref:`v0.34.0`.
-- :pull:`886` - old misspelled option ``reactpy.config.REACTPY_WED_MODULES_DIR``. Originally
-  deprecated in :ref:`v0.36.1`.
-
-
-v0.43.0
--------
-:octicon:`milestone` *released on 2023-01-09*
-
-**Deprecated**
-
-- :pull:`870` - ``ComponentType.should_render()``. This method was implemented based on
-  reading the React/Preact source code. As it turns out though it seems like it's mostly
-  a vestige from the fact that both these libraries still support class-based
-  components. The ability for components to not render also caused several bugs.
-
-**Fixed**
-
-- :issue:`846` - Nested context does no update value if outer context should not render.
-- :issue:`847` - Detached model state on render of context consumer if unmounted and
-  context value does not change.
-
-
-v0.42.0
--------
-:octicon:`milestone` *released on 2022-12-02*
-
-**Added**
-
-- :pull:`835` - Ability to customize the ``<head>`` element of ReactPy's built-in client.
-- :pull:`835` - ``vdom_to_html`` utility function.
-- :pull:`843` - Ability to subscribe to changes that are made to mutable options.
-- :pull:`832` - ``del_html_head_body_transform`` to remove ``<html>``, ``<head>``, and ``<body>`` while preserving children.
-- :pull:`699` - Support for form element serialization
-
-**Fixed**
-
-- :issue:`582` - ``REACTPY_DEBUG_MODE`` is now mutable and can be changed at runtime
-- :pull:`832` - Fix ``html_to_vdom`` improperly removing ``<html>``, ``<head>``, and ``<body>`` nodes.
-
-**Removed**
-
-- :pull:`832` - Removed ``reactpy.html.body`` as it is currently unusable due to technological limitations, and thus not needed.
-- :pull:`840` - remove ``REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY`` option
-- :pull:`835` - ``serve_static_files`` option from backend configuration
-
-**Deprecated**
-
-- :commit:`8f3785b` - Deprecated ``module_from_template``
-
-v0.41.0
--------
-:octicon:`milestone` *released on 2022-11-01*
-
-**Changed**
-
-- :pull:`823` - The hooks ``use_location`` and ``use_scope`` are no longer
-  implementation specific and are now available as top-level imports. Instead of each
-  backend defining these hooks, backends establish a ``ConnectionContext`` with this
-  information.
-- :pull:`824` - ReactPy's built-in backend server now expose the following routes:
-
-  - ``/_reactpy/assets/<file-path>``
-  - ``/_reactpy/stream/<path>``
-  - ``/_reactpy/modules/<file-path>``
-  - ``/<prefix>/<path>``
-
-  This should allow the browser to cache static resources. Even if your ``url_prefix``
-  is ``/_reactpy``, your app should still work as expected. Though if you're using
-  ``reactpy-router``, ReactPy's server routes will always take priority.
-- :pull:`824` - Backend implementations now strip any URL prefix in the pathname for
-  ``use_location``.
-- :pull:`827` - ``use_state`` now returns a named tuple with ``value`` and ``set_value``
-  fields. This is convenient for adding type annotations if the initial state value is
-  not the same as the values you might pass to the state setter. Where previously you
-  might have to do something like:
-
-  .. code-block::
-
-      value: int | None = None
-      value, set_value = use_state(value)
-
-  Now you can annotate your state using the ``State`` class:
-
-  .. code-block::
-
-      state: State[int | None] = use_state(None)
-
-      # access value and setter
-      state.value
-      state.set_value
-
-      # can still destructure if you need to
-      value, set_value = state
-
-**Added**
-
-- :pull:`823` - There is a new ``use_connection`` hook which returns a ``Connection``
-  object. This ``Connection`` object contains a ``location`` and ``scope``, along with
-  a ``carrier`` which is unique to each backend implementation.
-
-
-v0.40.2
--------
-:octicon:`milestone` *released on 2022-09-13*
-
-**Changed**
-
-- :pull:`809` - Avoid the use of JSON patch for diffing models.
-
-
-v0.40.1
--------
-:octicon:`milestone` *released on 2022-09-11*
-
-**Fixed**
-
-- :issue:`806` - Child models after a component fail to render
-
-
-v0.40.0 (yanked)
-----------------
-:octicon:`milestone` *released on 2022-08-13*
-
-**Fixed**
-
-- :issue:`777` - Fix edge cases where ``html_to_vdom`` can fail to convert HTML
-- :issue:`789` - Conditionally rendered components cannot use contexts
-- :issue:`773` - Use strict equality check for text, numeric, and binary types in hooks
-- :issue:`801` - Accidental mutation of old model causes invalid JSON Patch
-
-**Changed**
-
-- :pull:`123` - set default timeout on playwright page for testing
-- :pull:`787` - Track contexts in hooks as state
-- :pull:`787` - remove non-standard ``name`` argument from ``create_context``
-
-**Added**
-
-- :pull:`123` - ``asgiref`` as a dependency
-- :pull:`795` - ``lxml`` as a dependency
-
-
-v0.39.0
--------
-:octicon:`milestone` *released on 2022-06-20*
-
-**Fixed**
-
-- :pull:`763` - ``No module named 'reactpy.server'`` from ``reactpy.run``
-- :pull:`749` - Setting appropriate MIME type for web modules in `sanic` server implementation
-
-**Changed**
-
-- :pull:`763` - renamed various:
-
-  - ``reactpy.testing.server -> reactpy.testing.backend``
-  - ``ServerFixture -> BackendFixture``
-  - ``DisplayFixture.server -> DisplayFixture.backend``
-
-- :pull:`765` - ``exports_default`` parameter is removed from ``module_from_template``.
-
-**Added**
-
-- :pull:`765` - ability to specify versions with module templates (e.g.
-  ``module_from_template("react@^17.0.0", ...)``).
-
-
-v0.38.1
--------
-:octicon:`milestone` *released on 2022-04-15*
-
-**Fixed**
-
-- `reactive-python/reactpy-jupyter#22 <https://github.com/reactive-python/reactpy-jupyter/issues/22>`__ -
-  a missing file extension was causing a problem with WebPack.
-
-
-v0.38.0
--------
-:octicon:`milestone` *released on 2022-04-15*
-
-No changes.
-
-
-v0.38.0-a4
-----------
-:octicon:`milestone` *released on 2022-04-15*
-
-**Added**
-
-- :pull:`733` - ``use_debug_value`` hook
-
-**Changed**
-
-- :pull:`733` - renamed ``assert_reactpy_logged`` testing util to ``assert_reactpy_did_log``
-
-
-v0.38.0-a3
-----------
-:octicon:`milestone` *released on 2022-04-15*
-
-**Changed**
-
-- :pull:`730` - Layout context management is not async
-
-
-v0.38.0-a2
-----------
-:octicon:`milestone` *released on 2022-04-14*
-
-**Added**
-
-- :pull:`721` - Implement ``use_location()`` hook. Navigating to any route below the
-  root of the application will be reflected in the ``location.pathname``. This operates
-  in concert with how ReactPy's configured routes have changed. This will ultimately work
-  towards resolving :issue:`569`.
-
-**Changed**
-
-- :pull:`721` - The routes ReactPy configures on apps have changed
-
-  .. code-block:: text
-
-      prefix/_api/modules/*    web modules
-      prefix/_api/stream       websocket endpoint
-      prefix/*                 client react app
-
-  This means that ReactPy's client app is available at any route below the configured
-  ``url_prefix`` besides ``prefix/_api``. The ``_api`` route will likely remain a route
-  which is reserved by ReactPy. The route navigated to below the ``prefix`` will be shown
-  in ``use_location``.
-
-- :pull:`721` - ReactPy's client now uses Preact instead of React
-
-- :pull:`726` - Renamed ``reactpy.server`` to ``reactpy.backend``. Other references to "server
-  implementations" have been renamed to "backend implementations" throughout the
-  documentation and code.
-
-**Removed**
-
-- :pull:`721` - ``redirect_root`` server option
-
-
-v0.38.0-a1
-----------
-:octicon:`milestone` *released on 2022-03-27*
-
-**Changed**
-
-- :pull:`703` - How ReactPy integrates with servers. ``reactpy.run`` no longer accepts an app
-  instance to discourage use outside of testing. ReactPy's server implementations now
-  provide ``configure()`` functions instead. ``reactpy.testing`` has been completely
-  reworked in order to support async web drivers
-- :pull:`703` - ``PerClientStateServer`` has been functionally replaced by ``configure``
-
-**Added**
-
-- :issue:`669` - Access to underlying server requests via contexts
-
-**Removed**
-
-- :issue:`669` - Removed ``reactpy.widgets.multiview`` since basic routing view ``use_scope`` is
-  now possible as well as all ``SharedClientStateServer`` implementations.
-
-**Fixed**
-
-- :issue:`591` - ReactPy's test suite no longer uses sync web drivers
-- :issue:`678` - Updated Sanic requirement to ``>=21``
-- :issue:`657` - How we advertise ``reactpy.run``
-
-
-v0.37.2
--------
-:octicon:`milestone` *released on 2022-03-27*
-
-**Changed**
-
-- :pull:`701` - The name of ``proto`` modules to ``types`` and added a top level
-  ``reactpy.types`` module
-
-**Fixed**
-
-- :pull:`716` - A typo caused ReactPy to use the insecure ``ws`` web-socket protocol on
-  pages loaded with ``https`` instead of the secure ``wss`` protocol
-
-
-v0.37.1
--------
-:octicon:`milestone` *released on 2022-03-05*
-
-No changes.
-
-
-v0.37.1-a2
-----------
-:octicon:`milestone` *released on 2022-03-02*
-
-**Fixed:**
-
-- :issue:`684` - Revert :pull:`694` and by making ``value`` uncontrolled client-side
-
-
-v0.37.1-a1
-----------
-:octicon:`milestone` *released on 2022-02-28*
-
-**Fixed:**
-
-- :issue:`684` - ``onChange`` event for inputs missing key strokes
-
-
-v0.37.0
--------
-:octicon:`milestone` *released on 2022-02-27*
-
-**Added:**
-
-- :issue:`682` - Support for keys in HTML fragments
-- :pull:`585` - Use Context Hook
-
-**Fixed:**
-
-- :issue:`690` - React warning about set state in unmounted component
-- :pull:`688` - Missing reset of schedule_render_later flag
-
-----
-
-Releases below do not use the "Keep a Changelog" style guidelines.
-
-----
-
-v0.36.3
--------
-:octicon:`milestone` *released on 2022-02-18*
-
-Misc bug fixes along with a minor improvement that allows components to return ``None``
-to render nothing.
-
-**Closed Issues**
-
-- All child states wiped upon any child key change - :issue:`652`
-- Allow NoneType returns within components - :issue:`538`
-
-**Merged Pull Requests**
-
-- fix #652 - :pull:`672`
-- Fix 663 - :pull:`667`
-
-
-v0.36.2
--------
-:octicon:`milestone` *released on 2022-02-02*
-
-Hot fix for newly introduced ``DeprecatedOption``:
-
-- :commit:`c146dfb264cbc3d2256a62efdfe9ccf62c795b01`
-
-
-v0.36.1
--------
-:octicon:`milestone` *released on 2022-02-02*
-
-Includes bug fixes and renames the configuration option ``REACTPY_WED_MODULES_DIR`` to
-``REACTPY_WEB_MODULES_DIR`` with a corresponding deprecation warning.
-
-**Closed Issues**
-
-- Fix Key Error When Cleaning Up Event Handlers - :issue:`640`
-- Update Script Tag Behavior - :issue:`628`
-
-**Merged Pull Requests**
-
-- mark old state as None if unmounting - :pull:`641`
-- rename REACTPY_WED_MODULES_DIR to REACTPY_WEB_MODULES_DIR - :pull:`638`
-
-
-v0.36.0
--------
-:octicon:`milestone` *released on 2022-01-30*
-
-This release includes an important fix for errors produced after :pull:`623` was merged.
-In addition there is not a new ``http.script`` element which can behave similarly to a
-standard HTML ``<script>`` or, if no attributes are given, operate similarly to an
-effect. If no attributes are given, and when the script evaluates to a function, that
-function will be called the first time it is mounted and any time the content of the
-script is subsequently changed. If the function then returns another function, that
-returned function will be called when the script is removed from the view, or just
-before the content of the script changes.
-
-**Closed Issues**
-
-- State mismatch during component update - :issue:`629`
-- Implement a script tag - :issue:`544`
-
-**Pull Requests**
-
-- make scripts behave more like normal html script element - :pull:`632`
-- Fix state mismatch during component update - :pull:`631`
-- implement script element - :pull:`617`
-
-
-v0.35.4
--------
-:octicon:`milestone` *released on 2022-01-27*
-
-Keys for elements at the root of a component were not being tracked. Thus key changes
-for elements at the root did not trigger unmounts.
-
-**Closed Issues**
-
-- Change Key of Parent Element Does Not Unmount Children - :issue:`622`
-
-**Pull Requests**
-
-- fix issue with key-based identity - :pull:`623`
-
-
-v0.35.3
--------
-:octicon:`milestone` *released on 2022-01-27*
-
-As part of :pull:`614`, elements which changed type were not deeply unmounted. This
-behavior is probably undesirable though since the state for children of the element
-in question would persist (probably unexpectedly).
-
-**Pull Requests**
-
-- Always deeply unmount - :pull:`620`
-
-
-v0.35.2
--------
-:octicon:`milestone` *released on 2022-01-26*
-
-This release includes several bug fixes. The most significant of which is the ability to
-change the type of an element in the try (i.e. to and from being a component) without
-getting an error. Originally the errors were introduced because it was though changing
-element type would not be desirable. This was not the case though - swapping types
-turns out to be quite common and useful.
-
-**Closed Issues**
-
-- Allow Children with the Same Key to Vary in Type - :issue:`613`
-- Client Always Looks for Server at "/"  - :issue:`611`
-- Web modules get double file extensions with v0.35.x - :issue:`605`
-
-**Pull Requests**
-
-- allow elements with the same key to change type - :pull:`614`
-- make connection to websocket relative path - :pull:`612`
-- fix double file extension - :pull:`606`
-
-
-v0.35.1
--------
-:octicon:`milestone` *released on 2022-01-18*
-
-Re-add accidentally deleted ``py.typed`` file to distribution. See `PEP-561
-<https://www.python.org/dev/peps/pep-0561/#packaging-type-information>`__ for info on
-this marker file.
-
-
-v0.35.0
--------
-:octicon:`milestone` *released on 2022-01-18*
-
-The highlight of this release is that the default :ref:`"key" <Organizing Items With
-Keys>` of all elements will be their index amongst their neighbors. Previously this
-behavior could be engaged by setting ``REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY=1`` when
-running ReactPy. In this release though, you will need to explicitly turn off this feature
-(i.e. ``=0``) to return to the old behavior. With this change, some may notice
-additional error logs which warn that:
-
-.. code-block:: text
-
-  Key not specified for child in list ...
-
-This is saying is that an element or component which was created in a list does not have
-a unique ``key``. For more information on how to mitigate this warning refer to the docs
-on :ref:`Organizing Items With Keys`.
-
-**Closed Issues**
-
-- Support Starlette Server - :issue:`588`
-- Fix unhandled case in module_from_template - :issue:`584`
-- Hide "Children" within REACTPY_DEBUG_MODE key warnings - :issue:`562`
-- Bug in Element Key Identity - :issue:`556`
-- Add iFrame to reactpy.html - :issue:`542`
-- Create a use_linked_inputs widget instead of Input - :issue:`475`
-- React warning from module_from_template - :issue:`440`
-- Use Index as Default Key - :issue:`351`
-
-**Pull Requests**
-
-- add ``use_linked_inputs`` - :pull:`593`
-- add starlette server implementation - :pull:`590`
-- Log on web module replacement instead of error - :pull:`586`
-- Make Index Default Key - :pull:`579`
-- reduce log spam from missing keys in children - :pull:`564`
-- fix bug in element key identity - :pull:`563`
-- add more standard html elements - :pull:`554`
-
-
-v0.34.0
--------
-:octicon:`milestone` *released on 2021-12-16*
-
-This release contains a variety of minor fixes and improvements which came out of
-rewriting the documentation. The most significant of these changes is the remove of
-target element attributes from the top-level of event data dictionaries. For example,
-instead of being able to find the value of an input at ``event["value"]`` it will
-instead be found at ``event["target"]["value"]``. For a short period we will issue a
-:class:`DeprecationWarning` when target attributes are requested at the top-level of the
-event dictionary. As part of this change we also add ``event["currentTarget"]`` and
-``event["relatedTarget"]`` keys to the event dictionary as well as a
-``event[some_target]["boundingClientRect"]`` where ``some_target`` may be ``"target"``,
-``"currentTarget"`` or ``"relatedTarget"``.
-
-**Closed Issues**
-
-- Move target attributes to ``event['target']`` - :issue:`548`
-
-**Pull Requests**
-
-- Correctly Handle Target Event Data - :pull:`550`
-- Clean up WS console logging - :pull:`522`
-- automatically infer closure arguments - :pull:`520`
-- Documentation Rewrite - :pull:`519`
-- add option to replace existing when creating a module - :pull:`516`
-
-
-v0.33.3
--------
-:octicon:`milestone` *released on 2021-10-08*
-
-Contains a small number of bug fixes and improvements. The most significant change is
-the addition of a warning stating that `REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY=1` will become
-the default in a future release. Beyond that, a lesser improvement makes it possible to
-use the default export from a Javascript module when calling `module_from_template` by
-specifying `exports_default=True` as a parameter. A
-
-**Closed Issues**
-
-- Memory leak in SharedClientStateServer - :issue:`511`
-- Cannot use default export in react template - :issue:`502`
-- Add warning that element index will be used as the default key in a future release - :issue:`428`
-
-**Pull Requests**
-
-- warn that REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY=1 will be the default - :pull:`515`
-- clean up patch queues after exit - :pull:`514`
-- Remove Reconnecting WS alert - :pull:`513`
-- Fix 502 - :pull:`503`
-
-
-v0.33.2
--------
-:octicon:`milestone` *released on 2021-09-05*
-
-A release to fix a memory leak caused by event handlers that were not being removed
-when components updated.
-
-**Closed Issues**
-
-- Non-root component event handlers cause memory leaks - :issue:`510`
-
-
-v0.33.1
--------
-:octicon:`milestone` *released on 2021-09-02*
-
-A hot fix for a regression introduced in ``0.33.0`` where the root element of the layout
-could not be updated. See :issue:`498` for more info. A regression test for this will
-be introduced in a future release.
-
-**Pull Requests**
-
-- Fix 498 pt1 - :pull:`501`
-
-
-v0.33.0
--------
-:octicon:`milestone` *released on 2021-09-02*
-
-The most significant fix in this release is for a regression which manifested in
-:issue:`480`, :issue:`489`, and :issue:`451` which resulted from an issue in the way
-JSON patches were being applied client-side. This was ultimately resolved by
-:pull:`490`. While it's difficult to test this without a more thorough Javascript
-suite, we added a test that should hopefully catch this in the future by proxy.
-
-The most important breaking change, is yet another which modifies the Custom Javascript
-Component interface. We now add a ``create()`` function to the ``bind()`` interface that
-allows ReactPy's client to recursively create components from that (and only that) import
-source. Prior to this, the interface was given unrendered models for child elements. The
-imported module was then responsible for rendering them. This placed a large burden on
-the author to understand how to handle these unrendered child models. In addition, in
-the React template used by ``module_from_template`` we needed to import a version of
-``@reactpy/client`` from the CDN - this had already caused some issues where the
-template required a version of ``@reactpy/client`` in the which had not been released
-yet.
-
-**Closed Issues**
-
-- Client-side error in mount-01d35dc3.js - :issue:`489`
-- Style Cannot Be Updated - :issue:`480`
-- Displaying error messages in the client via `__error__` tag can leak secrets - :issue:`454`
-- Examples broken in docs  - :issue:`451`
-- Rework docs landing page - :issue:`446`
-- eventHandlers should be a mapping of generic callables - :issue:`423`
-- Allow customization of built-in ReactPy client - :issue:`253`
-
-**Pull Requests**
-
-- move VdomDict and VdomJson to proto - :pull:`492`
-- only send error info in debug mode - :pull:`491`
-- correctly apply client-side JSON patch - :pull:`490`
-- add script to set version of all packages in ReactPy - :pull:`483`
-- Pass import source to bind - :pull:`482`
-- Do not mutate client-side model - :pull:`481`
-- assume import source children come from same source - :pull:`479`
-- make an EventHandlerType protocol - :pull:`476`
-- Update issue form - :pull:`471`
-
-
-v0.32.0
--------
-:octicon:`milestone` *released on 2021-08-20*
-
-In addition to a variety of bug fixes and other minor improvements, there's a breaking
-change to the custom component interface - instead of exporting multiple functions that
-render custom components, we simply expect a single ``bind()`` function.
-binding function then must return an object with a ``render()`` and ``unmount()``
-function. This change was made in order to better support the rendering of child models.
-See :ref:`Custom JavaScript Components` for details on the new interface.
-
-**Closed Issues**
-
-- Docs broken on Firefox - :issue:`469`
-- URL resolution for web modules does not consider urls starting with / - :issue:`460`
-- Query params in package name for module_from_template not stripped - :issue:`455`
-- Make docs section margins larger - :issue:`450`
-- Search broken in docs - :issue:`443`
-- Move src/reactpy/client out of Python package - :issue:`429`
-- Use composition instead of classes async with Layout and LifeCycleHook  - :issue:`412`
-- Remove Python language extension - :issue:`282`
-- Add keys to models so React doesn't complain of child arrays requiring them -
-  :issue:`255`
-- Fix binder link in docs - :issue:`231`
-
-**Pull Requests**
-
-- Update issue form - :pull:`471`
-- improve heading legibility - :pull:`470`
-- fix search in docs by upgrading sphinx - :pull:`462`
-- rework custom component interface with bind() func - :pull:`458`
-- parse package as url path in module_from_template - :pull:`456`
-- add file extensions to import - :pull:`439`
-- fix key warnings - :pull:`438`
-- fix #429 - move client JS to top of src/ dir - :pull:`430`
-
-
-v0.31.0
--------
-:octicon:`milestone` *released on 2021-07-14*
-
-The :class:`~reactpy.core.layout.Layout` is now a prototype, and ``Layout.update`` is no
-longer a public API. This is combined with a much more significant refactor of the
-underlying rendering logic.
-
-The biggest issue that has been resolved relates to the relationship between
-:class:`~reactpy.core.hooks.LifeCycleHook` and ``Layout``. Previously, the
-``LifeCycleHook`` accepted a layout instance in its constructor and called
-``Layout.update``. Additionally, the ``Layout`` would manipulate the
-``LifeCycleHook.component`` attribute whenever the component instance changed after a
-render. The former behavior leads to a non-linear code path that's a touch to follow.
-The latter behavior is the most egregious design issue since there's absolutely no local
-indication that the component instance can be swapped out (not even a comment).
-
-The new refactor no longer binds component or layout instances to a ``LifeCycleHook``.
-Instead, the hook simply receives an un-parametrized callback that can be triggered to
-schedule a render. While some error logs lose clarity (since we can't say what component
-caused them). This change precludes a need for the layout to ever mutate the hook.
-
-To accommodate this change, the internal representation of the layout's state had to
-change. Previously, a class-based approach was take, where methods of the state-holding
-classes were meant to handle all use cases. Now we rely much more heavily on very simple
-(and mostly static) data structures that have purpose built constructor functions that
-much more narrowly address each use case.
-
-After these refactors, ``ComponentTypes`` no longer needs a unique ``id`` attribute.
-Instead, a unique ID is generated internally which is associated with the
-``LifeCycleState``, not component instances since they are inherently transient.
-
-**Pull Requests**
-
-- fix #419 and #412 - :pull:`422`
-
-
-v0.30.1
--------
-:octicon:`milestone` *released on 2021-07-13*
-
-Removes the usage of the :func:`id` function for generating unique ideas because there
-were situations where the IDs bound to the lifetime of an object are problematic. Also
-adds a warning :class:`Deprecation` warning to render functions that include the
-parameter ``key``. It's been decided that allowing ``key`` to be used in this way can
-lead to confusing bugs.
-
-**Pull Requests**
-
-- warn if key is param of component render function - :pull:`421`
-- fix :issue:`417` and :issue:`413` - :pull:`418`
-- add changelog entry for :ref:`v0.30.0` - :pull:`415`
-
-
-v0.30.0
--------
-:octicon:`milestone` *released on 2021-06-28*
-
-With recent changes to the custom component interface, it's now possible to remove all
-runtime reliance on NPM. Doing so has many virtuous knock-on effects:
-
-1. Removal of large chunks of code
-2. Greatly simplifies how users dynamically experiment with React component libraries,
-   because their usage no longer requires a build step. Instead they can be loaded in
-   the browser from a CDN that distributes ESM modules.
-3. The built-in client code needs to make fewer assumption about where static resources
-   are located, and as a result, it's also easier to coordinate the server and client
-   code.
-4. Alternate client implementations benefit from this simplicity. Now, it's possible to
-   install @reactpy/client normally and write a ``loadImportSource()`` function that
-   looks for route serving the contents of `REACTPY_WEB_MODULES_DIR.`
-
-This change includes large breaking changes:
-
-- The CLI is being removed as it won't be needed any longer
-- The `reactpy.client` is being removed in favor of a stripped down ``reactpy.web`` module
-- The `REACTPY_CLIENT_BUILD_DIR` config option will no longer exist and a new
-  ``REACTPY_WEB_MODULES_DIR`` which only contains dynamically linked web modules. While
-  this new directory's location is configurable, it is meant to be transient and should
-  not be re-used across sessions.
-
-The new ``reactpy.web`` module takes a simpler approach to constructing import sources and
-expands upon the logic for resolving imports by allowing exports from URLs to be
-discovered too. Now, that ReactPy isn't using NPM to dynamically install component
-libraries ``reactpy.web`` instead creates JS modules from template files and links them
-into ``REACTPY_WEB_MODULES_DIR``. These templates ultimately direct the browser to load the
-desired library from a CDN.
-
-**Pull Requests**
-
-- Add changelog entry for 0.30.0 - :pull:`415`
-- Fix typo in index.rst - :pull:`411`
-- Add event handlers docs - :pull:`410`
-- Misc doc improvements - :pull:`409`
-- Port first ReactPy article to docs - :pull:`408`
-- Test build in CI - :pull:`404`
-- Remove all runtime reliance on NPM - :pull:`398`
-
-
-v0.29.0
--------
-:octicon:`milestone` *released on 2021-06-20*
-
-Contains breaking changes, the most significant of which are:
-
-- Moves the runtime client build directory to a "user data" directory rather a directory
-  where ReactPy's code was installed. This has the advantage of not requiring write
-  permissions to rebuild the client if ReactPy was installed globally rather than in a
-  virtual environment.
-- The custom JS component interface has been reworked to expose an API similar to
-  the ``createElement``, ``render``, ``unmountComponentAtNode`` functions from React.
-
-**Issues Fixed:**
-
-- :issue:`375`
-- :issue:`394`
-- :issue:`401`
-
-**Highlighted Commits:**
-
-- add try/except around event handling - :commit:`f2bf589`
-- do not call find_builtin_server_type at import time - :commit:`e29745e`
-- import default from react/reactDOM/fast-json-patch - :commit:`74c8a34`
-- no named exports for react/reactDOM - :commit:`f13bf35`
-- debug logs for runtime build dir create/update - :commit:`af94f4e`
-- put runtime build in user data dir - :commit:`0af69d2`
-- change shared to update_on_change - :commit:`6c09a86`
-- rework js module interface + fix docs - :commit:`699cc66`
-- correctly serialize File object - :commit:`a2398dc`
-
-
-v0.28.0
--------
-:octicon:`milestone` *released on 2021-06-01*
-
-Includes a wide variety of improvements:
-
-- support ``currentTime`` attr of audio/video elements
-- support for the ``files`` attribute from the target of input elements
-- model children are passed to the Javascript ``mount()`` function
-- began to add tests to client-side javascript
-- add a ``mountLayoutWithWebSocket`` function to ``@reactpy/client``
-
-and breaking changes, the most significant of which are:
-
-- Refactor existing server implementations as functions adhering to a protocol. This
-  greatly simplified much of the code responsible for setting up servers and avoids
-  the use of inheritance.
-- Switch to a monorepo-style structure for Javascript enabling a greater separation of
-  concerns and common workspace scripts in ``package.json``.
-- Use a ``loadImportSource()`` function instead of trying to infer the path to dynamic
-  modules which was brittle and inflexible. Allowing the specific client implementation
-  to discover where "import sources" are located means ``@reactpy/client`` doesn't
-  need to try and devise a solution that will work for all cases. The fallout from this
-  change is the addition of `importSource.sourceType` which, for the moment can either
-  be ``"NAME"`` or ``"URL"`` where the former indicates the client is expected to know
-  where to find a module of that name, and the latter should (usually) be passed on to
-  ``import()``
-
-
-**Issues Fixed:**
-
-- :issue:`324` (partially resolved)
-- :issue:`375`
-
-**Highlighted Commits:**
-
-- xfail due to bug in Python - :commit:`fee49a7`
-- add importSource sourceType field - :commit:`795bf94`
-- refactor client to use loadImportSource param - :commit:`bb5e3f3`
-- turn app into a package - :commit:`b282fc2`
-- add debug logs - :commit:`4b4f9b7`
-- add basic docs about JS test suite - :commit:`9ecfde5`
-- only use nox for python tests - :commit:`5056b7b`
-- test event serialization - :commit:`05fd86c`
-- serialize files attribute of file input element - :commit:`f0d00b7`
-- rename hasMount to exportsMount - :commit:`d55a28f`
-- refactor flask - :commit:`94681b6`
-- refactor tornado + misc fixes to sanic/fastapi - :commit:`16c9209`
-- refactor fastapi using server protocol - :commit:`0cc03ba`
-- refactor sanic server - :commit:`43d4b4f`
-- use server protocol instead of inheritance - :commit:`abe0fde`
-- support currentTime attr of audio/video elements - :commit:`975b54a`
-- pass children as props to mount() - :commit:`9494bc0`
-
-
-v0.27.0
--------
-:octicon:`milestone` *released on 2021-05-14*
-
-Introduces changes to the interface for custom Javascript components. This now allows
-JS modules to export a ``mount(element, component, props)`` function which can be used
-to bind new elements to the DOM instead of using the application's own React instance
-and specifying React as a peer dependency. This avoids a wide variety of potential
-issues with implementing custom components and opens up the possibility for a wider
-variety of component implementations.
-
-**Highlighted Commits:**
-
-- modules with mount func should not have children - :commit:`94d006c`
-- limit to flask<2.0 - :commit:`e7c11d0`
-- federate modules with mount function - :commit:`bf63a62`
-
-
-v0.26.0
--------
-:octicon:`milestone` *released on 2021-05-07*
-
-A collection of minor fixes and changes that, as a whole, add up to something requiring
-a minor release. The most significant addition is a fix for situations where a
-``Layout`` can raise an error when a component whose state has been delete is rendered.
-This occurs when element has been unmounted, but a latent event tells the layout it
-should be updated. For example, when a user clicks a button rapidly, and the resulting
-update deletes the original button.
-
-**Highlighted Commits:**
-
-- only one attr dict in vdom constructor - :commit:`555086a`
-- remove Option setter/getter with current property - :commit:`2627f79`
-- add cli command to show options - :commit:`c9e6869`
-- check component has model state before render - :commit:`6a50d56`
-- rename daemon to run_in_thread + misc - :commit:`417b687`
-
-
-v0.25.0
--------
-:octicon:`milestone` *released on 2021-04-30*
-
-Completely refactors layout dispatcher by switching from a class-based approach to one
-that leverages pure functions. While the logic itself isn't any simpler, it was easier
-to implement, and now hopefully understand, correctly. This conversion was motivated by
-several bugs that had cropped up related to improper usage of ``anyio``.
-
-**Issues Fixed:**
-
-- :issue:`330`
-- :issue:`298`
-
-**Highlighted Commits:**
-
-- improve docs + simplify multi-view - :commit:`4129b60`
-- require anyio>=3.0 - :commit:`24aed28`
-- refactor dispatchers - :commit:`ce8e060`
-
-
-v0.24.0
--------
-:octicon:`milestone` *released on 2021-04-18*
-
-This release contains an update that allows components and elements to have "identity".
-That is, their state can be preserved across updates. Before this point, only the state
-for the component at the root of an update was preserved. Now though, the state for any
-component and element with a ``key`` that is unique amongst its siblings, will be
-preserved so long as this is also true for parent elements/components within the scope
-of the current update. Thus, only when the key of the element or component changes will
-its state do the same.
-
-In a future update, the default key for all elements and components will be its index
-with respect to its siblings in the layout. The
-:attr:`~reactpy.config.REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY` feature flag has been introduced
-to allow users to enable this behavior early.
-
-**Highlighted Commits:**
-
-- add feature flag for default key behavior - :commit:`42ee01c`
-- use unique object instead of index as default key - :commit:`5727ab4`
-- make HookCatcher/StaticEventHandlers testing utils - :commit:`1abfd76`
-- add element and component identity - :commit:`5548f02`
-- minor doc updates - :commit:`e5511d9`
-- add tests for callback identity preservation with keys - :commit:`72e03ec`
-- add 'key' to VDOM spec - :commit:`c3236fe`
-- Rename validate_serialized_vdom to validate_vdom_json - :commit:`d04faf9`
-- EventHandler should not serialize itself - :commit:`f7a59f2`
-- fix docs typos - :commit:`42b2e20`
-- fixes: #331 - add roadmap to docs - :commit:`4226c12`
-
-
-v0.23.1
--------
-:octicon:`milestone` *released on 2021-04-02*
-
-**Highlighted Commits:**
-
-- fix non-deterministic return order in install() - :commit:`494d5c2`
-
-
-v0.23.0
--------
-:octicon:`milestone` *released on 2021-04-01*
-
-**Highlighted Commits:**
-
-- add changelog to docs - :commit:`9cbfe94`
-- automatically reconnect to server - :commit:`3477e2b`
-- allow no reconnect in client - :commit:`ef263c2`
-- cleaner way to specify import sources - :commit:`ea19a07`
-- add the reactpy-react-client back into the main repo - :commit:`5dcc3bb`
-- implement fastapi render server - :commit:`94e0620`
-- improve docstring for REACTPY_CLIENT_BUILD_DIR - :commit:`962d885`
-- cli improvements - :commit:`788fd86`
-- rename SERIALIZED_VDOM_JSON_SCHEMA to VDOM_JSON_SCHEMA - :commit:`74ad578`
-- better logging for modules - :commit:`39565b9`
-- move client utils into private module - :commit:`f825e96`
-- redirect BUILD_DIR imports to REACTPY_CLIENT_BUILD_DIR option - :commit:`53fb23b`
-- upgrade snowpack - :commit:`5697a2d`
-- better logs for reactpy.run + flask server - :commit:`2b34e3d`
-- move package to src dir - :commit:`066c9c5`
-- reactpy restore uses backup - :commit:`773f78e`
diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst
deleted file mode 100644
index b44be9b7e..000000000
--- a/docs/source/about/contributor-guide.rst
+++ /dev/null
@@ -1,331 +0,0 @@
-Contributor Guide
-=================
-
-.. note::
-
-    The
-    `Code of Conduct <https://github.com/reactive-python/reactpy/blob/main/CODE_OF_CONDUCT.md>`__
-    applies in all community spaces. If you are not familiar with our Code of Conduct
-    policy, take a minute to read it before making your first contribution.
-
-The ReactPy team welcomes contributions and contributors of all kinds - whether they come
-as code changes, participation in the discussions, opening issues and pointing out bugs,
-or simply sharing your work with your colleagues and friends. We're excited to see how
-you can help move this project and community forward!
-
-
-.. _everyone can contribute:
-
-Everyone Can Contribute!
-------------------------
-
-Trust us, there's so many ways to support the project. We're always looking for people
-who can:
-
-- Improve our documentation
-- Teach and tell others about ReactPy
-- Share ideas for new features
-- Report bugs
-- Participate in general discussions
-
-Still aren't sure what you have to offer? Just :discussion-type:`ask us <question>` and
-we'll help you make your first contribution.
-
-
-Making a Pull Request
----------------------
-
-To make your first code contribution to ReactPy, you'll need to install Git_ (or
-`Git Bash`_ on Windows). Thankfully there are many helpful
-`tutorials <https://github.com/firstcontributions/first-contributions/blob/master/README.md>`__
-about how to get started. To make a change to ReactPy you'll do the following:
-
-`Fork ReactPy <https://docs.github.com/en/github/getting-started-with-github/fork-a-repo>`__:
-    Go to `this URL <https://github.com/reactive-python/reactpy>`__ and click the "Fork" button.
-
-`Clone your fork <https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository>`__:
-    You use a ``git clone`` command to copy the code from GitHub to your computer.
-
-`Create a new branch <https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging>`__:
-    You'll ``git checkout -b your-first-branch`` to create a new space to start your work.
-
-:ref:`Prepare your Development Environment <Development Environment>`:
-    We explain in more detail below how to install all ReactPy's dependencies.
-
-`Push your changes <https://docs.github.com/en/github/using-git/pushing-commits-to-a-remote-repository>`__:
-    Once you've made changes to ReactPy, you'll ``git push`` them to your fork.
-
-:ref:`Create a changelog entry <Creating a changelog entry>`:
-    Record your changes in the :ref:`changelog` so we can publicize them in the next release.
-
-`Create a Pull Request <https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request>`__:
-    We'll review your changes, run some :ref:`tests <Running The Tests>` and
-    :ref:`equality checks <Code Quality Checks>` and, with any luck, accept your request.
-    At that point your contribution will be merged into the main codebase!
-
-
-Development Environment
------------------------
-
-.. note::
-
-    If you have any questions during set up or development post on our
-    :discussion-type:`discussion board <question>` and we'll answer them.
-
-In order to develop ReactPy locally you'll first need to install the following:
-
-.. list-table::
-    :header-rows: 1
-
-    *   - What to Install
-        - How to Install
-
-    *   - Python >= 3.9
-        - https://realpython.com/installing-python/
-
-    *   - Hatch
-        - https://hatch.pypa.io/latest/install/
-
-    *   - Poetry
-        - https://python-poetry.org/docs/#installation
-
-    *   - Git
-        - https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-
-    *   - NodeJS >= 14
-        - https://nodejs.org/en/download/package-manager/
-
-    *   - NPM >= 7.13
-        - https://docs.npmjs.com/try-the-latest-stable-version-of-npm
-
-    *   - Docker (optional)
-        - https://docs.docker.com/get-docker/
-
-.. note::
-
-    NodeJS distributes a version of NPM, but you'll want to get the latest
-
-Once done, you can clone a local copy of this repository:
-
-.. code-block:: bash
-
-    git clone https://github.com/reactive-python/reactpy.git
-    cd reactpy
-
-Then, you should be able to activate your development environment with:
-
-.. code-block:: bash
-
-    hatch shell
-
-
-Running The Tests
------------------
-
-Tests exist for both Python and Javascript. These can be run with the following:
-
-.. code-block:: bash
-
-    hatch run test-py
-    hatch run test-js
-
-If you want to run tests for individual packages you'll need to ``cd`` into the
-package directory and run the tests from there. For example, to run the tests just for
-the ``reactpy`` package you'd do:
-
-.. code-block:: bash
-
-    cd src/py/reactpy
-    hatch run test --headed  # run the tests in a browser window
-
-For Javascript, you'd do:
-
-.. code-block:: bash
-
-    cd src/js/packages/event-to-object
-    npm run check:tests
-
-
-Code Quality Checks
--------------------
-
-Several tools are run on the codebase to help validate its quality. For the most part,
-if you set up your :ref:`Development Environment` with pre-commit_ to check your work
-before you commit it, then you'll be notified when changes need to be made or, in the
-best case, changes will be made automatically for you.
-
-The following are currently being used:
-
-- MyPy_ - a static type checker
-- Black_ - an opinionated code formatter
-- Flake8_ - a style guide enforcement tool
-- Ruff_ - An extremely fast Python linter, written in Rust.
-- Prettier_ - a tool for automatically formatting various file types
-- EsLint_ - A Javascript linter
-
-The most strict measure of quality enforced on the codebase is 100% test coverage in
-Python files. This means that every line of coded added to ReactPy requires a test case
-that exercises it. This doesn't prevent all bugs, but it should ensure that we catch the
-most common ones.
-
-If you need help understanding why code you've submitted does not pass these checks,
-then be sure to ask, either in the :discussion-type:`Community Forum <question>` or in
-your :ref:`Pull Request <Making a Pull Request>`.
-
-.. note::
-
-    You can manually run ``hatch run lint --fix`` to auto format your code without
-    having to do so via ``pre-commit``. However, many IDEs have ways to automatically
-    format upon saving a file (e.g.
-    `VSCode <https://code.visualstudio.com/docs/python/editing#_formatting>`__)
-
-
-Building The Documentation
---------------------------
-
-To build and display the documentation locally run:
-
-.. code-block:: bash
-
-    hatch run docs
-
-This will compile the documentation from its source files into HTML, start a web server,
-and open a browser to display the now generated documentation. Whenever you change any
-source files the web server will automatically rebuild the documentation and refresh the
-page. Under the hood this is using
-`sphinx-autobuild <https://github.com/executablebooks/sphinx-autobuild>`__.
-
-To run some of the examples in the documentation as if they were tests run:
-
-.. code-block:: bash
-
-    hatch run test-docs
-
-Building the documentation as it's deployed in production requires Docker_. Once you've
-installed Docker, you can run:
-
-.. code-block:: bash
-
-    hatch run docs --docker
-
-Where you can then navigate to http://localhost:5000..
-
-
-Creating a Changelog Entry
---------------------------
-
-As part of your pull request, you'll want to edit the `Changelog
-<https://github.com/reactive-python/reactpy/blob/main/docs/source/about/changelog.rst>`__ by
-adding an entry describing what you've changed or improved. You should write an entry in
-the style of `Keep a Changelog <https://keepachangelog.com/>`__ that falls under one of
-the following categories, and add it to the :ref:`Unreleased` section of the changelog:
-
-- **Added** - for new features.
-- **Changed** - for changes in existing functionality.
-- **Deprecated** - for soon-to-be removed features.
-- **Removed** - for now removed features.
-- **Fixed** - for any bug fixes.
-- **Documented** - for improvements to this documentation.
-- **Security** - in case of vulnerabilities.
-
-If one of the sections doesn't exist, add it. If it does already, add a bullet point
-under the relevant section. Your description should begin with a reference to the
-relevant issue or pull request number. Here's a short example of what an unreleased
-changelog entry might look like:
-
-.. code-block:: rst
-
-    Unreleased
-    ----------
-
-    **Added**
-
-    - :pull:`123` - A really cool new feature
-
-    **Changed**
-
-    - :pull:`456` - The behavior of some existing feature
-
-    **Fixed**
-
-    - :issue:`789` - Some really bad bug
-
-.. hint::
-
-    ``:issue:`` and ``:pull:`` refer to issue and pull request ticket numbers.
-
-
-Release Process
----------------
-
-Creating a release for ReactPy involves two steps:
-
-1. Tagging a version
-2. Publishing a release
-
-To **tag a version** you'll run the following command:
-
-.. code-block:: bash
-
-    nox -s tag -- <the-new-version>
-
-Which will update the version for:
-
-- Python packages
-- Javascript packages
-- The changelog
-
-You'll be then prompted to confirm the auto-generated updates before those changes will
-be staged, committed, and pushed along with a new tag matching ``<the-new-version>``
-which was specified earlier.
-
-Lastly, to **publish a release** `create one in GitHub
-<https://docs.github.com/en/github/administering-a-repository/releasing-projects-on-github/managing-releases-in-a-repository>`__.
-Because we pushed a tag using the command above, there should already be a saved tag you
-can target when authoring the release. The release needs a title and description. The
-title should simply be the version (same as the tag), and the description should simply
-use GitHub's "Auto-generated release notes".
-
-
-Other Core Repositories
------------------------
-
-ReactPy depends on, or is used by several other core projects. For documentation on them
-you should refer to their respective documentation in the links below:
-
-- `reactpy-js-component-template
-  <https://github.com/reactive-python/reactpy-js-component-template>`__ - Template repo
-  for making :ref:`Custom Javascript Components`.
-- `reactpy-flake8 <https://github.com/reactive-python/reactpy-flake8>`__ - Enforces the
-  :ref:`Rules of Hooks`
-- `reactpy-jupyter <https://github.com/reactive-python/reactpy-jupyter>`__ - ReactPy integration for
-  Jupyter
-- `reactpy-dash <https://github.com/reactive-python/reactpy-dash>`__ - ReactPy integration for Plotly
-  Dash
-- `django-reactpy <https://github.com/reactive-python/django-reactpy>`__ - ReactPy integration for
-  Django
-
-.. Links
-.. =====
-
-.. _Google Chrome: https://www.google.com/chrome/
-.. _Docker: https://docs.docker.com/get-docker/
-.. _Git: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-.. _Git Bash: https://gitforwindows.org/
-.. _NPM: https://www.npmjs.com/get-npm
-.. _PyPI: https://pypi.org/project/reactpy
-.. _pip: https://pypi.org/project/pip/
-.. _PyTest: pytest <https://docs.pytest.org
-.. _Playwright: https://playwright.dev/python/
-.. _React: https://reactjs.org/
-.. _Heroku: https://www.heroku.com/what
-.. _GitHub Actions: https://github.com/features/actions
-.. _pre-commit: https://pre-commit.com/
-.. _GitHub Flow: https://guides.github.com/introduction/flow/
-.. _MyPy: http://mypy-lang.org/
-.. _Black: https://github.com/psf/black
-.. _Flake8: https://flake8.pycqa.org/en/latest/
-.. _Ruff: https://github.com/charliermarsh/ruff
-.. _UVU: https://github.com/lukeed/uvu
-.. _Prettier: https://prettier.io/
-.. _ESLint: https://eslint.org/
diff --git a/docs/source/about/credits-and-licenses.rst b/docs/source/about/credits-and-licenses.rst
deleted file mode 100644
index bc66cb11f..000000000
--- a/docs/source/about/credits-and-licenses.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-Credits and Licenses
-====================
-
-Much of this documentation, including its layout and content, was created with heavy
-influence from https://reactjs.org which uses the `Creative Commons Attribution 4.0
-International
-<https://raw.githubusercontent.com/reactjs/reactjs.org/b2d5613b6ae20855ced7c83067b604034bebbb44/LICENSE-DOCS.md>`__
-license. While many things have been transformed, we paraphrase and, in some places,
-copy language or examples where ReactPy's behavior mirrors that of React's.
-
-
-Source Code License
--------------------
-
-.. literalinclude:: ../../../LICENSE
-   :language: text
diff --git a/docs/source/conf.py b/docs/source/conf.py
deleted file mode 100644
index 08addad8d..000000000
--- a/docs/source/conf.py
+++ /dev/null
@@ -1,330 +0,0 @@
-#
-# Configuration file for the Sphinx documentation builder.
-#
-# This file does only contain a selection of the most common options. For a
-# full list see the documentation:
-# http://www.sphinx-doc.org/en/master/config
-
-import sys
-from doctest import DONT_ACCEPT_TRUE_FOR_1, ELLIPSIS, NORMALIZE_WHITESPACE
-from pathlib import Path
-
-# -- Path Setup --------------------------------------------------------------
-
-THIS_DIR = Path(__file__).parent
-ROOT_DIR = THIS_DIR.parent.parent
-DOCS_DIR = THIS_DIR.parent
-
-# extension path
-sys.path.insert(0, str(DOCS_DIR))
-sys.path.insert(0, str(THIS_DIR / "_exts"))
-
-
-# -- Project information -----------------------------------------------------
-
-project = "ReactPy"
-title = "ReactPy"
-description = (
-    "ReactPy is a Python web framework for building interactive websites without needing "
-    "a single line of Javascript. It can be run standalone, in a Jupyter Notebook, or "
-    "as part of an existing application."
-)
-copyright = "2023, Ryan Morshead"  # noqa: A001
-author = "Ryan Morshead"
-
-# -- Common External Links ---------------------------------------------------
-
-extlinks = {
-    "issue": (
-        "https://github.com/reactive-python/reactpy/issues/%s",
-        "#%s",
-    ),
-    "pull": (
-        "https://github.com/reactive-python/reactpy/pull/%s",
-        "#%s",
-    ),
-    "discussion": (
-        "https://github.com/reactive-python/reactpy/discussions/%s",
-        "#%s",
-    ),
-    "discussion-type": (
-        "https://github.com/reactive-python/reactpy/discussions/categories/%s",
-        "%s",
-    ),
-    "commit": (
-        "https://github.com/reactive-python/reactpy/commit/%s",
-        "%s",
-    ),
-}
-extlinks_detect_hardcoded_links = True
-
-
-# -- General configuration ---------------------------------------------------
-
-# If your documentatirston needs a minimal Sphinx version, state it here.
-#
-# needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
-    "sphinx.ext.autodoc",
-    "sphinx.ext.intersphinx",
-    "sphinx.ext.coverage",
-    "sphinx.ext.viewcode",
-    "sphinx.ext.napoleon",
-    "sphinx.ext.extlinks",
-    # third party extensions
-    "sphinx_copybutton",
-    "sphinx_reredirects",
-    "sphinx_design",
-    "sphinxext.opengraph",
-    # custom extensions
-    "async_doctest",
-    "autogen_api_docs",
-    "copy_vdom_json_schema",
-    "reactpy_view",
-    "patched_html_translator",
-    "reactpy_example",
-    "build_custom_js",
-    "custom_autosectionlabel",
-]
-
-# Add any paths that contain templates here, relative to this directory.
-# templates_path = ["templates"]
-
-# The suffix(es) of source filenames.
-# You can specify multiple suffix as a list of string:
-#
-# source_suffix = ['.rst', '.md']
-source_suffix = ".rst"
-
-# The master toctree document.
-master_doc = "index"
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = "en"
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = [
-    "_custom_js",
-]
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = None
-
-# The default language to highlight source code in.
-highlight_language = "python3"
-
-# Controls how sphinx.ext.autodoc represents typehints in the function signature
-autodoc_typehints = "description"
-
-# -- Doc Test Configuration -------------------------------------------------------
-
-doctest_default_flags = NORMALIZE_WHITESPACE | ELLIPSIS | DONT_ACCEPT_TRUE_FOR_1
-
-# -- Extension Configuration ------------------------------------------------------
-
-
-# -- sphinx.ext.autosectionlabel ---
-
-autosectionlabel_skip_docs = ["_auto/apis"]
-
-
-# -- sphinx.ext.autodoc --
-
-# show base classes for autodoc
-autodoc_default_options = {
-    "show-inheritance": True,
-    "member-order": "bysource",
-}
-# order autodoc members by their order in the source
-autodoc_member_order = "bysource"
-
-
-# -- sphinx_reredirects --
-
-redirects = {
-    "package-api": "_autogen/user-apis.html",
-    "configuration-options": "_autogen/dev-apis.html#configuration-options",
-    "examples": "creating-interfaces/index.html",
-}
-
-
-# -- sphinxext.opengraph --
-
-ogp_site_url = "https://reactpy.dev/"
-ogp_image = "https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/png/reactpy-logo-landscape-padded.png"
-# We manually specify this below
-# ogp_description_length = 200
-ogp_type = "website"
-ogp_custom_meta_tags = [
-    # Open Graph Meta Tags
-    f'<meta property="og:title" content="{title}">',
-    f'<meta property="og:description" content="{description}">',
-    # Twitter Meta Tags
-    '<meta name="twitter:card" content="summary_large_image">',
-    '<meta name="twitter:creator" content="@rmorshea">',
-    '<meta name="twitter:site" content="@rmorshea">',
-]
-
-
-# -- Options for HTML output -------------------------------------------------
-
-# Set the page title
-html_title = title
-
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-#
-html_theme = "furo"
-html_logo = str(ROOT_DIR / "branding" / "svg" / "reactpy-logo-landscape.svg")
-html_favicon = str(ROOT_DIR / "branding" / "ico" / "reactpy-logo.ico")
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-
-html_theme_options = {
-    "light_css_variables": {
-        # furo
-        "admonition-title-font-size": "1rem",
-        "admonition-font-size": "1rem",
-        # sphinx-design
-        "sd-color-info": "var(--color-admonition-title-background--note)",
-        "sd-color-warning": "var(--color-admonition-title-background--warning)",
-        "sd-color-danger": "var(--color-admonition-title-background--danger)",
-        "sd-color-info-text": "var(--color-admonition-title--note)",
-        "sd-color-warning-text": "var(--color-admonition-title--warning)",
-        "sd-color-danger-text": "var(--color-admonition-title--danger)",
-    },
-}
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ["_static"]
-
-# These paths are either relative to html_static_path
-# or fully qualified paths (eg. https://...)
-css_dir = THIS_DIR / "_static" / "css"
-html_css_files = [
-    str(p.relative_to(THIS_DIR / "_static")) for p in css_dir.glob("*.css")
-]
-
-# Custom sidebar templates, must be a dictionary that maps document names
-# to template names.
-#
-# The default sidebars (for documents that don't match any pattern) are
-# defined by theme itself.  Builtin themes are using these templates by
-# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
-# 'searchbox.html']``.
-#
-# html_sidebars = {}
-
-
-# -- Options for Sphinx Panels -----------------------------------------------
-
-panels_css_variables = {
-    "tabs-color-label-active": "rgb(106, 176, 221)",
-    "tabs-color-label-inactive": "rgb(201, 225, 250)",
-    "tabs-color-overline": "rgb(201, 225, 250)",
-    "tabs-color-underline": "rgb(201, 225, 250)",
-}
-
-# -- Options for HTMLHelp output ---------------------------------------------
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = "ReactPydoc"
-
-
-# -- Options for LaTeX output ------------------------------------------------
-
-# latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#
-# 'papersize': 'letterpaper',
-# The font size ('10pt', '11pt' or '12pt').
-#
-# 'pointsize': '10pt',
-# Additional stuff for the LaTeX preamble.
-#
-# 'preamble': '',
-# Latex figure (float) alignment
-#
-# 'figure_align': 'htbp',
-# }
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-#  author, documentclass [howto, manual, or own class]).
-latex_documents = [(master_doc, "ReactPy.tex", html_title, "Ryan Morshead", "manual")]
-
-
-# -- Options for manual page output ------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [(master_doc, "reactpy", html_title, [author], 1)]
-
-
-# -- Options for Texinfo output ----------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-    (
-        master_doc,
-        "ReactPy",
-        html_title,
-        author,
-        "ReactPy",
-        "One line description of project.",
-        "Miscellaneous",
-    )
-]
-
-# -- Options for Sphinx-Autodoc-Typehints output -------------------------------------------------
-
-set_type_checking_flag = False
-
-# -- Options for Epub output -------------------------------------------------
-
-# Bibliographic Dublin Core info.
-epub_title = project
-
-# The unique identifier of the text. This can be a ISBN number
-# or the project homepage.
-#
-# epub_identifier = ''
-
-# A unique identification for the text.
-#
-# epub_uid = ''
-
-# A list of files that should not be packed into the epub file.
-epub_exclude_files = ["search.html"]
-
-# -- Options for intersphinx extension ---------------------------------------
-
-# Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {
-    "python": ("https://docs.python.org/3", None),
-    "pyalect": ("https://pyalect.readthedocs.io/en/latest", None),
-    "sanic": ("https://sanic.readthedocs.io/en/latest/", None),
-    "tornado": ("https://www.tornadoweb.org/en/stable/", None),
-    "flask": ("https://flask.palletsprojects.com/en/1.1.x/", None),
-}
-
-# -- Options for todo extension ----------------------------------------------
-
-# If true, `todo` and `todoList` produce output, else they produce nothing.
-todo_include_todos = True
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json
deleted file mode 100644
index b1315912d..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json
+++ /dev/null
@@ -1,72 +0,0 @@
-[
-  {
-    "name": "Homenaje a la Neurocirugía",
-    "artist": "Marta Colvin Andrade",
-    "description": "Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg/1024px-Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg",
-    "alt": "A bronze statue of two crossed hands delicately holding a human brain in their fingertips."
-  },
-  {
-    "name": "Eternal Presence",
-    "artist": "John Woodrow Wilson",
-    "description": "Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as \"a symbolic Black presence infused with a sense of universal humanity.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Chicago%2C_Illinois_Eternal_Silence1_crop.jpg",
-    "alt": "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity."
-  },
-  {
-    "name": "Moai",
-    "artist": "Unknown Artist",
-    "description": "Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/5/50/AhuTongariki.JPG",
-    "alt": "Three monumental stone busts with the heads that are disproportionately large with somber faces."
-  },
-  {
-    "name": "Blue Nana",
-    "artist": "Niki de Saint Phalle",
-    "description": "The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Blue_Nana_-_panoramio.jpg/1024px-Blue_Nana_-_panoramio.jpg",
-    "alt": "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy."
-  },
-  {
-    "name": "Cavaliere",
-    "artist": "Lamidi Olonade Fakeye",
-    "description": "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/3/34/Nigeria%2C_lamidi_olonade_fakeye%2C_cavaliere%2C_1992.jpg",
-    "alt": "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns."
-  },
-  {
-    "name": "Big Bellies",
-    "artist": "Alina Szapocznikow",
-    "description": "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/KMM_Szapocznikow.JPG/200px-KMM_Szapocznikow.JPG",
-    "alt": "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures."
-  },
-  {
-    "name": "Terracotta Army",
-    "artist": "Unknown Artist",
-    "description": "The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg/1920px-2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg",
-    "alt": "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor."
-  },
-  {
-    "name": "Lunar Landscape",
-    "artist": "Louise Nevelson",
-    "description": "Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/1999-3-A--J_s.jpg/220px-1999-3-A--J_s.jpg",
-    "alt": "A black matte sculpture where the individual elements are initially indistinguishable."
-  },
-  {
-    "name": "Aureole",
-    "artist": "Ranjani Shettar",
-    "description": "Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a \"fine synthesis of unlikely materials.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Shettar-_5854-sm_%285132866765%29.jpg/399px-Shettar-_5854-sm_%285132866765%29.jpg",
-    "alt": "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light."
-  },
-  {
-    "name": "Hippos",
-    "artist": "Taipei Zoo",
-    "description": "The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Hippo_sculpture_Taipei_Zoo_20543.jpg/250px-Hippo_sculpture_Taipei_Zoo_20543.jpg",
-    "alt": "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming."
-  }
-]
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py
deleted file mode 100644
index a919a2354..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import json
-from pathlib import Path
-
-from reactpy import component, hooks, html, run
-
-HERE = Path(__file__)
-DATA_PATH = HERE.parent / "data.json"
-sculpture_data = json.loads(DATA_PATH.read_text())
-
-
-@component
-def Gallery():
-    index, set_index = hooks.use_state(0)
-
-    def handle_click(event):
-        set_index(index + 1)
-
-    bounded_index = index % len(sculpture_data)
-    sculpture = sculpture_data[bounded_index]
-    alt = sculpture["alt"]
-    artist = sculpture["artist"]
-    description = sculpture["description"]
-    name = sculpture["name"]
-    url = sculpture["url"]
-
-    return html.div(
-        html.button({"on_click": handle_click}, "Next"),
-        html.h2(name, " by ", artist),
-        html.p(f"({bounded_index + 1} of {len(sculpture_data)})"),
-        html.img({"src": url, "alt": alt, "style": {"height": "200px"}}),
-        html.p(description),
-    )
-
-
-run(Gallery)
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/data.json
deleted file mode 100644
index b1315912d..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/data.json
+++ /dev/null
@@ -1,72 +0,0 @@
-[
-  {
-    "name": "Homenaje a la Neurocirugía",
-    "artist": "Marta Colvin Andrade",
-    "description": "Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg/1024px-Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg",
-    "alt": "A bronze statue of two crossed hands delicately holding a human brain in their fingertips."
-  },
-  {
-    "name": "Eternal Presence",
-    "artist": "John Woodrow Wilson",
-    "description": "Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as \"a symbolic Black presence infused with a sense of universal humanity.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Chicago%2C_Illinois_Eternal_Silence1_crop.jpg",
-    "alt": "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity."
-  },
-  {
-    "name": "Moai",
-    "artist": "Unknown Artist",
-    "description": "Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/5/50/AhuTongariki.JPG",
-    "alt": "Three monumental stone busts with the heads that are disproportionately large with somber faces."
-  },
-  {
-    "name": "Blue Nana",
-    "artist": "Niki de Saint Phalle",
-    "description": "The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Blue_Nana_-_panoramio.jpg/1024px-Blue_Nana_-_panoramio.jpg",
-    "alt": "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy."
-  },
-  {
-    "name": "Cavaliere",
-    "artist": "Lamidi Olonade Fakeye",
-    "description": "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/3/34/Nigeria%2C_lamidi_olonade_fakeye%2C_cavaliere%2C_1992.jpg",
-    "alt": "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns."
-  },
-  {
-    "name": "Big Bellies",
-    "artist": "Alina Szapocznikow",
-    "description": "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/KMM_Szapocznikow.JPG/200px-KMM_Szapocznikow.JPG",
-    "alt": "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures."
-  },
-  {
-    "name": "Terracotta Army",
-    "artist": "Unknown Artist",
-    "description": "The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg/1920px-2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg",
-    "alt": "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor."
-  },
-  {
-    "name": "Lunar Landscape",
-    "artist": "Louise Nevelson",
-    "description": "Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/1999-3-A--J_s.jpg/220px-1999-3-A--J_s.jpg",
-    "alt": "A black matte sculpture where the individual elements are initially indistinguishable."
-  },
-  {
-    "name": "Aureole",
-    "artist": "Ranjani Shettar",
-    "description": "Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a \"fine synthesis of unlikely materials.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Shettar-_5854-sm_%285132866765%29.jpg/399px-Shettar-_5854-sm_%285132866765%29.jpg",
-    "alt": "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light."
-  },
-  {
-    "name": "Hippos",
-    "artist": "Taipei Zoo",
-    "description": "The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Hippo_sculpture_Taipei_Zoo_20543.jpg/250px-Hippo_sculpture_Taipei_Zoo_20543.jpg",
-    "alt": "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming."
-  }
-]
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py
deleted file mode 100644
index d07b87140..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py
+++ /dev/null
@@ -1,53 +0,0 @@
-import json
-from pathlib import Path
-
-from reactpy import component, hooks, html, run
-
-HERE = Path(__file__)
-DATA_PATH = HERE.parent / "data.json"
-sculpture_data = json.loads(DATA_PATH.read_text())
-
-
-@component
-def Gallery():
-    index, set_index = hooks.use_state(0)
-    show_more, set_show_more = hooks.use_state(False)
-
-    def handle_next_click(event):
-        set_index(index + 1)
-
-    def handle_more_click(event):
-        set_show_more(not show_more)
-
-    bounded_index = index % len(sculpture_data)
-    sculpture = sculpture_data[bounded_index]
-    alt = sculpture["alt"]
-    artist = sculpture["artist"]
-    description = sculpture["description"]
-    name = sculpture["name"]
-    url = sculpture["url"]
-
-    return html.div(
-        html.button({"on_click": handle_next_click}, "Next"),
-        html.h2(name, " by ", artist),
-        html.p(f"({bounded_index + 1} or {len(sculpture_data)})"),
-        html.img({"src": url, "alt": alt, "style": {"height": "200px"}}),
-        html.div(
-            html.button(
-                {"on_click": handle_more_click},
-                f"{('Show' if show_more else 'Hide')} details",
-            ),
-            (html.p(description) if show_more else ""),
-        ),
-    )
-
-
-@component
-def App():
-    return html.div(
-        html.section({"style": {"width": "50%", "float": "left"}}, Gallery()),
-        html.section({"style": {"width": "50%", "float": "left"}}, Gallery()),
-    )
-
-
-run(App)
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json
deleted file mode 100644
index b1315912d..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json
+++ /dev/null
@@ -1,72 +0,0 @@
-[
-  {
-    "name": "Homenaje a la Neurocirugía",
-    "artist": "Marta Colvin Andrade",
-    "description": "Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg/1024px-Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg",
-    "alt": "A bronze statue of two crossed hands delicately holding a human brain in their fingertips."
-  },
-  {
-    "name": "Eternal Presence",
-    "artist": "John Woodrow Wilson",
-    "description": "Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as \"a symbolic Black presence infused with a sense of universal humanity.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Chicago%2C_Illinois_Eternal_Silence1_crop.jpg",
-    "alt": "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity."
-  },
-  {
-    "name": "Moai",
-    "artist": "Unknown Artist",
-    "description": "Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/5/50/AhuTongariki.JPG",
-    "alt": "Three monumental stone busts with the heads that are disproportionately large with somber faces."
-  },
-  {
-    "name": "Blue Nana",
-    "artist": "Niki de Saint Phalle",
-    "description": "The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Blue_Nana_-_panoramio.jpg/1024px-Blue_Nana_-_panoramio.jpg",
-    "alt": "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy."
-  },
-  {
-    "name": "Cavaliere",
-    "artist": "Lamidi Olonade Fakeye",
-    "description": "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/3/34/Nigeria%2C_lamidi_olonade_fakeye%2C_cavaliere%2C_1992.jpg",
-    "alt": "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns."
-  },
-  {
-    "name": "Big Bellies",
-    "artist": "Alina Szapocznikow",
-    "description": "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/KMM_Szapocznikow.JPG/200px-KMM_Szapocznikow.JPG",
-    "alt": "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures."
-  },
-  {
-    "name": "Terracotta Army",
-    "artist": "Unknown Artist",
-    "description": "The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg/1920px-2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg",
-    "alt": "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor."
-  },
-  {
-    "name": "Lunar Landscape",
-    "artist": "Louise Nevelson",
-    "description": "Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/1999-3-A--J_s.jpg/220px-1999-3-A--J_s.jpg",
-    "alt": "A black matte sculpture where the individual elements are initially indistinguishable."
-  },
-  {
-    "name": "Aureole",
-    "artist": "Ranjani Shettar",
-    "description": "Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a \"fine synthesis of unlikely materials.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Shettar-_5854-sm_%285132866765%29.jpg/399px-Shettar-_5854-sm_%285132866765%29.jpg",
-    "alt": "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light."
-  },
-  {
-    "name": "Hippos",
-    "artist": "Taipei Zoo",
-    "description": "The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Hippo_sculpture_Taipei_Zoo_20543.jpg/250px-Hippo_sculpture_Taipei_Zoo_20543.jpg",
-    "alt": "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming."
-  }
-]
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py
deleted file mode 100644
index 87f9651be..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py
+++ /dev/null
@@ -1,45 +0,0 @@
-import json
-from pathlib import Path
-
-from reactpy import component, hooks, html, run
-
-HERE = Path(__file__)
-DATA_PATH = HERE.parent / "data.json"
-sculpture_data = json.loads(DATA_PATH.read_text())
-
-
-@component
-def Gallery():
-    index, set_index = hooks.use_state(0)
-    show_more, set_show_more = hooks.use_state(False)
-
-    def handle_next_click(event):
-        set_index(index + 1)
-
-    def handle_more_click(event):
-        set_show_more(not show_more)
-
-    bounded_index = index % len(sculpture_data)
-    sculpture = sculpture_data[bounded_index]
-    alt = sculpture["alt"]
-    artist = sculpture["artist"]
-    description = sculpture["description"]
-    name = sculpture["name"]
-    url = sculpture["url"]
-
-    return html.div(
-        html.button({"on_click": handle_next_click}, "Next"),
-        html.h2(name, " by ", artist),
-        html.p(f"({bounded_index + 1} or {len(sculpture_data)})"),
-        html.img({"src": url, "alt": alt, "style": {"height": "200px"}}),
-        html.div(
-            html.button(
-                {"on_click": handle_more_click},
-                f"{('Show' if show_more else 'Hide')} details",
-            ),
-            (html.p(description) if show_more else ""),
-        ),
-    )
-
-
-run(Gallery)
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/data.json
deleted file mode 100644
index b1315912d..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/data.json
+++ /dev/null
@@ -1,72 +0,0 @@
-[
-  {
-    "name": "Homenaje a la Neurocirugía",
-    "artist": "Marta Colvin Andrade",
-    "description": "Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg/1024px-Homenaje_a_la_Neurocirug%C3%ADa%2C_Instituto_de_Neurocirug%C3%ADa%2C_Providencia%2C_Santiago_20200106_02.jpg",
-    "alt": "A bronze statue of two crossed hands delicately holding a human brain in their fingertips."
-  },
-  {
-    "name": "Eternal Presence",
-    "artist": "John Woodrow Wilson",
-    "description": "Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as \"a symbolic Black presence infused with a sense of universal humanity.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Chicago%2C_Illinois_Eternal_Silence1_crop.jpg",
-    "alt": "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity."
-  },
-  {
-    "name": "Moai",
-    "artist": "Unknown Artist",
-    "description": "Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/5/50/AhuTongariki.JPG",
-    "alt": "Three monumental stone busts with the heads that are disproportionately large with somber faces."
-  },
-  {
-    "name": "Blue Nana",
-    "artist": "Niki de Saint Phalle",
-    "description": "The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Blue_Nana_-_panoramio.jpg/1024px-Blue_Nana_-_panoramio.jpg",
-    "alt": "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy."
-  },
-  {
-    "name": "Cavaliere",
-    "artist": "Lamidi Olonade Fakeye",
-    "description": "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/3/34/Nigeria%2C_lamidi_olonade_fakeye%2C_cavaliere%2C_1992.jpg",
-    "alt": "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns."
-  },
-  {
-    "name": "Big Bellies",
-    "artist": "Alina Szapocznikow",
-    "description": "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/KMM_Szapocznikow.JPG/200px-KMM_Szapocznikow.JPG",
-    "alt": "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures."
-  },
-  {
-    "name": "Terracotta Army",
-    "artist": "Unknown Artist",
-    "description": "The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg/1920px-2015-09-22-081415_-_Terrakotta-Armee%2C_Grosse_Halle.jpg",
-    "alt": "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor."
-  },
-  {
-    "name": "Lunar Landscape",
-    "artist": "Louise Nevelson",
-    "description": "Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/1999-3-A--J_s.jpg/220px-1999-3-A--J_s.jpg",
-    "alt": "A black matte sculpture where the individual elements are initially indistinguishable."
-  },
-  {
-    "name": "Aureole",
-    "artist": "Ranjani Shettar",
-    "description": "Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a \"fine synthesis of unlikely materials.\"",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Shettar-_5854-sm_%285132866765%29.jpg/399px-Shettar-_5854-sm_%285132866765%29.jpg",
-    "alt": "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light."
-  },
-  {
-    "name": "Hippos",
-    "artist": "Taipei Zoo",
-    "description": "The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
-    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Hippo_sculpture_Taipei_Zoo_20543.jpg/250px-Hippo_sculpture_Taipei_Zoo_20543.jpg",
-    "alt": "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming."
-  }
-]
diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py
deleted file mode 100644
index c617586de..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# flake8: noqa
-# errors F841,F823 for `index = index + 1` inside the closure
-
-# :lines: 7-
-# :linenos:
-
-import json
-from pathlib import Path
-
-from reactpy import component, html, run
-
-
-HERE = Path(__file__)
-DATA_PATH = HERE.parent / "data.json"
-sculpture_data = json.loads(DATA_PATH.read_text())
-
-
-@component
-def Gallery():
-    index = 0
-
-    def handle_click(event):
-        index = index + 1
-
-    bounded_index = index % len(sculpture_data)
-    sculpture = sculpture_data[bounded_index]
-    alt = sculpture["alt"]
-    artist = sculpture["artist"]
-    description = sculpture["description"]
-    name = sculpture["name"]
-    url = sculpture["url"]
-
-    return html.div(
-        html.button({"on_click": handle_click}, "Next"),
-        html.h2(name, " by ", artist),
-        html.p(f"({bounded_index + 1} or {len(sculpture_data)})"),
-        html.img({"src": url, "alt": alt, "style": {"height": "200px"}}),
-        html.p(description),
-    )
-
-
-run(Gallery)
diff --git a/docs/source/guides/adding-interactivity/components-with-state/index.rst b/docs/source/guides/adding-interactivity/components-with-state/index.rst
deleted file mode 100644
index f8235ac0d..000000000
--- a/docs/source/guides/adding-interactivity/components-with-state/index.rst
+++ /dev/null
@@ -1,351 +0,0 @@
-Components With State
-=====================
-
-Components often need to change what’s on the screen as a result of an interaction. For
-example, typing into the form should update the input field, clicking “next” on an image
-carousel should change which image is displayed, clicking “buy” should put a product in
-the shopping cart. Components need to “remember” things like the current input value,
-the current image, the shopping cart. In ReactPy, this kind of component-specific memory is
-called state.
-
-
-When Variables Aren't Enough
-----------------------------
-
-Below is a gallery of images about sculpture. Clicking the "Next" button should
-increment the ``index`` and, as a result, change what image is displayed. However, this
-does not work:
-
-.. reactpy:: _examples/when_variables_are_not_enough
-
-.. note::
-
-    Try clicking the button to see that it does not cause a change.
-
-After clicking "Next", if you check your web server's logs, you'll discover an
-``UnboundLocalError`` error. It turns out that in this case, the ``index = index + 1``
-statement is similar to `trying to set global variables
-<https://stackoverflow.com/questions/9264763/dont-understand-why-unboundlocalerror-occurs-closure>`__.
-Technically there's a way to `fix this error
-<https://docs.python.org/3/reference/simple_stmts.html#nonlocal>`__, but even if we did,
-that still wouldn't fix the underlying problems:
-
-1. **Local variables do not persist across component renders** - when a component is
-   updated, its associated function gets called again. That is, it renders. As a result,
-   all the local state that was created the last time the function was called gets
-   destroyed when it updates.
-
-2. **Changes to local variables do not cause components to re-render** - there's no way
-   for ReactPy to observe when these variables change. Thus ReactPy is not aware that
-   something has changed and that a re-render should take place.
-
-To address these problems, ReactPy provides the :func:`~reactpy.core.hooks.use_state` "hook"
-which provides:
-
-1. A **state variable** whose data is retained across renders.
-
-2. A **state setter** function that can be used to update that variable and trigger a
-   render.
-
-
-Adding State to Components
---------------------------
-
-To create a state variable and state setter with :func:`~reactpy.core.hooks.use_state` hook
-as described above, we'll begin by importing it:
-
-.. testcode::
-
-    from reactpy import use_state
-
-Then we'll make the following changes to our code :ref:`from before <When Variables
-Aren't Enough>`:
-
-.. code-block:: diff
-
-    -    index = 0
-    +    index, set_index = use_state
-
-         def handle_click(event):
-    -        index = index + 1
-    +        set_index(index + 1)
-
-After making those changes we should get:
-
-.. code-block::
-    :linenos:
-    :lineno-start: 14
-
-        index, set_index = use_state(0)
-
-        def handle_click(event):
-            set_index(index + 1)
-
-We'll talk more about what this is doing :ref:`shortly <your first hook>`, but for
-now let's just verify that this does in fact fix the problems from before:
-
-.. reactpy:: _examples/adding_state_variable
-
-
-Your First Hook
----------------
-
-In ReactPy, ``use_state``, as well as any other function whose name starts with ``use``, is
-called a "hook". These are special functions that should only be called while ReactPy is
-:ref:`rendering <the rendering process>`. They let you "hook into" the different
-capabilities of ReactPy's components of which ``use_state`` is just one (well get into the
-other :ref:`later <managing state>`).
-
-While hooks are just normal functions, but it's helpful to think of them as
-:ref:`unconditioned <rules of hooks>` declarations about a component's needs. In other
-words, you'll "use" hooks at the top of your component in the same way you might
-"import" modules at the top of your Python files.
-
-
-.. _Introduction to use_state:
-
-Introduction to ``use_state``
------------------------------
-
-When you call :func:`~reactpy.core.hooks.use_state` inside the body of a component's render
-function, you're declaring that this component needs to remember something. That
-"something" which needs to be remembered, is known as **state**. So when we look at an
-assignment expression like the one below
-
-.. code-block::
-
-    index, set_index = use_state(0)
-
-we should read it as saying that ``index`` is a piece of state which must be
-remembered by the component that declared it. The argument to ``use_state`` (in this
-case ``0``) is then conveying what the initial value for ``index`` is.
-
-We should then understand that each time the component which owns this state renders
-``use_state`` will return a tuple containing two values - the current value of the state
-(``index``) and a function to change that value the next time the component is rendered.
-Thus, in this example:
-
-- ``index`` - is a **state variable** containing the currently stored value.
-- ``set_index`` - is a **state setter** for changing that value and triggering a re-render
-  of the component.
-
-The convention is that, if you name your state variable ``thing``, your state setter
-should be named ``set_thing``. While you could name them anything you want, adhering to
-the convention makes things easier to understand across projects.
-
-----
-
-To understand how this works in context, let's break down our example by examining key
-moments in the execution of the ``Gallery`` component. Each numbered tab in the section
-below highlights a line of code where something of interest occurs:
-
-.. hint::
-
-    Try clicking through the numbered tabs to each highlighted step of execution
-
-.. tab-set::
-
-    .. tab-item:: 1
-
-        .. raw:: html
-
-            <h2>Initial render</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 2
-
-        At this point, we've just begun to render the ``Gallery`` component. As yet,
-        ReactPy is not aware that this component has any state or what view it will
-        display. This will change in a moment though when we move to the next line...
-
-    .. tab-item:: 2
-
-        .. raw:: html
-
-            <h2>Initial state declaration</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 3
-
-        The ``Gallery`` component has just declared some state. ReactPy now knows that it
-        must remember the ``index`` and trigger an update of this component when
-        ``set_index`` is called. Currently the value of ``index`` is ``0`` as per the
-        default value given to ``use_state``. Thus, the resulting view will display
-        information about the first item in our ``sculpture_data`` list.
-
-    .. tab-item:: 3
-
-        .. raw:: html
-
-            <h2>Define event handler</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 5
-
-        We've now defined an event handler that we intend to assign to a button in the
-        view. This will respond once the user clicks that button. The action this
-        handler performs is to update the value of ``index`` and schedule our ``Gallery``
-        component to update.
-
-    .. tab-item:: 4
-
-        .. raw:: html
-
-            <h2>Return the view</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 16
-
-        The ``handle_click`` function we defined above has now been assigned to a button
-        in the view and we are about to display information about the first item in out
-        ``sculpture_data`` list. When the view is ultimately displayed, if a user clicks
-        the "Next" button, the handler we just assigned will be triggered. Until that
-        point though, the application will remain static.
-
-    .. tab-item:: 5
-
-        .. raw:: html
-
-            <h2>User interaction</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 5
-
-        A user has just clicked the button 🖱️! ReactPy has sent information about the event
-        to the ``handle_click`` function and it is about to execute. In a moment we will
-        update the state of this component and schedule a re-render.
-
-    .. tab-item:: 6
-
-        .. raw:: html
-
-            <h2>New state is set</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 6
-
-        We've just now told ReactPy that we want to update the state of our ``Gallery`` and
-        that it needs to be re-rendered. More specifically, we are incrementing its
-        ``index``, and once ``Gallery`` re-renders the index *will* be ``1``.
-        Importantly, at this point, the value of ``index`` is still ``0``! This will
-        only change once the component begins to re-render.
-
-    .. tab-item:: 7
-
-        .. raw:: html
-
-            <h2>Next render begins</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 2
-
-        The scheduled re-render of ``Gallery`` has just begun. ReactPy has now updated its
-        internal state store such that, the next time we call ``use_state`` we will get
-        back the updated value of ``index``.
-
-    .. tab-item:: 8
-
-        .. raw:: html
-
-            <h2>Next state is acquired</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-            :emphasize-lines: 3
-
-        With ReactPy's state store updated, as we call ``use_state``, instead of returning
-        ``0`` for the value of ``index`` as it did before, ReactPy now returns the value
-        ``1``. With this change the view we display will be altered - instead of
-        displaying data for the first item in our ``sculpture_data`` list we will now
-        display information about the second.
-
-    .. tab-item:: 9
-
-        .. raw:: html
-
-            <h2>Repeat...</h2>
-
-        .. literalinclude:: _examples/adding_state_variable/main.py
-            :lines: 12-33
-
-        From this point on, the steps remain the same. The only difference being the
-        progressively incrementing ``index`` each time the user clicks the "Next" button
-        and the view which is altered to to reflect the currently indexed item in the
-        ``sculpture_data`` list.
-
-        .. note::
-
-            Once we reach the end of the ``sculpture_data`` list the view will return
-            back to the first item since we create a ``bounded_index`` by doing a modulo
-            of the index with the length of the list (``index % len(sculpture_data)``).
-            Ideally we would do this bounding at the time we call ``set_index`` to
-            prevent ``index`` from incrementing to infinity, but to keep things simple
-            in this examples, we've kept this logic separate.
-
-
-Multiple State Declarations
----------------------------
-
-The powerful thing about hooks like :func:`~reactpy.core.hooks.use_state` is that you're
-not limited to just one state declaration. You can call ``use_state()`` as many times as
-you need to in one component. For example, in the example below we've added a
-``show_more`` state variable along with a few other modifications (e.g. renaming
-``handle_click``) to make the description for each sculpture optionally displayed. Only
-when the user clicks the "Show details" button is this description shown:
-
-.. reactpy:: _examples/multiple_state_variables
-
-It's generally a good idea to define separate state variables if the data they represent
-is unrelated. In this case, ``index`` corresponds to what sculpture information is being
-displayed and ``show_more`` is solely concerned with whether the description for a given
-sculpture is shown. Put other way ``index`` is concerned with *what* information is
-displayed while ``show_more`` is concerned with *how* it is displayed. Conversely
-though, if you have a form with many fields, it probably makes sense to have a single
-object that holds the data for all the fields rather than an object per-field.
-
-.. note::
-
-    This topic is discussed more in the :ref:`structuring your state` section.
-
-
-State is Isolated and Private
------------------------------
-
-State is local to a component instance on the screen. In other words, if you render the
-same component twice, each copy will have completely isolated state! Changing one of
-them will not affect the other.
-
-In this example, the ``Gallery`` component from earlier is rendered twice with no
-changes to its logic. Try clicking the buttons inside each of the galleries. Notice that
-their state is independent:
-
-.. reactpy:: _examples/isolated_state
-        :result-is-default-tab:
-
-This is what makes state different from regular variables that you might declare at the
-top of your module. State is not tied to a particular function call or a place in the
-code, but it’s “local” to the specific place on the screen. You rendered two ``Gallery``
-components, so their state is stored separately.
-
-Also notice how the Page component doesn’t “know” anything about the Gallery state or
-even whether it has any. Unlike props, state is fully private to the component declaring
-it. The parent component can’t change it. This lets you add state to any component or
-remove it without impacting the rest of the components.
-
-.. card::
-    :link: /guides/managing-state/sharing-component-state/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    What if you wanted both galleries to keep their states in sync? The right way to do
-    it in ReactPy is to remove state from child components and add it to their closest
-    shared parent.
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py
deleted file mode 100644
index 6c3c783da..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def Definitions():
-    term_to_add, set_term_to_add = use_state(None)
-    definition_to_add, set_definition_to_add = use_state(None)
-    all_terms, set_all_terms = use_state({})
-
-    def handle_term_to_add_change(event):
-        set_term_to_add(event["target"]["value"])
-
-    def handle_definition_to_add_change(event):
-        set_definition_to_add(event["target"]["value"])
-
-    def handle_add_click(event):
-        if term_to_add and definition_to_add:
-            set_all_terms({**all_terms, term_to_add: definition_to_add})
-            set_term_to_add(None)
-            set_definition_to_add(None)
-
-    def make_delete_click_handler(term_to_delete):
-        def handle_click(event):
-            set_all_terms({t: d for t, d in all_terms.items() if t != term_to_delete})
-
-        return handle_click
-
-    return html.div(
-        html.button({"on_click": handle_add_click}, "add term"),
-        html.label(
-            "Term: ",
-            html.input({"value": term_to_add, "on_change": handle_term_to_add_change}),
-        ),
-        html.label(
-            "Definition: ",
-            html.input(
-                {
-                    "value": definition_to_add,
-                    "on_change": handle_definition_to_add_change,
-                }
-            ),
-        ),
-        html.hr(),
-        [
-            html.div(
-                {"key": term},
-                html.button(
-                    {"on_click": make_delete_click_handler(term)}, "delete term"
-                ),
-                html.dt(term),
-                html.dd(definition),
-            )
-            for term, definition in all_terms.items()
-        ],
-    )
-
-
-run(Definitions)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py
deleted file mode 100644
index 32dd4073a..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def Form():
-    person, set_person = use_state(
-        {
-            "first_name": "Barbara",
-            "last_name": "Hepworth",
-            "email": "bhepworth@sculpture.com",
-        }
-    )
-
-    def handle_first_name_change(event):
-        set_person({**person, "first_name": event["target"]["value"]})
-
-    def handle_last_name_change(event):
-        set_person({**person, "last_name": event["target"]["value"]})
-
-    def handle_email_change(event):
-        set_person({**person, "email": event["target"]["value"]})
-
-    return html.div(
-        html.label(
-            "First name: ",
-            html.input(
-                {"value": person["first_name"], "on_change": handle_first_name_change}
-            ),
-        ),
-        html.label(
-            "Last name: ",
-            html.input(
-                {"value": person["last_name"], "on_change": handle_last_name_change}
-            ),
-        ),
-        html.label(
-            "Email: ",
-            html.input({"value": person["email"], "on_change": handle_email_change}),
-        ),
-        html.p(f"{person['first_name']} {person['last_name']} {person['email']}"),
-    )
-
-
-run(Form)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py
deleted file mode 100644
index 1f4072e0b..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def ArtistList():
-    artist_to_add, set_artist_to_add = use_state("")
-    artists, set_artists = use_state([])
-
-    def handle_change(event):
-        set_artist_to_add(event["target"]["value"])
-
-    def handle_click(event):
-        if artist_to_add and artist_to_add not in artists:
-            set_artists([*artists, artist_to_add])
-            set_artist_to_add("")
-
-    return html.div(
-        html.h1("Inspiring sculptors:"),
-        html.input({"value": artist_to_add, "on_change": handle_change}),
-        html.button({"on_click": handle_click}, "add"),
-        html.ul([html.li({"key": name}, name) for name in artists]),
-    )
-
-
-run(ArtistList)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py
deleted file mode 100644
index 3bd2fd601..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def ArtistList():
-    artists, set_artists = use_state(
-        ["Marta Colvin Andrade", "Lamidi Olonade Fakeye", "Louise Nevelson"]
-    )
-
-    def handle_sort_click(event):
-        set_artists(sorted(artists))
-
-    def handle_reverse_click(event):
-        set_artists(list(reversed(artists)))
-
-    return html.div(
-        html.h1("Inspiring sculptors:"),
-        html.button({"on_click": handle_sort_click}, "sort"),
-        html.button({"on_click": handle_reverse_click}, "reverse"),
-        html.ul([html.li({"key": name}, name) for name in artists]),
-    )
-
-
-run(ArtistList)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py
deleted file mode 100644
index 6223284f6..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def ArtistList():
-    artist_to_add, set_artist_to_add = use_state("")
-    artists, set_artists = use_state(
-        ["Marta Colvin Andrade", "Lamidi Olonade Fakeye", "Louise Nevelson"]
-    )
-
-    def handle_change(event):
-        set_artist_to_add(event["target"]["value"])
-
-    def handle_add_click(event):
-        if artist_to_add not in artists:
-            set_artists([*artists, artist_to_add])
-            set_artist_to_add("")
-
-    def make_handle_delete_click(index):
-        def handle_click(event):
-            set_artists(artists[:index] + artists[index + 1 :])
-
-        return handle_click
-
-    return html.div(
-        html.h1("Inspiring sculptors:"),
-        html.input({"value": artist_to_add, "on_change": handle_change}),
-        html.button({"on_click": handle_add_click}, "add"),
-        html.ul(
-            [
-                html.li(
-                    {"key": name},
-                    name,
-                    html.button(
-                        {"on_click": make_handle_delete_click(index)}, "delete"
-                    ),
-                )
-                for index, name in enumerate(artists)
-            ]
-        ),
-    )
-
-
-run(ArtistList)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py
deleted file mode 100644
index 4952b9597..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def CounterList():
-    counters, set_counters = use_state([0, 0, 0])
-
-    def make_increment_click_handler(index):
-        def handle_click(event):
-            new_value = counters[index] + 1
-            set_counters(counters[:index] + [new_value] + counters[index + 1 :])
-
-        return handle_click
-
-    return html.ul(
-        [
-            html.li(
-                {"key": index},
-                count,
-                html.button({"on_click": make_increment_click_handler(index)}, "+1"),
-            )
-            for index, count in enumerate(counters)
-        ]
-    )
-
-
-run(CounterList)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py
deleted file mode 100644
index e5ab54dca..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py
+++ /dev/null
@@ -1,45 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def MovingDot():
-    position, set_position = use_state({"x": 0, "y": 0})
-
-    async def handle_pointer_move(event):
-        outer_div_info = event["currentTarget"]
-        outer_div_bounds = outer_div_info["boundingClientRect"]
-        set_position(
-            {
-                "x": event["clientX"] - outer_div_bounds["x"],
-                "y": event["clientY"] - outer_div_bounds["y"],
-            }
-        )
-
-    return html.div(
-        {
-            "on_pointer_move": handle_pointer_move,
-            "style": {
-                "position": "relative",
-                "height": "200px",
-                "width": "100%",
-                "background_color": "white",
-            },
-        },
-        html.div(
-            {
-                "style": {
-                    "position": "absolute",
-                    "background_color": "red",
-                    "border_radius": "50%",
-                    "width": "20px",
-                    "height": "20px",
-                    "left": "-10px",
-                    "top": "-10px",
-                    "transform": f"translate({position['x']}px, {position['y']}px)",
-                }
-            }
-        ),
-    )
-
-
-run(MovingDot)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py
deleted file mode 100644
index 8972ce74e..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# :linenos:
-
-from reactpy import component, html, run, use_state
-
-
-@component
-def MovingDot():
-    position, _ = use_state({"x": 0, "y": 0})
-
-    def handle_pointer_move(event):
-        outer_div_info = event["currentTarget"]
-        outer_div_bounds = outer_div_info["boundingClientRect"]
-        position["x"] = event["clientX"] - outer_div_bounds["x"]
-        position["y"] = event["clientY"] - outer_div_bounds["y"]
-
-    return html.div(
-        {
-            "on_pointer_move": handle_pointer_move,
-            "style": {
-                "position": "relative",
-                "height": "200px",
-                "width": "100%",
-                "background_color": "white",
-            },
-        },
-        html.div(
-            {
-                "style": {
-                    "position": "absolute",
-                    "background_color": "red",
-                    "border_radius": "50%",
-                    "width": "20px",
-                    "height": "20px",
-                    "left": "-10px",
-                    "top": "-10px",
-                    "transform": f"translate({position['x']}px, {position['y']}px)",
-                }
-            }
-        ),
-    )
-
-
-run(MovingDot)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py
deleted file mode 100644
index be5366cb2..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def Grid():
-    line_size = 5
-    selected_indices, set_selected_indices = use_state({1, 2, 4})
-
-    def make_handle_click(index):
-        def handle_click(event):
-            if index in selected_indices:
-                set_selected_indices(selected_indices - {index})
-            else:
-                set_selected_indices(selected_indices | {index})
-
-        return handle_click
-
-    return html.div(
-        {"style": {"display": "flex", "flex-direction": "row"}},
-        [
-            html.div(
-                {
-                    "on_click": make_handle_click(index),
-                    "style": {
-                        "height": "30px",
-                        "width": "30px",
-                        "background_color": "black"
-                        if index in selected_indices
-                        else "white",
-                        "outline": "1px solid grey",
-                        "cursor": "pointer",
-                    },
-                    "key": index,
-                }
-            )
-            for index in range(line_size)
-        ],
-    )
-
-
-run(Grid)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py
deleted file mode 100644
index 8ff2e1ca4..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def Grid():
-    line_size = 5
-    selected_indices, set_selected_indices = use_state(set())
-
-    def make_handle_click(index):
-        def handle_click(event):
-            set_selected_indices(selected_indices | {index})
-
-        return handle_click
-
-    return html.div(
-        {"style": {"display": "flex", "flex-direction": "row"}},
-        [
-            html.div(
-                {
-                    "on_click": make_handle_click(index),
-                    "style": {
-                        "height": "30px",
-                        "width": "30px",
-                        "background_color": "black"
-                        if index in selected_indices
-                        else "white",
-                        "outline": "1px solid grey",
-                        "cursor": "pointer",
-                    },
-                    "key": index,
-                }
-            )
-            for index in range(line_size)
-        ],
-    )
-
-
-run(Grid)
diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst b/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst
deleted file mode 100644
index bcac79e18..000000000
--- a/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst
+++ /dev/null
@@ -1,569 +0,0 @@
-Dangers of Mutability
-=====================
-
-While state can hold any type of value, you should be careful to avoid directly
-modifying objects that you declare as state with ReactPy. In other words, you must not
-:ref:`"mutate" <What is a Mutation>` values which are held as state. Rather, to change
-these values you should use new ones or create copies.
-
-
-.. _what is a mutation:
-
-What is a Mutation?
--------------------
-
-In Python, values may be either "mutable" or "immutable". Mutable objects are those
-whose underlying data can be changed after they are created, and immutable objects are
-those which cannot. A "mutation" then, is the act of changing the underlying data of a
-mutable value. In particular, a :class:`dict` is a mutable type of value. In the code
-below, an initially empty dictionary is created. Then, a key and value is added to it:
-
-.. code-block::
-
-    x = {}
-    x["a"] = 1
-    assert x == {"a": 1}
-
-This is different from something like a :class:`str` which is immutable. Instead of
-modifying the underlying data of an existing value, a new one must be created to
-facilitate change:
-
-.. code-block::
-
-    x = "Hello"
-    y = x + " world!"
-    assert x is not y
-
-.. note::
-
-    In Python, the ``is`` and ``is not`` operators check whether two values are
-    identitcal. This `is distinct
-    <https://realpython.com/python-is-identity-vs-equality>`__ from checking whether two
-    values are equivalent with the ``==`` or ``!=`` operators.
-
-Thus far, all the values we've been working with have been immutable. These include
-:class:`int`, :class:`float`, :class:`str`, and :class:`bool` values. As a result, we
-have not had to consider the consequences of mutations.
-
-
-.. _Why Avoid Mutation:
-
-Why Avoid Mutation?
--------------------
-
-Unfortunately, ReactPy does not understand that when a value is mutated, it may have
-changed. As a result, mutating values will not trigger re-renders. Thus, you must be
-careful to avoid mutation whenever you want ReactPy to re-render a component. For example,
-the intention of the code below is to make the red dot move when you touch or hover over
-the preview area. However it doesn't - the dot remains stationary:
-
-.. reactpy:: _examples/moving_dot_broken
-
-The problem is with this section of code:
-
-.. literalinclude:: _examples/moving_dot_broken.py
-    :language: python
-    :lines: 13-14
-    :linenos:
-    :lineno-start: 13
-
-This code mutates the ``position`` dictionary from the prior render instead of using the
-state variable's associated state setter. Without calling setter ReactPy has no idea that
-the variable's data has been modified. While it can be possible to get away with
-mutating state variables, it's highly dicsouraged. Doing so can cause strange and
-unpredictable behavior. As a result, you should always treat the data within a state
-variable as immutable.
-
-To actually trigger a render we need to call the state setter. To do that we'll assign
-it to ``set_position`` instead of the unused ``_`` variable we have above. Then we can
-call it by passing a *new* dictionary with the values for the next render. Notice how,
-by making these alterations to the code, that the dot now follows your pointer when
-you touch or hover over the preview:
-
-.. reactpy:: _examples/moving_dot
-
-
-.. dropdown:: Local mutation can be alright
-    :color: info
-    :animate: fade-in
-
-    While code like this causes problems:
-
-    .. code-block::
-
-        position["x"] = event["clientX"] - outer_div_bounds["x"]
-        position["y"] = event["clientY"] - outer_div_bounds["y"]
-
-    It's ok if you mutate a fresh dictionary that you have *just* created before calling
-    the state setter:
-
-    .. code-block::
-
-        new_position = {}
-        new_position["x"] = event["clientX"] - outer_div_bounds["x"]
-        new_position["y"] = event["clientY"] - outer_div_bounds["y"]
-        set_position(new_position)
-
-    It's actually nearly equivalent to having written:
-
-    .. code-block::
-
-        set_position(
-            {
-                "x": event["clientX"] - outer_div_bounds["x"],
-                "y": event["clientY"] - outer_div_bounds["y"],
-            }
-        )
-
-    Mutation is only a problem when you change data assigned to existing state
-    variables. Mutating an object you’ve just created is okay because no other code
-    references it yet. Changing it isn’t going to accidentally impact something that
-    depends on it. This is called a “local mutation.” You can even do local mutation
-    while rendering. Very convenient and completely okay!
-
-
-Working with Dictionaries
--------------------------
-
-Below are some ways to update dictionaries without mutating them:
-
-.. card:: Updating Items
-    :link: updating-dictionary-items
-    :link-type: ref
-
-    Avoid using item assignment, ``dict.update``, or ``dict.setdefault``. Instead try
-    the strategies below:
-
-    .. code-block::
-
-        {**d, "key": value}
-
-        # Python >= 3.9
-        d | {"key": value}
-
-        # Equivalent to dict.setdefault()
-        {"key": value, **d}
-
-.. card:: Removing Items
-    :link: removing-dictionary-items
-    :link-type: ref
-
-    Avoid using item deletion or ``dict.pop``. Instead try the strategies below:
-
-    .. code-block::
-
-        {
-            k: v
-            for k, v in d.items()
-            if k != key
-        }
-
-        # Better for removing multiple items
-        {
-            k: d[k]
-            for k in set(d).difference([key])
-        }
-
-
-----
-
-
-.. _updating-dictionary-items:
-
-Updating Dictionary Items
-.........................
-
-.. grid:: 1 1 1 2
-    :gutter: 1
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            d[key] = value
-
-            d.update({key: value})
-
-            d.setdefault(key, value)
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            {**d, key: value}
-
-            # Python >= 3.9
-            d | {key: value}
-
-            # Equivalent to setdefault()
-            {key: value, **d}
-
-As we saw in an :ref:`earlier example <why avoid mutation>`, instead of mutating
-dictionaries to update their items you should instead create a copy that contains the
-desired changes.
-
-However, sometimes you may only want to update some of the information in a dictionary
-which is held by a state variable. Consider the case below where we have a form for
-updating user information with a preview of the currently entered data. We can
-accomplish this using `"unpacking" <https://www.python.org/dev/peps/pep-0448/>`__ with
-the ``**`` syntax:
-
-.. reactpy:: _examples/dict_update
-
-
-.. _removing-dictionary-items:
-
-Removing Dictionary Items
-.........................
-
-.. grid:: 1 1 1 2
-    :gutter: 1
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            del d[key]
-
-            d.pop(key)
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            {
-                k: v
-                for k, v in d.items()
-                if k != key
-            }
-
-            # Better for removing multiple items
-            {
-                k: d[k]
-                for k in set(d).difference([key])
-            }
-
-This scenario doesn't come up very frequently. When it does though, the best way to
-remove items from dictionaries is to create a copy of the original, but with a filtered
-set of keys. One way to do this is with a dictionary comprehension. The example below
-shows an interface where you're able to enter a new term and definition. Once added,
-you can click a delete button to remove the term and definition:
-
-.. reactpy:: _examples/dict_remove
-
-
-Working with Lists
-------------------
-
-Below are some ways to update lists without mutating them:
-
-.. card:: Inserting Items
-    :link: inserting-list-items
-    :link-type: ref
-
-    Avoid using ``list.append``, ``list.extend``, and ``list.insert``. Instead try the
-    strategies below:
-
-    .. code-block::
-
-        [*l, value]
-
-        l + [value]
-
-        l + values
-
-        l[:index] + [value] + l[index:]
-
-.. card:: Removing Items
-    :link: removing-list-items
-    :link-type: ref
-
-    Avoid using item deletion or ``list.pop``. Instead try the strategy below:
-
-    .. code-block::
-
-        l[:index - 1] + l[index:]
-
-.. card:: Replacing Items
-    :link: replacing-list-items
-    :link-type: ref
-
-    Avoid using item  or slice assignment. Instead try the strategies below:
-
-    .. code-block::
-
-        l[:index] + [value] + l[index + 1:]
-
-        l[:start] + values + l[end + 1:]
-
-.. card:: Re-ordering Items
-    :link: re-ordering-list-items
-    :link-type: ref
-
-    Avoid using ``list.sort`` or ``list.reverse``. Instead try the strategies below:
-
-    .. code-block::
-
-        list(sorted(l))
-
-        list(reversed(l))
-
-
-----
-
-
-.. _inserting-list-items:
-
-Inserting List Items
-....................
-
-.. grid:: 1 1 1 2
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            l.append(value)
-
-            l.extend(values)
-
-            l.insert(index, value)
-
-            # Adding a list "in-place" mutates!
-            l += [value]
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            [*l, value]
-
-            l + [value]
-
-            l + values
-
-            l[:index] + [value] + l[index:]
-
-Instead of mutating a list to add items to it, we need to create a new list which has
-the items we want to append instead. There are several ways to do this for one or more
-values however it's often simplest to use `"unpacking"
-<https://www.python.org/dev/peps/pep-0448/>`__ with the ``*`` syntax.
-
-.. reactpy:: _examples/list_insert
-
-
-.. _removing-list-items:
-
-Removing List Items
-...................
-
-.. grid:: 1 1 1 2
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            del l[index]
-
-            l.pop(index)
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            l[:index] + l[index + 1:]
-
-Unfortunately, the syntax for creating a copy of a list with one of its items removed is
-not quite as clean. You must select the portion the list prior to the item which should
-be removed (``l[:index]``) and the portion after the item (``l[index + 1:]``) and add
-them together:
-
-.. reactpy:: _examples/list_remove
-
-
-.. _replacing-list-items:
-
-Replacing List Items
-....................
-
-.. grid:: 1 1 1 2
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            l[index] = value
-
-            l[start:end] = values
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            l[:index] + [value] + l[index + 1:]
-
-            l[:start] + values + l[end + 1:]
-
-In a similar manner to :ref:`removing list items`, to replace an item in a list, you
-must select the portion before and after the item in question. But this time, instead
-of adding those two selections together, you must insert that values you want to replace
-between them:
-
-.. reactpy:: _examples/list_replace
-
-
-.. _re-ordering-list-items:
-
-Re-ordering List Items
-......................
-
-.. grid:: 1 1 1 2
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            l.sort()
-
-            l.reverse()
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            list(sorted(l))
-
-            list(reversed(l))
-
-There are many different ways that list items could be re-ordered, but two of the most
-common are reversing or sorting items. Instead of calling the associated methods on a
-list object, you should use the builtin functions :func:`sorted` and :func:`reversed`
-and pass the resulting iterator into the :class:`list` constructor to create a sorted
-or reversed copy of the given list:
-
-.. reactpy:: _examples/list_re_order
-
-
-Working with Sets
------------------
-
-Below are ways to update sets without mutating them:
-
-.. card:: Adding Items
-    :link: adding-set-items
-    :link-type: ref
-
-    Avoid using item assignment, ``set.add`` or ``set.update``. Instead try the
-    strategies below:
-
-    .. code-block::
-
-        s.union({value})
-
-        s.union(values)
-
-.. card:: Removing Items
-    :link: removing-set-items
-    :link-type: ref
-
-    Avoid using item deletion or ``dict.pop``. Instead try the strategies below:
-
-    .. code-block::
-
-        s.difference({value})
-
-        s.difference(values)
-
-        s.intersection(values)
-
-
-----
-
-
-.. _adding-set-items:
-
-Adding Set Items
-................
-
-.. grid:: 1 1 1 2
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            s.add(value)
-            s |= {value}  # "in-place" operators mutate!
-
-            s.update(values)
-            s |= values  # "in-place" operators mutate!
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            s.union({value})
-            s | {value}
-
-            s.union(values)
-            s | values
-
-Sets have some nice ways for evolving them without requiring mutation. The binary
-or operator ``|`` serves as a succinct way to compute the union of two sets. However,
-you should be careful to not use an in-place assignment with this operator as that will
-(counterintuitively) mutate the original set rather than creating a new one.
-
-.. reactpy:: _examples/set_update
-
-
-.. _removing-set-items:
-
-Removing Set Items
-..................
-
-.. grid:: 1 1 1 2
-
-    .. grid-item-card:: :bdg-danger:`Avoid`
-
-        .. code-block::
-
-            s.remove(value)
-
-            s.difference_update(values)
-            s -= values  # "in-place" operators mutate!
-
-            s.symmetric_difference_update(values)
-            s ^= values  # "in-place" operators mutate!
-
-            s.intersection_update(values)
-            s &= values  # "in-place" operators mutate!
-
-
-    .. grid-item-card:: :bdg-info:`Prefer`
-
-        .. code-block::
-
-            s.difference({value})
-
-            s.difference(values)
-            s - values
-
-            s.symmetric_difference(values)
-            s ^ values
-
-            s.intersection(values)
-            s & values
-
-To remove items from sets you can use the various binary operators or their associated
-methods to return new sets without mutating them. As before when :ref:`adding set items`
-you need to avoid using the inline assignment operators since that will
-(counterintuitively) mutate the original set rather than given you a new one:
-
-.. reactpy:: _examples/set_remove
-
-
-Useful Packages
----------------
-
-Under construction 🚧
-
-https://pypi.org/project/pyrsistent/
diff --git a/docs/source/guides/adding-interactivity/index.rst b/docs/source/guides/adding-interactivity/index.rst
deleted file mode 100644
index b2beb3a81..000000000
--- a/docs/source/guides/adding-interactivity/index.rst
+++ /dev/null
@@ -1,210 +0,0 @@
-Adding Interactivity
-====================
-
-.. toctree::
-    :hidden:
-
-    responding-to-events/index
-    components-with-state/index
-    state-as-a-snapshot/index
-    multiple-state-updates/index
-    dangers-of-mutability/index
-
-
-.. dropdown:: :octicon:`bookmark-fill;2em` What You'll Learn
-    :color: info
-    :animate: fade-in
-    :open:
-
-    .. grid:: 1 2 2 2
-
-        .. grid-item-card:: :octicon:`bell` Responding to Events
-            :link: responding-to-events/index
-            :link-type: doc
-
-            Define event handlers and learn about the available event types they can be
-            bound to.
-
-        .. grid-item-card:: :octicon:`package-dependencies` Components With State
-            :link: components-with-state/index
-            :link-type: doc
-
-            Allow components to change what they display by saving and updating their
-            state.
-
-        .. grid-item-card:: :octicon:`device-camera-video` State as a Snapshot
-            :link: state-as-a-snapshot/index
-            :link-type: doc
-
-            Learn why state updates schedules a re-render, instead of being applied
-            immediately.
-
-        .. grid-item-card:: :octicon:`versions` Multiple State Updates
-            :link: multiple-state-updates/index
-            :link-type: doc
-
-            Learn how updates to a components state can be batched, or applied
-            incrementally.
-
-        .. grid-item-card:: :octicon:`issue-opened` Dangers of Mutability
-            :link: dangers-of-mutability/index
-            :link-type: doc
-
-            See the pitfalls of working with mutable data types and how to avoid them.
-
-
-Section 1: Responding to Events
--------------------------------
-
-ReactPy lets you add event handlers to your parts of the interface. This means that you can
-define synchronous or asynchronous functions that are triggered when a particular user
-interaction occurs like clicking, hovering, of focusing on form inputs, and more.
-
-.. reactpy:: responding-to-events/_examples/button_prints_message
-
-It may feel weird to define a function within a function like this, but doing so allows
-the ``handle_event`` function to access information from within the scope of the
-component. That's important if you want to use any arguments that may have beend passed
-your component in the handler.
-
-.. card::
-    :link: responding-to-events/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Define event handlers and learn about the available event types they can be bound
-    to.
-
-
-Section 2: Components with State
---------------------------------
-
-Components often need to change what’s on the screen as a result of an interaction. For
-example, typing into the form should update the input field, clicking a “Comment” button
-should bring up a text input field, clicking “Buy” should put a product in the shopping
-cart. Components need to “remember” things like the current input value, the current
-image, the shopping cart. In ReactPy, this kind of component-specific memory is created and
-updated with a "hook" called ``use_state()`` that creates a **state variable** and
-**state setter** respectively:
-
-.. reactpy:: components-with-state/_examples/adding_state_variable
-
-In ReactPy, ``use_state``, as well as any other function whose name starts with ``use``, is
-called a "hook". These are special functions that should only be called while ReactPy is
-:ref:`rendering <the rendering process>`. They let you "hook into" the different
-capabilities of ReactPy's components of which ``use_state`` is just one (well get into the
-other :ref:`later <managing state>`).
-
-.. card::
-    :link: components-with-state/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Allow components to change what they display by saving and updating their state.
-
-
-Section 3: State as a Snapshot
-------------------------------
-
-As we :ref:`learned earlier <Components with State>`, state setters behave a little
-differently than you might expect at first glance. Instead of updating your current
-handle on the setter's corresponding variable, it schedules a re-render of the component
-which owns the state.
-
-.. code-block::
-
-    count, set_count = use_state(0)
-    print(count)  # prints: 0
-    set_count(count + 1)  # schedule a re-render where count is 1
-    print(count)  # still prints: 0
-
-This behavior of ReactPy means that each render of a component is like taking a snapshot of
-the UI based on the component's state at that time. Treating state in this way can help
-reduce subtle bugs. For instance, in the code below there's a simple chat app with a
-message input and recipient selector. The catch is that the message actually gets sent 5
-seconds after the "Send" button is clicked. So what would happen if we changed the
-recipient between the time the "Send" button was clicked and the moment the message is
-actually sent?
-
-.. reactpy:: state-as-a-snapshot/_examples/print_chat_message
-
-As it turns out, changing the message recipient after pressing send does not change
-where the message ultimately goes. However, one could imagine a bug where the recipient
-of a message is determined at the time the message is sent rather than at the time the
-"Send" button it clicked. Thus changing the recipient after pressing send would change
-where the message got sent.
-
-In many cases, ReactPy avoids this class of bug entirely because it treats state as a
-snapshot.
-
-.. card::
-    :link: state-as-a-snapshot/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Learn why state updates schedules a re-render, instead of being applied immediately.
-
-
-Section 4: Multiple State Updates
----------------------------------
-
-As we saw in an earlier example, :ref:`setting state triggers renders`. In other words,
-changes to state only take effect in the next render, not in the current one. Further,
-changes to state are batched, calling a particular state setter 3 times won't trigger 3
-renders, it will only trigger 1. This means that multiple state assignments are batched
-- so long as the event handler is synchronous (i.e. the event handler is not an
-``async`` function), ReactPy waits until all the code in an event handler has run before
-processing state and starting the next render:
-
-.. reactpy:: multiple-state-updates/_examples/set_color_3_times
-
-Sometimes though, you need to update a state variable more than once before the next
-render. In these cases, instead of having updates batched, you instead want them to be
-applied incrementally. That is, the next update can be made to depend on the prior one.
-To accomplish this, instead of passing the next state value directly (e.g.
-``set_state(new_state)``), we may pass an **"updater function"** of the form
-``compute_new_state(old_state)`` to the state setter (e.g.
-``set_state(compute_new_state)``):
-
-.. reactpy:: multiple-state-updates/_examples/set_state_function
-
-.. card::
-    :link: multiple-state-updates/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Learn how updates to a components state can be batched, or applied incrementally.
-
-
-Section 5: Dangers of Mutability
---------------------------------
-
-While state can hold any type of value, you should be careful to avoid directly
-modifying objects that you declare as state with ReactPy. In other words, you must not
-:ref:`"mutate" <What is a Mutation>` values which are held as state. Rather, to change
-these values you should use new ones or create copies.
-
-This is because ReactPy does not understand that when a value is mutated, it may have
-changed. As a result, mutating values will not trigger re-renders. Thus, you must be
-careful to avoid mutation whenever you want ReactPy to re-render a component. For example,
-instead of mutating dictionaries to update their items you should instead create a
-copy that contains the desired changes:
-
-.. reactpy:: dangers-of-mutability/_examples/dict_update
-
-.. card::
-    :link: dangers-of-mutability/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    See the pitfalls of working with mutable data types and how to avoid them.
diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py
deleted file mode 100644
index e53c5b1ad..000000000
--- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import asyncio
-
-from reactpy import component, html, run, use_state
-
-
-@component
-def Counter():
-    number, set_number = use_state(0)
-
-    async def handle_click(event):
-        await asyncio.sleep(3)
-        set_number(lambda old_number: old_number + 1)
-
-    return html.div(
-        html.h1(number),
-        html.button({"on_click": handle_click}, "Increment"),
-    )
-
-
-run(Counter)
diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py
deleted file mode 100644
index bb64724f1..000000000
--- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import asyncio
-
-from reactpy import component, html, run, use_state
-
-
-@component
-def Counter():
-    number, set_number = use_state(0)
-
-    async def handle_click(event):
-        await asyncio.sleep(3)
-        set_number(number + 1)
-
-    return html.div(
-        html.h1(number),
-        html.button({"on_click": handle_click}, "Increment"),
-    )
-
-
-run(Counter)
diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py
deleted file mode 100644
index 59d7d0f20..000000000
--- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def ColorButton():
-    color, set_color = use_state("gray")
-
-    def handle_click(event):
-        set_color("orange")
-        set_color("pink")
-        set_color("blue")
-
-    def handle_reset(event):
-        set_color("gray")
-
-    return html.div(
-        html.button(
-            {"on_click": handle_click, "style": {"background_color": color}},
-            "Set Color",
-        ),
-        html.button(
-            {"on_click": handle_reset, "style": {"background_color": color}}, "Reset"
-        ),
-    )
-
-
-run(ColorButton)
diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py
deleted file mode 100644
index 56bbe80e3..000000000
--- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-def increment(old_number):
-    new_number = old_number + 1
-    return new_number
-
-
-@component
-def Counter():
-    number, set_number = use_state(0)
-
-    def handle_click(event):
-        set_number(increment)
-        set_number(increment)
-        set_number(increment)
-
-    return html.div(
-        html.h1(number),
-        html.button({"on_click": handle_click}, "Increment"),
-    )
-
-
-run(Counter)
diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst b/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst
deleted file mode 100644
index bc3245d7e..000000000
--- a/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst
+++ /dev/null
@@ -1,109 +0,0 @@
-Multiple State Updates
-======================
-
-Setting a state variable will queue another render. But sometimes you might want to
-perform multiple operations on the value before queueing the next render. To do this, it
-helps to understand how React batches state updates.
-
-
-Batched Updates
----------------
-
-As we learned :ref:`previously <state as a snapshot>`, state variables remain fixed
-inside each render as if state were a snapshot taken at the beginning of each render.
-This is why, in the example below, even though it might seem like clicking the
-"Increment" button would cause the ``number`` to increase by ``3``, it only does by
-``1``:
-
-.. reactpy:: ../state-as-a-snapshot/_examples/set_counter_3_times
-
-The reason this happens is because, so long as the event handler is synchronous (i.e.
-the event handler is not an ``async`` function), ReactPy waits until all the code in an
-event handler has run before processing state and starting the next render. Thus, it's
-the last call to a given state setter that matters. In the example below, even though we
-set the color of the button to ``"orange"`` and then ``"pink"`` before ``"blue"``,
-the color does not quickly flash orange and pink before blue - it always remains blue:
-
-.. reactpy:: _examples/set_color_3_times
-
-This behavior let's you make multiple state changes without triggering unnecessary
-renders or renders with inconsistent state where only some of the variables have been
-updated. With that said, it also means that the UI won't change until after synchronous
-handlers have finished running.
-
-.. note::
-
-    For asynchronous event handlers, ReactPy will not render until you ``await`` something.
-    As we saw in :ref:`prior examples <State And Delayed Reactions>`, if you introduce
-    an asynchronous delay to an event handler after changing state, renders may take
-    place before the remainder of the event handler completes. However, state variables
-    within handlers, even async ones, always remains static.
-
-This behavior of ReactPy to "batch" state changes that take place inside a single event
-handler, do not extend across event handlers. In other words, distinct events will
-always produce distinct renders. To give an example, if clicking a button increments a
-counter by one, no matter how fast the user clicks, the view will never jump from 1 to 3
-- it will always display 1, then 2, and then 3.
-
-
-Incremental Updates
--------------------
-
-While it's uncommon, you need to update a state variable more than once before the next
-render. In these cases, instead of having updates batched, you instead want them to be
-applied incrementally. That is, the next update can be made to depend on the prior one.
-For example, what it we wanted to make it so that, in our ``Counter`` example :ref:`from
-before <Batched Updates>`, each call to ``set_number`` did in fact increment
-``number`` by one causing the view to display ``0``, then ``3``, then ``6``, and so on?
-
-To accomplish this, instead of passing the next state value as in ``set_number(number +
-1)``, we may pass an **"updater function"** to ``set_number`` that computes the next
-state based on the previous state. This would look like ``set_number(lambda number:
-number + 1)``. In other words we need a function of the form:
-
-.. code-block::
-
-    def compute_new_state(old_state):
-        ...
-        return new_state
-
-In our case, ``new_state = old_state + 1``. So we might define:
-
-.. code-block::
-
-    def increment(old_number):
-        new_number = old_number + 1
-        return new_number
-
-Which we can use to replace ``set_number(number + 1)`` with ``set_number(increment)``:
-
-.. reactpy:: _examples/set_state_function
-
-The way to think about how ReactPy runs though this series of ``set_state(increment)``
-calls is to imagine that each one updates the internally managed state with its return
-value, then that return value is being passed to the next updater function. Ultimately,
-this is functionally equivalent to the following:
-
-.. code-block::
-
-    set_number(increment(increment(increment(number))))
-
-So why might you want to do this? Why not just compute ``set_number(number + 3)`` from
-the start? The easiest way to explain the use case is with an example. Imagine that we
-introduced a delay before ``set_number(number + 1)``. What would happen if we clicked
-the "Increment" button more than once before the delay in the first triggered event
-completed?
-
-.. reactpy:: _examples/delay_before_set_count
-
-From an :ref:`earlier lesson <State And Delayed Reactions>`, we learned that introducing
-delays do not change the fact that state variables do not change until the next render.
-As a result, despite clicking many times before the delay completes, the ``number`` only
-increments by one. To solve this we can use updater functions:
-
-.. reactpy:: _examples/delay_before_count_updater
-
-Now when you click the "Increment" button, each click, though delayed, corresponds to
-``number`` being increased. This is because the ``old_number`` in the updater function
-uses the value which was assigned by the last call to ``set_number`` rather than relying
-in the static ``number`` state variable.
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py
deleted file mode 100644
index 82826c50d..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import json
-
-import reactpy
-
-
-@reactpy.component
-def PlayDinosaurSound():
-    event, set_event = reactpy.hooks.use_state(None)
-    return reactpy.html.div(
-        reactpy.html.audio(
-            {
-                "controls": True,
-                "on_time_update": lambda e: set_event(e),
-                "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
-            }
-        ),
-        reactpy.html.pre(json.dumps(event, indent=2)),
-    )
-
-
-reactpy.run(PlayDinosaurSound)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py
deleted file mode 100644
index 992641e00..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import asyncio
-
-from reactpy import component, html, run
-
-
-@component
-def ButtonWithDelay(message, delay):
-    async def handle_event(event):
-        await asyncio.sleep(delay)
-        print(message)
-
-    return html.button({"on_click": handle_event}, message)
-
-
-@component
-def App():
-    return html.div(
-        ButtonWithDelay("print 3 seconds later", delay=3),
-        ButtonWithDelay("print immediately", delay=0),
-    )
-
-
-run(App)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py
deleted file mode 100644
index ea8313263..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Button():
-    return html.button("I don't do anything yet")
-
-
-run(Button)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py
deleted file mode 100644
index e5276bef3..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Button(display_text, on_click):
-    return html.button({"on_click": on_click}, display_text)
-
-
-@component
-def PlayButton(movie_name):
-    def handle_click(event):
-        print(f"Playing {movie_name}")
-
-    return Button(f"Play {movie_name}", on_click=handle_click)
-
-
-@component
-def FastForwardButton():
-    def handle_click(event):
-        print("Skipping ahead")
-
-    return Button("Fast forward", on_click=handle_click)
-
-
-@component
-def App():
-    return html.div(
-        PlayButton("Buena Vista Social Club"),
-        FastForwardButton(),
-    )
-
-
-run(App)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py
deleted file mode 100644
index 38638db4b..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Button():
-    def handle_event(event):
-        print(event)
-
-    return html.button({"on_click": handle_event}, "Click me!")
-
-
-run(Button)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py
deleted file mode 100644
index 56118a57f..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def PrintButton(display_text, message_text):
-    def handle_event(event):
-        print(message_text)
-
-    return html.button({"on_click": handle_event}, display_text)
-
-
-@component
-def App():
-    return html.div(
-        PrintButton("Play", "Playing"),
-        PrintButton("Pause", "Paused"),
-    )
-
-
-run(App)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py
deleted file mode 100644
index d3f0941bd..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from reactpy import component, event, html, run
-
-
-@component
-def DoNotChangePages():
-    return html.div(
-        html.p("Normally clicking this link would take you to a new page"),
-        html.a(
-            {
-                "on_click": event(lambda event: None, prevent_default=True),
-                "href": "https://google.com",
-            },
-            "https://google.com",
-        ),
-    )
-
-
-run(DoNotChangePages)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py
deleted file mode 100644
index 41c575042..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from reactpy import component, event, hooks, html, run
-
-
-@component
-def DivInDiv():
-    stop_propagatation, set_stop_propagatation = hooks.use_state(True)
-    inner_count, set_inner_count = hooks.use_state(0)
-    outer_count, set_outer_count = hooks.use_state(0)
-
-    div_in_div = html.div(
-        {
-            "on_click": lambda event: set_outer_count(outer_count + 1),
-            "style": {"height": "100px", "width": "100px", "background_color": "red"},
-        },
-        html.div(
-            {
-                "on_click": event(
-                    lambda event: set_inner_count(inner_count + 1),
-                    stop_propagation=stop_propagatation,
-                ),
-                "style": {
-                    "height": "50px",
-                    "width": "50px",
-                    "background_color": "blue",
-                },
-            }
-        ),
-    )
-
-    return html.div(
-        html.button(
-            {"on_click": lambda event: set_stop_propagatation(not stop_propagatation)},
-            "Toggle Propagation",
-        ),
-        html.pre(f"Will propagate: {not stop_propagatation}"),
-        html.pre(f"Inner click count: {inner_count}"),
-        html.pre(f"Outer click count: {outer_count}"),
-        div_in_div,
-    )
-
-
-run(DivInDiv)
diff --git a/docs/source/guides/adding-interactivity/responding-to-events/index.rst b/docs/source/guides/adding-interactivity/responding-to-events/index.rst
deleted file mode 100644
index 583a4a4b7..000000000
--- a/docs/source/guides/adding-interactivity/responding-to-events/index.rst
+++ /dev/null
@@ -1,144 +0,0 @@
-Responding to Events
-====================
-
-ReactPy lets you add event handlers to your parts of the interface. These events handlers
-are functions which can be assigned to a part of a UI such that, when a user iteracts
-with the interface, those functions get triggered. Examples of interaction include
-clicking, hovering, of focusing on form inputs, and more.
-
-
-Adding Event Handlers
----------------------
-
-To start out we'll just display a button that, for the moment, doesn't do anything:
-
-.. reactpy:: _examples/button_does_nothing
-
-To add an event handler to this button we'll do three things:
-
-1. Declare a function called ``handle_event(event)`` inside the body of our ``Button`` component
-2. Add logic to ``handle_event`` that will print the ``event`` it receives to the console.
-3. Add an ``"onClick": handle_event`` attribute to the ``<button>`` element.
-
-.. reactpy:: _examples/button_prints_event
-
-.. note::
-
-    Normally print statements will only be displayed in the terminal where you launched
-    ReactPy.
-
-It may feel weird to define a function within a function like this, but doing so allows
-the ``handle_event`` function to access information from within the scope of the
-component. That's important if you want to use any arguments that may have beend passed
-your component in the handler:
-
-.. reactpy:: _examples/button_prints_message
-
-With all that said, since our ``handle_event`` function isn't doing that much work, if
-we wanted to streamline our component definition, we could pass in our event handler as a
-lambda:
-
-.. code-block::
-
-    html.button({"onClick": lambda event: print(message_text)}, "Click me!")
-
-
-Supported Event Types
----------------------
-
-Since ReactPy's event information comes from React, most the the information (:ref:`with
-some exceptions <event data Serialization>`) about how React handles events translates
-directly to ReactPy. Follow the links below to learn about each category of event:
-
-- :ref:`Clipboard Events`
-- :ref:`Composition Events`
-- :ref:`Keyboard Events`
-- :ref:`Focus Events`
-- :ref:`Form Events`
-- :ref:`Generic Events`
-- :ref:`Mouse Events`
-- :ref:`Pointer Events`
-- :ref:`Selection Events`
-- :ref:`Touch Events`
-- :ref:`UI Events`
-- :ref:`Wheel Events`
-- :ref:`Media Events`
-- :ref:`Image Events`
-- :ref:`Animation Events`
-- :ref:`Transition Events`
-- :ref:`Other Events`
-
-
-Passing Handlers to Components
-------------------------------
-
-A common pattern when factoring out common logic is to pass event handlers into a more
-generic component definition. This allows the component to focus on the things which are
-common while still giving its usages customizablity. Consider the case below where we
-want to create a generic ``Button`` component that can be used for a variety of purpose:
-
-.. reactpy:: _examples/button_handler_as_arg
-
-
-.. _Async Event Handler:
-
-Async Event Handlers
---------------------
-
-Sometimes event handlers need to execute asynchronous tasks when they are triggered.
-Behind the scenes, ReactPy is running an :mod:`asyncio` event loop for just this purpose.
-By defining your event handler as an asynchronous function instead of a normal
-synchronous one. In the layout below we sleep for several seconds before printing out a
-message in the first button. However, because the event handler is asynchronous, the
-handler for the second button is still able to respond:
-
-.. reactpy:: _examples/button_async_handlers
-
-
-Event Data Serialization
-------------------------
-
-Not all event data is serialized. The most notable example of this is the lack of a
-``target`` key in the dictionary sent back to the handler. Instead, data which is not
-inherently JSON serializable must be treated on a case-by-case basis. A simple case
-to demonstrate this is the ``currentTime`` attribute of ``audio`` and ``video``
-elements. Normally this would be accessible via ``event.target.currentTime``, but here
-it's simply passed in under the key ``currentTime``:
-
-.. reactpy:: _examples/audio_player
-
-
-Client-side Event Behavior
---------------------------
-
-Because ReactPy operates server-side, there are inevitable limitations that prevent it from
-achieving perfect parity with all the behaviors of React. With that said, any feature
-that cannot be achieved in Python with ReactPy, can be done by creating
-:ref:`Custom Javascript Components`.
-
-
-Preventing Default Event Actions
-................................
-
-Instead of calling an ``event.preventDefault()`` method as you would do in React, you
-must declare whether to prevent default behavior ahead of time. This can be accomplished
-using the :func:`~reactpy.core.events.event` decorator and setting ``prevent_default``. For
-example, we can stop a link from going to the specified URL:
-
-.. reactpy:: _examples/prevent_default_event_actions
-
-Unfortunately this means you cannot conditionally prevent default behavior in response
-to event data without writing :ref:`Custom Javascript Components`.
-
-
-Stop Event Propagation
-......................
-
-Similarly to :ref:`preventing default behavior <Preventing Default Event Actions>`, you
-can use the :func:`~reactpy.core.events.event` decorator to prevent events originating in a
-child element from propagating to parent elements by setting ``stop_propagation``. In
-the example below we place a red ``div`` inside a parent blue ``div``. When propagation
-is turned on, clicking the red element will cause the handler for the outer blue one to
-trigger. Conversely, when it's off, only the handler for the red element will trigger.
-
-.. reactpy:: _examples/stop_event_propagation
diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py
deleted file mode 100644
index b6295b09f..000000000
--- a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import asyncio
-
-from reactpy import component, html, run, use_state
-
-
-@component
-def Counter():
-    number, set_number = use_state(0)
-
-    async def handle_click(event):
-        set_number(number + 5)
-        print("about to print...")
-        await asyncio.sleep(3)
-        print(number)
-
-    return html.div(
-        html.h1(number),
-        html.button({"on_click": handle_click}, "Increment"),
-    )
-
-
-run(Counter)
diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py
deleted file mode 100644
index ecbad9381..000000000
--- a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import asyncio
-
-from reactpy import component, event, html, run, use_state
-
-
-@component
-def App():
-    recipient, set_recipient = use_state("Alice")
-    message, set_message = use_state("")
-
-    @event(prevent_default=True)
-    async def handle_submit(event):
-        set_message("")
-        print("About to send message...")
-        await asyncio.sleep(5)
-        print(f"Sent '{message}' to {recipient}")
-
-    return html.form(
-        {"on_submit": handle_submit, "style": {"display": "inline-grid"}},
-        html.label(
-            {},
-            "To: ",
-            html.select(
-                {
-                    "value": recipient,
-                    "on_change": lambda event: set_recipient(event["target"]["value"]),
-                },
-                html.option({"value": "Alice"}, "Alice"),
-                html.option({"value": "Bob"}, "Bob"),
-            ),
-        ),
-        html.input(
-            {
-                "type": "text",
-                "placeholder": "Your message...",
-                "value": message,
-                "on_change": lambda event: set_message(event["target"]["value"]),
-            }
-        ),
-        html.button({"type": "submit"}, "Send"),
-    )
-
-
-run(App)
diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py
deleted file mode 100644
index 40ee78259..000000000
--- a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def Counter():
-    number, set_number = use_state(0)
-
-    def handle_click(event):
-        set_number(number + 5)
-        print(number)
-
-    return html.div(
-        html.h1(number),
-        html.button({"on_click": handle_click}, "Increment"),
-    )
-
-
-run(Counter)
diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/send_message.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/send_message.py
deleted file mode 100644
index 4702a7464..000000000
--- a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/send_message.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from reactpy import component, event, html, run, use_state
-
-
-@component
-def App():
-    is_sent, set_is_sent = use_state(False)
-    message, set_message = use_state("")
-
-    if is_sent:
-        return html.div(
-            html.h1("Message sent!"),
-            html.button(
-                {"on_click": lambda event: set_is_sent(False)}, "Send new message?"
-            ),
-        )
-
-    @event(prevent_default=True)
-    def handle_submit(event):
-        set_message("")
-        set_is_sent(True)
-
-    return html.form(
-        {"on_submit": handle_submit, "style": {"display": "inline-grid"}},
-        html.textarea(
-            {
-                "placeholder": "Your message here...",
-                "value": message,
-                "on_change": lambda event: set_message(event["target"]["value"]),
-            }
-        ),
-        html.button({"type": "submit"}, "Send"),
-    )
-
-
-run(App)
diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py
deleted file mode 100644
index fe97351af..000000000
--- a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from reactpy import component, html, run, use_state
-
-
-@component
-def Counter():
-    number, set_number = use_state(0)
-
-    def handle_click(event):
-        set_number(number + 1)
-        set_number(number + 1)
-        set_number(number + 1)
-
-    return html.div(
-        html.h1(number),
-        html.button({"on_click": handle_click}, "Increment"),
-    )
-
-
-run(Counter)
diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png
deleted file mode 100644
index cfcd9c87f8f4d85dfa04dcc77d3272d13da0c260..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 181824
zcmeFZhg(zYwmnSmQl$4LU3v{2q$olFDFPxL0Tt=JhNASMR0%~9qKG0zDbkf9Eoh{-
z&_Q|)Awa$r-TT~g?){yA;CnXD13^qy)_T``$DDJ_F_LHk*1tr-MuCTicj?A;om+T#
z#M5|q1lwdJz+dWkei{M~_<pzawej8$ajXOX2zIr)anHyIPZao_437w(4UZW26yRGO
zpZ#CI>){LI5&r%=0Uq8H4?Lp3o&yFRabFq0H|{lm9tlhE|9Up?w-SQCpG`bnLiqRZ
z1lzcm^{Mg>0T1Nf*RB2V@R$T}-}pCfUD*Zx$l;-5Yz{mEZ;1QC4+4G&|9J#{$CtZE
zR-QA)!_&mOp`&FUjK4WUIqm8<gT>CxXwiw@@KvYeHAuMbYcTZf1&eR5H5o7H6`8;{
zw3J7l^pI@q_q@c+T2@~JaH@{Bxz3Z%n2U?mqZVxO+p3SK))j}rfOiphtImVN-$i(i
zZ9dppwF!IIGP_Z$zJV3+q7W{LCis8<*v%onn7b26Qmlzj%wY0gemsSIriA>L0{};s
zCu3<Ci(WJP@9*M(+?M&Tr%<AKiGXBVp68U||9y(M7qT>bruy%PH;Ijggk4HdkN@xI
zNU|+K_}>rzlg9yRNBGkC#eZ9-l4!{1{{Q};|17~jQSi@3z-`cfu;8C1_$Lbf*$Dq&
z!S8D0A2|F64*!9}f8g*RIQ$0=|1_unWQ2b*!ao_||A!etQwV~+*ujF0HO~E;Hf#ES
z>_nnIgWFaX{}1gXg-1j+P1<gFDE^z$k~53`aK7I!X}l9Qhxrk8J{DERXlccJeo%~k
zxRQKiAp$Jce;lLz4wIC3RDYa0j*}aXAi!eUumu;ZQ5QnesU2|X1#Ax-dx2`BFFln_
zrxWeLrWc1)a$rx#+Aha_XjHz~OOJZxn}sco`f~8KEgiEry*!tUS$;4d*?g~juXRDK
zCkxBm#*X;qyw|+EIPF&VdG92aMm<k`7ecf2p|Jg&zW5{#5~gyM+w6bQg$~gG5lEB4
zx;|y130a}g>Agepk#1Jcn*%{sggYUjZg#KcOxSeP`Oz5SK~+nRUBuDI;aJ;+{5cvP
z1+Hq|HwZ;9=OS)Owq#wL^k|f?7DuV8p{D&phFjybRGx{LmA`@&g^H#N6^F~5uPC<N
zNY}UsK0T_6D&z{=tUf#VLZbnVibO(4FE74$!exM(39@fO&4wXng60ahn>OD2uNDTC
zPkFVeo$u$i8P?AP-f3FSx$`5Aoc_nj-XdbW+8Gfrb~pEZ%kiZDh{f$PvG)ypsT?4g
z`dh3D53QPZJ1G$%tA)8kss{syi`-bH^W7&Jh8iawG(SXO(5GN^^pffc`lp%kV7ec+
z4gtQYar!-df2Y`|n{{1C1ARkz73#OI1YFO-L1EMd8r}GWn)A6{3QML$%i)i&bD#J7
z#1Qghw$I+Tp8itpPGNoazU|`l%qFBI#b>d*jQvpqZ(CrbVr10e+IRHaFv;T%%yT6l
zr%0?464DPW)3a2rh{Nxja8;*SUuV0mhQ%~BM->Pr60_xooSjaus51Ot6fdOyssr*O
zhdhFSm|-mtQqu?0_9584FAUBOh(ktUrsgiknjA?+p>I;RVh>>&Wz6>B)k24YOM=sa
zKLrPhR6~557SmLGy>DJO8o!BWC}pT=7#)7P4qHW{$DPxS<}Qxw5sGc-LI0EaC$Ly*
zW#O$_xVlH~-M||vTXklWfm5CcraKQa6=s7M>n=_=VDRu2*>$txQ*#?2E)YE$7khO-
z48+P9Z`(?Xx1H^Kte542Z(gm|vAO@I?8ic~WKj=a^3|tIHtsL#kTI0y@yvEg>BLM{
zJcAn8v-NA-rzWRJQjI*)k%_u%j?LKf9b-SZTF~<c?;H1n;bF7SSb(z$<HGGy`o+6D
zp|?X<RpusSW`VPYv3P||P5rpTsXBJ3s()s8wiSr*P=l+??xmg0F0{0vT6PARf*oQf
z^np8EHxoEjHvi=bOyg{x29#3loCca@XyA@I+iSFGo6?YNjr>2vy1S$Ua(1>$pV6d*
zlIW$cYRq1q-pAlN!58<NE2&{Jsui8&dT;Px3z$rOt{cw;jee1Tee+Y0s%`1%&Ct$W
zdSg{-PM@!I>&RFdFcA0p)a~^X_X_HO@3Kn@<2<Bu4=StmPRD!HbFO)5KkD=(m;j<y
z@kwo59nlD#30z_7Aqbkr(?AvVCMnQA7ylrWkd=eM(Jtp;=kwh8dq@~_<(=@v|3Dl7
zfCeg~A((+a^bUgwQk*=?Vwo;WR^Te^DKtZM^0mngE{ml)qmY$+w;x_W<Q#sbH(uhJ
zs8f3}LhcEE)V$X{%@jAv=T;mMsJ#B_nQz&NV(VTiM+Ob6%oWd;qtQm0@WO!6Z)zVK
zGnSv;l*oU*TmCX^2()TwE@<|K(@}|Wi0BR7<6Pbf)Mqi;9XMLIfFsB2|Bf}Jq=*4v
zT?s$BD>Cdx@I6ML)0g0&h6dyaQtKff@MzR_0NeYB_N~){X*Tb8waCx-Ba9l|0_!Xj
zOU^Q`QQxq~Opf`!O-ogn6n^({)W%~u`}UCMt=Akd;yz%@Kbs2E38UBcCG@?vdqFjd
zp5iEZ(@JvsoxK4y@#~w$tN(@4n#GhX4Jc4!lnH=^v_-Nn1t>dsVh#La{3L$fa0jz9
zoj#*~t{(s(-^D?A^+2*@tCBs{vx`Miu3(4LU$@(y-+Az`=9?hsDr}^$reC4}^8_IT
zwHyC#ClKS?xqn|Q?Y{RqoaC30Es0g&YJpelVVPuvNIjLPJ%7I(^AmY*uWjYw+vWdx
zQp48KPB)W;_0u@=KhyYM40fDH0SksYL(R}QKx*1TCd!vn6=!?rK^ChxG;VDd+Ol4=
zj~u%jbY%V<yXmHJ(|qwVbf<nUvhg;Wxpg=GaNRgc**?MVyDsx!#J9!_K}d+LFyfOK
z$-Hat^jFMxrUch)t?OL;632aTpJLa7<?!k*rhev^%T9Gr*ACrVx9<jw)B(`E5^K=I
z;b+LE7U~~*w%6k)RvJi}dcsMF!f#$UdiS3hkkA~+mq}vpdoewmJ2l3e7oM1W&p-Rg
z9g2q^I`Jt!o9*45*Q!xlAIE(Ab8uP29`EqGKKI}|8$rXojH$Xa0L}(2R&6)^c3M#2
zJDwjcsL27iNf(m%)i|t8xy&dS(O=r98gn2>Qr=n)Vg990HdIH|X3Yge@bUER;#yv^
z)<!&WW&r^_`$+V%-^qERaX8;Q0Im~dMH;NuB|dLHJ)UqY*4epmPFGX7ol_jP-RQA4
z{9?W0?Rx`YIq#}B$UT~F__`W*fwd)dSooTVZl_0q@B)CG1+zc@bsPPV`aNg+1Seb#
zWn1K1++ocPJ@3#B1vPXLhk}$w9)V^&>u2^^`BU$7oW%UE!JQ4!!l|F(qMloHulviv
zM~3|MBCu(<U6tvRdLNDQy)(n9ne?dKVh805Gj;v5P*ue!S(0=gjSKs;&nJq~%X?3_
zLWKuacAC}3J^@QJLN!hJT1MWxD*B|9AVPpv?4uPq{ZG1aQwaD7-7nb&jctJyM=GO~
z+qOPU`CeBFKiRbniCoImFONXYDAvCp_x^IpZ>{0$<(o@VPaSHg;QRv*nek4oYQH>K
z;XFw2uue5Pl6O1=pl6%ox?c`Hb66n&(Y_jCIrs{3((ZnpJe3zfo`sUWkdL)HfmXNk
ze6<T*FGI-mUww858@|NPeZ$r~uq@ls;B94%!2-`Ei<#f}_Y<a`4G%s6g0{elg#5Dx
z77d3PDbC1wHZJFQ6nK96)`Ds~Tb6_s22P4>0mXp_u=H>@!_7AA1&C^uXBd~c4rg{E
z6$?Xuy;&cSg&P8a6p5?s_A~t?V!{pv6<4L8$GXr&En<+Ht14!*7D!NbeGpVJ_G~pA
znHXzKG|Q2)P{P1(a|K9XYla(?T?6ka$&f%E-TMSlQD|2GPY7$*q!&h2H*jN|s=f49
z=ui`Gr4iz+WSHxl{h9G517GEly*lIdp?h7-2gp!wDvC=Y;Z9K*dzd+_Iy2XgmAG@A
z@+Dzob+pR`y1Iw!CROCc@6sspWd0CH6)RdkjF|jqLdHX86z_#wo6e7?{G>-EBlnVZ
zGMO-CWA;%ILoP~h(ZAkSf%)}PuIJi?dc17k>!g%4WC$+w8v=zCAOEgm7E@$@Si2Qw
zH^8$ZW`G>3LKBH<J{ao9v@+lIH<h3&RZ8hN`0j%Qfc(a7yAan$Go5oyE6*SN$dh*d
z@!GU>zhV9{`~Jp)yv(>4mquiGWJ*q3GdL18`JigBs$hLN*S?5!C;q{@ZYJy4Xn~x^
zt=~1=Iclz$a>y=tK3>&pAsVl%Xmd)x^=sC7=nAaf5}y!dNzZNSP)=k;t{cq7p0O4&
zq!)XMn4QpazY=K;sja!9sd0XY@LRiXv3;+=Gv}JoDOB=9I{`YTB<_uA2p4{(R!D8k
z{`i`X@X*;yMskP}uM++VDNyt3%!RIqbtpJ0@E!vzQ}nx7L9Z07{@SbxUl#L7S3B-y
zulho*ay0@dAHKN>>#z)V=UkFxw-x<3k#{S9kmT92Xhp5F^S3S!G+)Q#XOc|e-yDWx
zi$(0!$*MuJPJKUT&y3ZM%;C&Tt<Agf@xQiDWWMA=PkwyK8ZMB$RwvANveHjyMq;01
zb-@}AapE7$6=^l^Li%+kByV-+*2r+A^KZ)@&2KJ7#R(jIo^kUB@~N!%&LVog_}>b2
zhYysrkv-ztKF8I)5@a3D#VHYT#}ngG&TVNCs>i7Dokc_YW10#3@P$MnUugzR-e%C{
zX}#-4nnuGn({~)dJT9Y@XyAD=L^O;ma}YF<yRp+T&(3Wr$VJ+f*Ggi29Y>48w)2(5
z@*c){2Vu7A;ku8ZWyYq=m;r`R&${n=AqMlzv9*O0V>UteKO2`*P0r)WY_yFpu-WfP
zuwj;jH1d^Ho@>jHjOCR!q-echjjes1d*@N3ZM2@mH7&NTR0a#_@m!cyDj1(CX<Ybz
z0Z>98l=P-LDITA*GIV4T16x!z#C!A@GmC0f9ruC)kQ+uafgkVhqDe&|!U{baOo&k_
zU*-u*&|;$7GIeHi%k0UTn-5v^ItUFGr?TVTiMOmcd8Xl=5sMypkhB>qa*%Nz<n;~^
zC%h9>f2j#yS947Ov-EZgDX2d5C*vi*I?>?mpIKVK(dbgDwUHzKX`IjWyq}_gQC7^_
z(!G+!dT-)W+0M0taV7Iu9|eVns^bmP>Epd0GF=FpfKu)_Zt>xViM-m5)y_OyhMdwS
z^ZUi#o#beDdHqt5uOW|m;O2Nyj=;kbzFonr<zxz81^qNM!IxZCl71F@UzV$WbUOO-
zn(`TGglcpqvaS<ba($9kK5ft@io6i~0T8l-IWG{R;zleL)$*SS6v0o6xnJGZbK$T=
z&mgO-*U@?flWn@zqb}5Sd$ZWPJKWsEtkCF4&SJvczS#fAjrEhobmJ%7k-^GK8P|S{
zwH|-u2sI=71O)x7clEQ%#a#mv154~g6VN@wU`{tpzf>{p2jxT`sX8BohWBJ)mJ{Zj
z*<PRq!2PSDSUuL4`WfIn@E&`tW?={GELCR!$-AI$_+*p(57SEuWxujgN;Z2NBf+M3
zp*O%*YAr9q;-+0_<F*j=4bOzK=an%<2>P05kUI9vO#kPXe>_Xhh|+n?*oJA@iGa7a
ze0eh7-a?o{Lvs~h!NfIqh(t7Pp$77jLeZwdo8oeIn>mr64fXuGsXk|R`sR1)m`fC5
z?rBb!`+T!9ccF~n&(VWD_teePvxDOnm3kh>dpA>cPavxyE`%+kHV?`IMy-XSM0i-{
ze0n(P_4{a4ciY3I;!+9R7`@q;?d6m{CJ_pL@5iL6Z1=*ReJ@U_@ES5G*)J$X$1R$E
zAM~ZSn4(M3XBm=frR|c-={V_>`=IXH%1)Fw#^LUm?+M`jxmH<%;=i{GEO`XgZMO$`
zUkeHe!=6JkpyxM^#outORyrMnMAk~Li&b<_=r32^dw)%LBNG8u5wF$=11cR@Rn++g
zy2%1a;(pZE8q<ERs-qfhM~u8Yk5kE?@k^D9s&p>+_AN@2Ws5K^&Cx3L@I<GLmbzk0
zYv@QE1LLOXf^)T$wZf??`rgLMwr#L1A9T+p(`sm=gCm;l?1G5)wzN+I@x!f`xyrXX
zQDn3IyDerP!{mcuv{IroQx=W6FH~4>#BGlt)kG(qCndbA9<OD7F@$HyGWDuAf25#V
zYcI^VE8;SHcX=6`t;HgC&1;bP^`p8x`11F=3O02$C0oRdYjI_VOME(I#f-Pj%O#m$
z(mv9<F;;2gkt?#r-^3y;Ustk_BdilyU%`VN(yZmLq$9GGQbkW6*J?S(_O9Ozmqs2+
zb^4^e_N(p(dNRQXEM^Ygp#*zrDi5xb?%XSY9SbcE5VR)HruZEese8sPK(`qf7q3#9
zN^`w4w6c3?13kj)r{y0dl@=HKT7dnw%c!6gy_{esFcrV0s)r2|HE#a*eWfW&%qNw8
zu64}He@FDrdmUX6rerhyhjNY`vd+>mDw}K4wjjyCcb|09%lqCTJ}E~A*|!O-t47{^
zA8p6ubn*sruQz#VB?^<78KznMHd(va#mT#MQi%_O_IAE0yl!4WkJG?z<*&NYHqo=x
zQ%>+Z2yrKhdfVB{I|wzW@f4tFd4pKP^)rTAX=C|bvD5{Lkdji|bIHPfddNs0^%lCX
zyb!Rb+|Sd>)_I_=LcHsG6vo=RXnkq6bYHC#<t}eVvLkI=`tIh($%xQclr?7){p9Uy
z!4#|$q{pM8Qapq~qG0kRGBaG7p2j3n9#?BGX0edKzR@PpF3=%;LNAHwg|hm&Wb&tQ
zcwDJmM86D`?*tKmm_#kxNsiu8TEg`EKB!VTFLuer_zjfO_#aX%x=UuSLN9lbq_mD4
zR<CH&LofW-UOZXZg(^tYojJJnC1o($eayaDDXbjt6uY-)<>Pcs07T0Ede*HB-W`33
zSif;1ug2$<JV``P{nVq+;nIc`Js|pM_)MZuQJ&;xA2a0&o!azCXUCg|;pB-GKI#vk
z+ug**C(V2D@q~gziz#axoc(0QAU&c5=~PLb!W<Ru+a*;*N*Q0=N)XC%q7<VZv;SUO
zmv|BJDW#w5x7I$}%TW11V^Gb7DL)ht@<I|kW!Nya22WYl@OSzqb@t}1iF0i^H*zs|
zc)HNUO)t@G>gRTNOr#fJq+dSG_o!oV>}zw?S(b$}cU;v{iQ<nrCY#`Qm%Mg-e|T2J
zW%Wq*Wl~{=8o}{v0yld>f@88V{`Pw|Bpa?JT=>f3?oP;Vq{B5TioJXOU)xeWRK3m$
zPp0SwdN!O4Sh%b5$GCY_^GSDPMUVR_PLxh)x7?(XM`aNdbEWVwj_YrZgVNDcBEgcm
zFKS?6)?0Q#YhZ=18v>|#FTF<$x;ZeYZxSTz$;fy#<@9>Uz>}E#Igwpq?o|{S3y3(D
zkwZ*4ZFg^eKGq;zG$vGHLDOE0Kqt+lW}yY3(tHEN@%i*+-<03eHF|JaudcvB7aYu@
zmcQu45Z52~#5IANSI$g<qFO8AlFk#f5`rdI%XL~3`>45SKS1x~o1UnGd2^4FKvD^m
zGR{dWFNw0H0wkXl%l5EYNjxc*FRt1al7ERMdw^pLp!6aRwCK`~e{iQTUJ(mTYm$kw
zLQ7Ryz1f{lN7(nFmGicHlBl1!H+Cjvq{^~8q&d{8*6um*f2H%EtfT^XhvFC}d{E1j
zRV#=vI^@g#AmozGhSZLdSu~+3)r$B*UdUi>mXa_de#q6S5pUHT=Nx%23Mw7^(IeZo
z7YOA9Np}v1{r_mMWhL5MU0j%4zjK99VqgsQv_)o>iXJ~+*`CPX8^{Zv?*Zx)S^FTd
z)2yhyWP3yQhaa>ggcrk<^9k|giQVY(o~h|5alKQ!=g)?1h3+?}c*Jkg)#Z+Cj+7K?
zW|@*~xypxm@rKnIzWJ2M>#{BGkY1uJI!a#0KP|YKhAg0ZN%dW1I$29>{1@`M2SNqt
z^-O>MI`}%5&~}$(zqvK|-3X7m_6Zn2oVE3tS@pDol5B?xnyK{euHEBpA7uGV&Gq9i
z`z-k3pNm6M&aRTQ!DYZ&uF%Z(vn3u1Qogkd&9=ZAK6Mq21iq@|%~UE;lD2Exi|;HP
z+KIP03SHtyL^gxP()E?N@zp3rxCzvG%uW5wljEPwez%p*=P!yovUSX-G#WNe?jcw4
zaO}h`t_h2UfhGCYUR^#ZFL-27KO6dhTE!#Z2WZ1qJ4TA%P?b{@M{AT%rx!0utJB6!
zAM&SnIG;ro#l{j*g~m#gSva%Z&MoK5M`mlKKX@-?q!bAdMpx3DeDD_X-iT|wzB&gq
z>-!kTSl!}-0GJ)?b4C_@Vrw+=3rRG8-~jigQm-k=%1LWB8u1RBgBnaq?)ZM)GN$tS
zM1n6-7Neq=Mvhp{3!uqXsJHDXob|MQl^v^TOAM`u8X85GkR0S@s8SQ@YI1E^EL5h-
zaJcDOKVBkPdM9SYZCav;PhD4&wo|9Ra4?`H_U}y|RUm{6-jAn7!8G9|pbEQ7X-(qk
z^zDXlB!_x<FrTW%cEjS24pMHY*pT9c%d=*<p@{*l0g0C7H51Nx0c#zindLgFPFO(k
z)!4bj^}5Jnto?=fHjoV7j%;ql1Zv;XGq2Mh=3?G}&fY)HC!bIu-rVXuBKw@LM+=r3
z>at{YVVCYrbD}*QT1$xPmn(YaarRE8Ien~igD+u6JWf&!2@?tz3YL63JF$~Ii<T}U
zDAEe-#jc`QImUTT1UFYd?wyLL&-nI>`(4!bOMG5>DUlP<M4_XPAA0I%q+G)zk#O^I
zPXL(^7@BuS^qGL3`qzlbJ(=E%UfR;Ur#a0G7TqP$d2nvhI^oV`*+zh|Jc`?-`y@L9
zPz8Rlq>fgJ2dE2DTjUT$0e?QwMA+MTTW1Db!(@=%C4T`rWe{_<Y)Y}3(AyEWd{r%z
zijiKvE*N{sFeNx8id%n}%zxs9Hl`;Fku9~j(_{Lf0go`v(K@nSnfPYx`rZ$I>fR5$
zuGe~5=^qYTIU;@mec-2Wq&6qMnie3>)P`O@(mMcJ^raK>o0WeWb|mi2rJ}x~%Lrnu
zgIb#uvC{E2;)i@5fu@TL2N8sW=5OAG9dX-#c-^q~Zz#~N$sl~q|JY1qH|f`b5@nI>
zYmv*P;~B{ipgC%6+&}y9g}R?Oc~h1?@ACd-ml|WES*;u`r0u6!9<fBat=mp)AqF7v
zFWdW(@(eqNez52k#7@uR@|>u>ar0;}&E9NZ5|AkROIj-Lr9Tutt<7cJiff@Fm<4Nv
z!3+Y=-ZE~|eb8SHmA6fIQ0v?w`%3;}4B$CAuJmNp?ts2TR|Adr3V{VRbl4+C8%#mX
z>aS5!lHEDNa+P0N*ucdkd(a<P^e99Lu?dxpq1jm<EB5nt(}Uk^Bn-ziKQbLST3T!R
zfW5%1rs3J<<!Fr?-FyLzT~s+kmNG#n0C(P2__n<bGqbbebe+PiF+rI4BSXaxt>_#b
zAMvJY=bn{VJ%+|xChUbo4NROfytsZoJV(#JKVh3?N#i?lESy=f+$YMiN`Jh^l~vTQ
zssVn+n}Grf5F`OAIJt71T=>oY%GywR)Y;-0?>zxM0Uwyu*B-Ysg8Z5L-4rpdkZ7nu
zm}vh*a18_~HAoUE&Xqo<l%$lVage*Z!cFxo>nhFH`QfY-9G<IWd@n%y^B^{32d;Ow
z$@<ZqbdDiJ%ay7a-+0zydKiVUNfq9flM-VUA~Z9$1RAnn^gja>NIB()bheSz&DzUn
zbObf_{YTqm!y<w&98&tM3H+13Ni-m1bjZF1v^ErRK}0*Qwp71aD+{31g=_}tYw<YB
z@K-cA8vxHHd(rPf^iw(&*#y;l&54lNO~bhI%x<f9fYSA&XCF;&&+S>ArRH^SIIva8
z+G*^F&+ZHmZH-Wt<Y=i(=uPAnmK28EI(AOaP_y|u%=Vb-%49uliP`n*nqVa`(m+7L
zQPEL>5$><alUL4GpnXlWhWw?7k}CG>z>f?VvfN$`6fnPs7|P*T#x*UZPD%y5O)|qT
zATMo5SSdL<$_>TAF5bl-o=?YXxesPV$W(md|9TH3kn8BZqA`~4Y>+X)gS?k9C6)Rf
zk3-nWI=xn+ftxqD4k4b*`z@%i!|n0+EyZbTFu#i=%zS~pp}zPFp@O&MoCG^L0a#s*
zh|^Z&H1Ewj6EY)f^oJk(-mWj!8J?a5AH<xTWZa&r)^Q&)wOf&dVLw2S1jP@Dl$^dL
z73V0`IkPJJyF0nUa|taE<CZIbq8BvdLHew$m0A2sZp(d1@|NY5I*ZBI8#hDj@rg-t
z@$65PPUk!dIzkgAlOrrrr5X++>i=iJfw-JNTbL3TVWX{+#7I6&F7nOL9dt8{!lvI>
z@A#WgF*JGbHOb0CqPeiyJO}apaBNw{bBYHs{;dak1<!m9+U?TZ6EB-}qFCtKd*ldC
z^7Mo`5%p}H^pW~JvmTQoCh0vY=PF#lEg}dkckP{(aHpXR_ZCy(${N{>+cfP0ziyrO
z?O#?9h+ALcg?bvhDvzuZy&_t!Bje?Mk&%%SXW0|C)WaPWu6*><EUe}-bqQ?}q9QIw
z9T*rXV}L<tAF0ha_C=~^oe*zt8eV~`nD+ggk7O|Z1PS<X)i$?9RMDvK7PeTPV1QI~
ze?6Rz)fTj@Nwq-(P#bsY8x9~Yu_irF(rD!2U8KdADD;P{61_(}6nHkkYEJsb0+x^B
z>aSYGHIeKeJ>Cx1v$C_ytCe;tWn;#;5O#D!QwiAPfZ?O8y=^vs8MLvT?gws?QJka)
z+&k0vSBFd+e7lVAFi|&2&4CDRzmrS9@0XLVoKriRUXU(a(yqzmFw?<o{E4%WASjU5
zN@MTyzgOJBVg#G@`z=p9F0O*~>%4gnU%ku~of9#83lTZxQR2sxEO+4=sRNpr+csez
z;6`P#5b^j2(0L=VTwmIXTz;Ez8CPtJ^2?8&hU5#*Sz4;7ex4!>U8ig+5>!st+2bFo
z9ZaxA*5GXOcy9TetY^w-D*o42WL5apqJlQ|4&|zR6up-6`#fiOJm`(wY9$_luT90U
zfotzi1!40H#P(7Ge_HRzBGkv2mv?Mxaq<yE9ym|xg%AhK21+Q*!00O_FqxYXUmfmU
z65pv^bJ_Rl>*;&ed{3NNllLrhEU=zI6jD2&-O=|ga`{|t+8^HUjfxI4LR7@?CAz<f
zh&>d(*CkF6VJXFtS=y8zX@KLa4=9pF-NA`YUERbcpqKr0+Lmz~MlQN=gRJPH(JOI>
z%fwnL@sdW7&8qhq=asl?YKU(h7Ob|^b~re9bmycJu|EK7yu8f}W5o@KLl(V<wMds`
zsTN|2eKJWUPC^cTmaajQy0vJ*H~FR9u4x8<*khDF!s^>q6)0+*KzkrYV73n?s0>@v
z{dW2R(Nrio9=<N`z4L1AZ=J*Njp!Yk@Hrl<)LKvSu8R0;L|0~;jHA((k5>nrJN+oS
zU-Oh55x<jm&({hzNa&MqA5ULN@sy#o2^_xt{K4e++1T1skJV1rIdc#~J1$3Jv#O_L
z`~!!%L2fK<1IH5gvM^!Db}mE}6-K$tpO9X0vQEATQ%p#wE%Gq$kX^<E2k7A0gZZzx
zO-cx_^5E}WVi)aub8HU`GJJPJYQ!chGdNA9u4BDc`cZAzb6dIV9X#S5<UKv<+{J{x
z6r>ZzB}%a7a`pqL>J<tyYbHJ#M|45}{>EdgNUGk?I|p+=Zx6_Hg_b?1>4sO{?)?R@
z8FK30tNnyx<z$i#!}wy^tqoly>0|B4of;?pLsw^J{p7}`9sYFHr^atz>@bKKDunXu
zrwy>HfqUj(Qr5{iI=bi%bctF?_mIS=ax#}9J1;|5zK~?{4{(g6Afm^WYWQI3O7M=w
zlm>3Im`7acvv*V_V|NRFMUd#<V6Eomq2iV~au;d&)WAaoyR2I!u0Uan4^@8%1$RG&
zTvBEZFVVQzs-G)TJZAYYzgj}31&XMZN-|3tmy%jY@Oa45nR|)oi)2DXwLeCY!KCC7
z{-}Lj*+SNj@p~4qaO+h$!^p9Mzx5|lY6L{@>->=^50Ay(c&8?x0~8u&v#l`Vc*5gk
zcRs{Eizi1jC&^M2D&myXo)$4V&dhI^cwUtUhCkR3n!Os$NeCaWa_wuC7~Ld9&^$kP
z>=Yp|KhAxlAZYAhN7vxneVl#UE?=_YI-@dXiQycWC_O?GWI~UOun$FxMevp$?v7*A
zo1+JKNY0y_O&aZ}V^F?diRJV4Shx`~8LN?A5LHmmA<2GW=LuL#6@A0JJC||Km5iHl
zZ;z#|r!Dzcn4QWFyQJ?^_gZbcFT{$~E78P^OF~d@ZR&4Pho#)hA)UlhJ%IG0?Lf9o
z(6|Wt#pgXIi?|26^7~T-3KH~L4b@k-v}L}WTt!LUi&vTlL{?9}-xDS{{*}e?^eDgH
z64Fh&4SlY8o%02;*plGTz^`t3ZI^N%8)h+^&d^yiTPQ^HdA1J`!e^djmOtH3?%5@2
z{p$5ZMzdBq>5B9{S^ie@y&YCnX8sEavsUjtn_wfV*5GV@1q#DbU%v9@s{Ldl`>Vfs
zr&#Og06vv3&~=8X%3oO&tbx(!yZ>r6+UtnMHA<29KTX{0cQcU{Cv~&zK^kr-5#|Rn
znIGSBG(;K*_viQ2m6a?U=e-$|0|XfeUoFNibA}XMUdDI&YyAU}!k99kfv08Bw=$My
z<CTex_&RQ!a_&^_Bev7yd=6SZ`nqwIaDV(s`nkib7-qM5XZ(p<TjBWwKtEw9E?0_7
z>69JvO<7Q>$k7KhE|0<Qlwic7%qgn-z5EBnIw(LQ6279Cy&AVVKu=(wwDmeo5U<=@
zBF2B^PJqt*T|@HbidZQSiQ956e<zSrdAJea7vZeE#$s7J;u$*(-TJO)FLl}3JHv{S
zGm6K0Fkch3btjSDf@*5Z9+wQ~dHUr^MPK)J6{Edp0>+jv7Q;!4fmzbFizddJV88c9
zuj4|fXJ(=fbtft?C)MiFso%trm)P(aLFFQ7nBDW!TZl^WO=_8t2aN9FNN|~)Jp*4|
z9>62+dnml~>eBy13$1BD$fhU2T?%iNm*p(QrZHYz=v)9HfjV(b0bg5lD5LbQhnJR$
zV;IqP+%{F~Gbv$`1ZhA9BuL`6^gUU5(iKQr0zkrW6m=BukbGyZ2uKp97qXcIpmY&{
zj%j7MsP@(3%VhHjGsf_7$0y4bo4_DWh_nz&XH;O>iZ!`3(8cs-<=${-cArDc1JM>|
z1KPgV>Uw+D3`NocV#pvRB~1a1*!w=6<~F`x4}s2dAS!*dEN&sC0QN~{ndb{Ij{AWd
zxMA$=fl9oQ`Isi^<jXYp_|Dv^<!QHKYvvp?M8a*#t9DSKvG`bz-7`yUkUX-{od*J9
zTs@S%XCl{|P&){d?`o>o!n5b(ND%2sAv&Pz1~MxlS|(*R@-syUS29-rHQdk78;=HR
zRZi9is0T2%M&P`lpQifDg!G4eu;r_~ph7~cK&wZ2Pkd4pI@Ku1`eQZYVu+S}hOcz)
z<poZy&W^p+G$T?HdvauF8&%ELP}_n;R{q&;m9`)!?ia+exyf2qoa4%}5jwasy#z~i
z5(5`0-$Zuf?oKGTxn|>~jW+a>z2$G&TFDd<S>~Hr0gf`19B-(t;=_9}ft|->(<*nz
zr9&+bP%p9aFT$x>5nqX~=I3mwxTERBRbSsL*UlfkLR4*j?Q-Y79hoCJjJ(1ls*fil
zRRrbn(V%4T1P~S!lJY8|-cY#>+X>jz<iP3S7MD8t&jj1k?(dV;F0RU)rOl;##H}yO
z#T+Y_FCXNf7I$(H`vKkO!IFmknnf5_VQ$8KY4Nv9Ay*?;=61b8#0N-iCWj;AH#U7r
z;*+azTDQha;^MboN`^qCJNEk_bVFZPsqlyD(k*MDtXd{RLC#a`0aMSvjj6B@xu<?r
zRwO{(FH_kFqK*s&!r32auXD5IdBa$3ygSG(2mUI!+>`JiDr$=Tv0s-zC1W<Bx9++k
zXR{htHvYJROH_!)70XA6Es*B!h^oRqznDiAWBp0TH5DzD?&%qYeaB>zi=7!nn_Jqz
zItBtq|6s<-9r1CI&GitORy6S)R`3h$&V1QZ*PZn;|73<vo459<yYpoWgsCHEM}+x3
z{W1l!m<6)Te7#;nciYF`fti;0wTIieT0yKY5ks$Lcz#xe)nQbYA0%S-Y|xEoiX7fZ
z2O>w-t=kH7;RhT~5ko70Vltcy`r-pH2wARWN>e{wn<jWd(DU|vlPKz0+tKKq18Z{A
zyI@Ktf(Ca<od>+Fg!&F#FF@JLz!H>Th}~awh1OC{_YW5yDZ7c{c0RCF1_g-33JAvX
zj%Rk;!@5>ZZqq;E6Gg=54f|2aR@VbJkN&RmqrD|+B{Rz6cZUdp@U;h#Ya36#nFhoU
zjl>l5BKWfSN?M`jHE_dWyT_ZRgR>GYl7z?id+oNqaq_AlWN`li^Qz#7#ch5szoLCi
zHqLLAp0pV_AIe&ps}&G8HZt7A_EMiX0wgg0-r1xK&U3|0#{vuJ777Ucs6Px(LPphX
z$DfU=A3lcZtCBiMw4N;3o@uEt*{pb5E(7#R?wu_YN3ge^aU_ACUY$##`q{`Z6rR+9
z*0gp$QD?{l;ZKHD+if#6)Xu`<bAg?uN4g!yY`e)9lLT<=&Wp%D%`c>!?86`%$k%1N
zif!ucudMb$PVS1RzXu`hNJgIC$^$&rIq}yD<*ua6YAt}U4}t5UBm?#3W#?r(6!1ZF
z`mb$acMU)1NE2<g#BY9=d0Zl(eLPz+{uV#XmgpI+5W(>pvE4g|bnilgV;P64$D7}k
zfhW}5SBnWKr>o4(M$%P0ll5+^mr~OPlygd4_#t(TFP1Mc>zw1%9$$P{@Uxd~k$$}y
zyot#$-xc+U1)$Q~5el8P_y4ZDj*||#q0>246mUcqdY~5=Z7MxkIeh1K;R}Jg_g`kN
zPQ6&ZO1dm1#ofHYGS^5DK<54K(kObQU9Dnz!qPjHcufA?WGc-x98iVjPz0qt^m7^g
zt41=S%PVRxOp<+X<n$lAXNQ=~klYSO>V^9ZTklbj5wIKG{QI*2G)`KzXm85Pp4WO%
zc6Qxtv|3A`<Nx6SE6hn#T1W`THy`3#)h;3GB0>;N*ZJ{s2uZ;hsTeniHV_C=L11Bw
z3<0L7(yr=LLZbS@cRs<2@&03}Et@Yoy<ChNt{HZgrTV&{k)=Aj7tf)|p^rXvkTe>D
zm{CC2DUJXttb#jLv{`;W<JV}^<WS-ofI#mDs~a@40r~5L<Ch;eMQV2{d+yYQiQ|y2
z69`Yn^}ZO7#3`HF08Uff`bL~m+z%~b{djrWO`XkUFv&Op{wA6LaoJ(!%ftjn$reMy
z0oDrMSag5nVK{QgqT;Q%>-cbO^<U&Ufa>F>YykWDTYl+#&(gffjB~f0kcOo}(X||{
z{8yrN#@GG{h)pG07CCo%odF&1_QA$8-GrO%H+it98&yIC4i)7dD%wf|@e<qs6~*ys
zST+(+RV7*q<l0AuDDN~M__`{zw2{A31hyo{E&5UVd-P6b6Gre|&cJbA&$jd9#6U%=
z&W%BZsjGCmvSmgTs5ciYSRak<(K}v+VQKV%vcW~1LDSM2LS~!C(|&N(V_*<g2dIlt
zar1}#8W$&ve%TtNOu|e24A=>HWX{y+k5XvzjNk73%A2j*YZgNtWUVk$Q?Rkq<cDD}
zK7GtSaAKfh4=kW6Sz)TLb4m=nYLz2yP1TP%iCqSy8xU*0_NGiG*N3%}@!L>=t`6PN
zklER*!zb<MX9sXE@@Ww9Q2CixQRc;O<>7D}0nxU(!Vy!0-=sWj8Xf;CYBf9R?jJn5
zxEzer!c9FTn_hPXXG|U5i90kzb6smUq-3{wuH#_rZY;0Xp=K6&kJbcnIj1M2%KXG{
z&uGXdT?C?_A^Xyk0)@Uyf<o7;>Z@u*#jbYCkyOE`I?<6#v151Bf+hE6pR3b^M*x(H
zrak2}psGxy^z2c1%hu#qy#+9c{pV8(vgLaa3^B89M*2&g03Ne@!unHx$r6Sc@B>xf
zJpU!`y(;(c6ge_c`%z?PZtU;RVn8sJ&?qu<3p68D2(`MaB9GpBV6R18`*UIH3`mEi
zI)b3khCB1Kk>zsA-a;7-IEhwnri^znP%9niu1>ZIa9jKV?H%IRMQi|fR0UCC7F&##
zwzvBq<f1Pb+v4yW$ZV6OZNO<{(Nv%|cB)p_j-X0FL@8$-z4hag;&cWeWO`pjfx7>I
zm6`{!IwRX~XVqnqFi1kVlS-Tr6$DV9>q9C#{*ONm8UINYYeM*<)3A|Sj}hIC4*4o0
z=W@@^YX6W=hqZVS!{ig>Q~cf<n;*WYV%`<6CP&%fE)6+Iuvv@K$FHmHgc#4-eS9Ex
z4XGZo?{YAqh*&OW<8F}k14>kT6Qy?@{KB3quW5eIq7ReX4}maf@Vj)G5EYrPdtv%V
zO>k-vy@drp#fBhAg3Lg}|F1?tPB+?<Nq5+vbso=$Xxp$f7XyS=u}Vfm)RgiV@E+-G
z@)ZK!ZYwf~Ey$GewZAH>D57#j@2Jh{9;#`K8x#8WUj^@Ne2VTNb<C!sMZKBfCt!O3
z*K)j(e2^~o+rVG~B#x$E6>n#Ml89@gWV}(zSBPzV>Vc>@8nZ8M%g7RU&FjEz)>fI&
zJ-g<&zm=<+ZRE5K_P*Z)#HT8KF&_aD;VVG=4<y^Um8Vfwe+4%^PqPwGQ~SoNXsP^G
za@%;6W&aSXYW@)=Inai?dq7<3Mppz7pxi|e@B1Pk#7x(13%=fYt654I)S8jPt|$>j
zE<#9|_6jEq1*Efu#p*9{FB>){u$4RdaZ_?j-n+icP-Bn-TluFKzC`PQ#lgTJrk?H-
zeS_r3pSRW<SBoCBiyaF5c6A8vMiD%$)l1_*mjltV){0Z81H#JdH3|f&)YBfUvXN&e
zUv+Qwx1W1@h22r!s01pHsR0x2TfdtJZXjmX`}=Y;d<!gQ6}@+gLl*7-ieYksIA)yC
z?k2JoFeJbLQ-s{Sz$x1woa_bObG)q(r$P7M%5)d|lC?Dk(DRj6?6}4hH)ES>2Xt`8
z#^&^)f7D?m<OJVuJx=-vR3JNM9V@zK1yc3lm;Q>+7QFec;TP8qF2u99sFL~{)~3B8
z4+>hNv@Uf2#FaAH@U445=igXHg=t{O=}H)mzzKY(Bqg6uCXE9s56LTSCtZ@0B-?++
z${S~gbhuYSA}{9^Q3L@o`W$p&{pVP0JeoW{U5vMv?st$)kxv5{KYIw|0XZb&>E%CH
zccOtWWBuM#k0yu!CF7so9+B^wb0b~-^tFp85fH7$P$g;jbd7cfriUx+;VEDs_`V{J
z&iHe~A|y4D>JP_1*xl*7`gyZv9Z*OfynGX(5q6gR*TsIugJ9Oam(DRXz=0@UkJt&b
zZ(1!1J3T)_6a0C9GW<{0by>XLt2{oe4f>Kn6n&9^OQKuD$A%0*9@rBMFfJUu+<^FU
z{<<{HAPNwiB-bz8{c8sr^Vswqj(&+q6v(*_h%{e8!mxva*qT3QcP^+IEPemyYmNr9
z3Gnz(Fkl5Lc+`qsi441Y;rQnO6$D$jtA_OzQlJ3AZPTgoc}N8=fWh_+2SX|c%unyf
z<JjQ)$ZfvgF+a?L|6a@&(4-#Q%n#|BU7BW>?GNYu>tf#kcNXV$q3q-HUUl;K8<fAz
zCVMZ1bP41C=%nZO<(3O*#$%v<L-}IUrF|__Gvw0~Kn*R5OF*rd?S9#MwuYV0JFV-0
zV%$AK|Idag(bOO_nOA?;K0|?u%#*&j@z<^8(?mutrYf$SPrZI5<c(89BSvo97YZvK
z{288U(i4r}!&z;-YL%`}OL*Jk6uwy^X3uwh*->n4oB-Mh89mQxi>{-bwg>z}-H_8i
zs%H|IW?j~NLR3HjqsE<ib*0=(b07aKDX)}cXIyjCO(b}ni*cKyPSKl20GR0jSadF~
zDcB$1`o_D8WZQIkNWKr)dGI$ty&FD{yuW3uBiNagw+(D&OJH6BQ?K|91T;W)h5C-&
zp$U=@Jpe2|A$`Fb1KikGf89QD&0wE{pLScDb9%_3t~GZNzYb#Nlk<``w~Q!Y1Oc=c
z`q7@FIBu)nl&<0S+v!WwVGTCh0CR{Psfx^&<fGRLGXw-++=Qr{iS<99RCF%zSH$8l
zO7(c$dD{dvX1Kp2`WsG%(*Ya^n)cDBo__OC=poEEqy2od77oT4tuT8dXxJZAK1s)$
zx@yzs?dU~)S$_>25N6&Gg_BI1Jrp_Mu3NAJ;^&?OBn(D@YCGTZ>bkS{{;w+%q7`=y
zed}HS1PD{^zr)msHV<$dg#v+HeCL}E5=?{Q#-8+$Y#ZfiwUXd&HRLKS<MzYSzV?<%
zUm@=(zzoFrfPWakfw7y&3kXekNm<zdSY<2AE^O<gg4eevfA-Z{7zEI(*&~|WE7Ybj
zk*z1pe@@>0X*;l^a#jE&0Fny*J!tSkV&cx_e>JS_uDN$d{bn)&ED%NEJacO3rDsMV
zjj5rWKy}U?zT5E$f?);#=nyEf6etkPrMP=36-@lvdo{+*vVmsSwLR$lpZwrOU`{y;
z_+-{&xzCUV1VP|2>`+kavkSnVaeNFvkNRuh<ZDjcdaU5?isZ7`?!Q`_BJQd@kO_ni
zfT3pFFN4Ai>!*Eh5~8SON1ia6ICK+R&3V7LM}q1vUWZvz$BgW|ZRe)@v>{4-MMzXE
zQcm(kG_Zh^tQYYMD;6cW9dxSFTn^9xpXVQgNN<6(hmh*&0sW~VTF9aA7vq)|Fk887
z)Tq(U+dF3wg@4Y-Keip`{Q~xAkjlsw(KcYCNP&bY4rtn!;;!{NQ7@eYV4iAD6(vN~
z<bGD0R*|Fv5>S34&K)<ET>hwOy?h;z3qDv4TEUt+;E~e~N%Lu@V$L`^?uWEd#j2=r
zX?ezV?fC_;bv*JykR_rE8?b<pZ;6t<=Mc!;#?rwlQt~9l%PfG8r5FKZ-KRap7l*Jz
zKsf#irxjjDuNK1>0j@p5>1;cwt-qy{OtO(|IqMDcFNfWO(scFb+|H-FUua;Moi>fC
zo9?DZ0O-F0Y){LSmNS5PEfEpw1t6guu$zIxQgL|?=<-!(f)`Ug2J)oWfokjqRIlst
z<8@qZ2`E6Is;L;;rKHvZx1x}Hr{9btpSA*at>waU;GL9#0^SFGfm44{gO)P<akGz(
z_+lItSqG>YnmslFVDkVH4_IZp!TGfBcI#93VtJR|4As`tk*adsm}{#AHM@?R`a~VP
zOqMXX_Jn$nc>^cjpbigtH)a>+*@P3fV~`PhT)2q>43H@W1-6rX#`zZ2_P)|j&};zm
ze`#s%1~AD%E!Bm!y4Ag3t<{FIRc%M_yvn+m?NtFCvD3sBU?uqV+?$PELKJZ)9s`sh
zg}7W3I2cwDrj7~!bML7F@rRH_!0Lob<gh{hfWP`UGxb~>aO;P8@Q=S&H7q2B-!*y<
z(vA=N*cUP3nmY*6j<pMPwlny>^YK~jwJR)Q>`ywGf7oB_=XPtJYBLBElQr_M3C4-V
zuHpJ-P_Uqbpp~GxAo9vuIN)jt)5c9BRY`k@zJ^n?5Oo2T0<d{E?Q>rP(HDC-KLG~^
zJr_O4fh_L^;HW&{Q4);il)rC&5rXqAx^b~fJL&MfZaG;<rk@vI1dIbWalQ(^>*_dt
zesuVc8$xBzjMYJNLf6#+rr2*StR0_p3Gd{AJ;sJlXBJpb#QV?N&p!bqqN)<RE8xN~
z23(~+r?}346tE@K;e@)z;S2O?&VYr}2#7~tu0uTMG9#%QYd8ldES||mIO60B_fV{v
z_j=g3kDN-F_@ir^uT40=o;Tnz>N~P7(^-KdoM@9|0KZ?*VM;xKj3V7rv&Wx)KKj~}
zfMrHu9@w<D2G1CV7)y)K*-yg=*y%~w4V#_3Gk*aVIH5a!5aX2|wg;7&qqcs7Uz=UH
zYOg{8?QqBhZ?9WpIAD$O^@jTzTEROQa{{Q}n^eOi%9kPR>g+y?*gdFgfYL!?lFx;a
z;&iY^cu^?jG*A?y!@Wz{XVa@pf0w-Y#J`wJXybN1;?g!e$f`ApuHhi!+rKD?lDzck
z_~w#I-*nq93e=Eag&09lYqUAxJDk^yWV>+nEp}C$LWelS`kYgXw}Z!#k2IWxXvN&#
z%;&sd?o9ADHT`3H9lL-Li*>-n@lA`5Sz8&%KM0&M>1{UPo1Mb>HCJ~-K8{%SJIbC{
zk%5@4T{6#fp}&|rT?tIoN$DgGh}8&w><c>+^;e#eN${IX#4hhgvJPAx&cS~)oesC7
zCs+v<2V>v57LMBsRztH8WEf{wmp+F^7k<uuiGJyRg?=T{TS_0BPSt^CtoD7QrUC?m
zOQ3UZM-gA)k-Q<vVs6;RKiTT8L_6zaz@Xr86FFp^vFR54uiAFW$;Ae!n|h0Ka8?4j
z$+)qpx-p=HDg0$eh$<IXm^ljVGdQT3gbts59JA|xXXt)MtKjlvruTE9>_ziLGdggW
zsJIST?dYfN_ZC3*0{cxD0KPmAprHoGEt|WTrJlc_i4d;W<TG(0W|$9T)zjNusRO;J
zK5#l+CGPhn`n8N-P!n3@Q0Usm){u*ph%D}5*<*b(L`kjgBlVX3QKh|7K^)3Hf_qOE
zq9X44KOHGUFrbF@MRK{h*HqoibG(_~(WrXz9!QOlathi8{dkowpRJ1N+qOPk&{Fv$
zwZqko`~FC3D*Njv1eYCk4Hd^7Vy8cqXzZO$MTpT_tj5{ULCpfd0@n|TU<=UWs{ngt
zxIHr{kM{_0MET=}B%=&<`e<C%3-dtG6fm(CqX*o6h`z1-L7#W9oGWUpT}#HG5)Y|X
zRW7_}50tX$+BXC9yGy{XdeNEJo>`ER`Z$?zf&&=bbZHlAUSMzz)LhreqwxJ_#fERI
zT0?DuW&-@!i;bgB5gvd`<z}S{=vqQYgw45$E_kZg^V5VNDiv0xdcFc`z<GvOWo4C+
zIt9Fw3_c{J8}~%(l-@3`!-|K*GwlG=-E?j-oFAr>EAASc5^KARU99cj85S#QMK_~<
z?RV%E5?0N4FQ%}J%0mNg;nwybxd{DN<zV9AO|i?F6qx9W9Ab@v68EF7{M`_1MN_45
zZM)O}as)VXTNMVh6=t4>Zy{u2P6j4AVl-Ye;_akLlb>|@nOfa%g@B{{I{hl{pq&gx
zK=UBRR~qN*#(rIB9AxOw_?*VmU%f1K%M(n?3TrWsJ+OKVJ&w3;M>6D7+zyJlx55aK
zfe4VQInheUu6+mZ9Iwp}u@WD)+X5`5UsaIAryDy#r)jvcq!DyhhjtL3F*GCUmsxS2
zS*P3SH!r|c<MHK^;y^4iWaC}^_PQEerYrttW5PO6TxGAB!fS9CDG)mDM`tdvd!wMl
z3=9%LHLb?H@xiw^Mf#aqgf941TiB$2*t7#GYEag)dc?7HIV-M7#QDnYhCn7?n<Tq&
zR)T4Gv3J4j1vIf^H6}UbvTsj9@}Nvvx^gjp=cX@hXf8j&E|^(=`QV#1U+sSP9CD%V
zD*XstpuZc(n2BM-J>i28O$qa<JIGeR__BiTX@dVfQ>IeKr(jZ&&Dr^AIs--y1^Aw%
zt^A8>&T#&a%9k!8Ha)Q_@R`>yU&htI%<fUCo&F*rN}oGIu73UXV<~e1dSFafu4$bL
z&fwxzes`zgHJ><R1DP;BKlAo0*M7jPkt^AH!^=<92QaA4GrSPxexyF^nw;}XMtVFl
ztzB8W@1)U2n$uCi%qBbwq9A6NX08{1iB!ZY-#6pI1$q_Et01m6F2d6*__aLgImP|X
z2kK7_U%+ghqr1CqHM;+TkaFd<0$#gS%C}sA?R%Y6<3vjtaLM`NMa;)DuPCS;5;)J&
zoBY@*N^ZLa8jOEM_I!eMUK<)WNELH0hdt)rB-WdWu>bNRplWk=nn*(Cf5@kcIBwJw
zkHtF$+N8l!Hsu3ZKqoeAZZFH1kmkX`lH>vP>BvGha4dKEg+SrDpy%lIEzIqB1i;uT
zlWf-oJs)`y#kup`6$zAT1I5+g4gUAvcX6)l<&w0vb-zCpMTuq*`R@5As%iALkruhz
z99u)sSo7fsuE8L@8$B&ZfC{wOwrmKpBWMD;#Lmo--I)6;5T*vj#)Zr=JqH$E{(1h6
zE7`R~`Q|@;=S^a+RG50a)%;*E-UKw@OM#3J-hH%uuP)SE_A(Zki&q$}q`mkne0#K*
z|Lh(c<FvU~4>5lT_Uc&N#7*&!=F~Oh)$8QgMtFoo{YlB>bBYb%qX+sM`=0X@&=&OF
zuc%<PO~{tQEIk9NjoW4xM!NFM_kqt%xQXb^<p14FhJ8=xQd52c!F{d+^{4#Vu$>lk
zd(YChX9rmh7@*zn7ndZfW5pS2LxC#BPhQ?FTk2#}H(^kQ)-j-t?9Jnm>glg_Y_}9c
zCU%-n53xT5+MAZ$G%(ivp+#_wV(!U7|1UC~805!&&`#YpupmfN#pdFsl`8n}wgOl*
zEM3X#xLVo%Ux7oj(?BnAX&U=wNe$?W9NNirF21LFB~S!?GG*}i^gE}Ah)t^uj03cc
zIUdl}dXP#F6QHOMUavY5u#sdJ5vin{AoVg>EgB5_f7x!+C*_C>zP?B`aL_idh$9~)
zzYQ}~6Cer;6`BJ+)u3^PSX_#%D-wW;GMv}twhZDR|Gs}k5qjZzhM_<J(NLi_tXzXj
z3*=~T9&hGqOsqsoMb_tW_Zp)*FX-Kk597c={II&6-rC+3P2}z5t>n#bmRdL7fA%F-
zoL6Xp^8f5E67^gmK8V*WxWAd_HlU#wFuU(JfDJ@g={e;)vh|yoU+SqDsr?Y54^d}u
z$Y0{2EB^ee2?FPdSai1D`jRXEB`OIe4HWSnBtS^PrQTtGQ?i;6eE#-)D9-dnJzd&V
zC>6`cPGJq?!1i{=g!An{v*REqjlzf%U#!~kdVUSuens6!BWZ3y*@oe|o};Y`d8PA0
zidVS{wF}Mnr*cCqLeF>#60|J8<}WiWX5RT4QNur^?&dA1Ja)WLdC0P4Kou#7c}>l=
ziapo~roNz#Dxj;17pY1=6HU6{6G{}>`TwYT>!>KV_J4SWE(Jt76&2}}lu`i$3y@Bc
zk{Y_Zloq8^k?s(N9$IOn1O^yD8io>vo_CMuoag&{|H8E#)?)U3@4c_<Q<q@rHM--6
zs+?FvW10Qg(<y}7=tD1U-CJ(cQKbZFAxbDiTi*NB{03A>m|0yya662s<r<)x2c$Qg
z!DSNGr2nY$wQ)}C<KTEkULj5K;&(?c_Cg|k2Q;E+#-rKg<-(rx{lU3wK@;F`*}1?b
zH|7s1S6Xa4%<~C5$aFaV5*CcmQ1!+c1X67(AE7}7OQjp=eYVK{oaMupbw>bQeh+fJ
zPOviE6@o~nN=FqLaA;oop0ei@ysR-?bsc5NVr0Iy{Y<-g>TS_dgtG726QjraH{!?~
z1*kmwMuSKRmNecuiN%D!Dr}WHLhL=%?jj3`qS%l0=vEGo_bFaA&8Alu53l$TN$b1O
zJ*;w-Aq~&F;&+xt!vT4WLwT8eGe`d_5>?gjnWFhLeLU#p{Ol!SD)T?*r>Fn)B)5fZ
z0d`4>%#P<&Bsw)BKwq75SI^QTJZd(K7P%YkGk=>Z;{5lz*ubY-e9@=WU-z`7u0M!2
zmhxS8>M+JOvQUo$-zkDc(Jr|DLoZd_mFO;%Mc}fCd$ee4_6)bwGZ(5`qSv(r@GVMv
zJ2{MuJA4L0%{mrU7b}wDXumNB*Hbt~B&n@-52|t(@)1w;n09<?|9;o<yf<r%H>hf!
z5tpXHn8rOgC>(Wq)w&CXjSuR!y2i{2G=FIe9Y@#^(Iw2{+^0br%%XkA#&6KZ=}?La
zy~$9jY2QOswu^M{b?^1a&GyZHe-Ddk36t%8BQdj@1VE2B!DBpbrHS2pTP3fub^~O{
z-!w$zIzk^rdx8c&UWS~9zJ1cBs{abT<!@Q4v!80g<nnuRi{Giqg>6Ym!mX6<t+Jl?
zk~W)CDR-`3-ErPu+@1YGDaGdfU5ezsk}NT~B+Q>nwgd1@;1<!&0NsRC2d5BrNzgBu
zQolSPy!@_sY4Hor+ZH)Y%;#?(&hq!Bl&J^U(V%)Io92%iwI;Ogc0s%BNb-+Gx?H%m
zRbI`hob`D|2)4}Z_}1G>?H&A!DqX@O5cFo}fLYANa0Hzz=sv16T6h|8amA88q3U_x
zg)sESX<u;28|KX?AG@g@(%hqwOMEpzEuw;8F>!35l42_g?b|*2quRS7xSfct8Cl%&
z%{!afb9uE5o`}q)jFvM$>QCLKBPUY6WoZf6TWHZGw*`wsDfshWhL=#J0i6CZLU4nf
zXOgU~G9g)JM~1Uyp}W+u!~m~`Q|fmZ@$?K-`rP|iS>G0lMUUc<!CiM3-E)b%evQPl
z_Kkj#lEwk-$2UuVbvNdp>`SfXGH-qPG56&*Kq^6;MNggeeTk;LX3r7;4(VtgU%?g0
zR*S>@KyRrn5IG{C8jcw$86oLNRwndr9CVK?Popl;Im+5wiW}#H!#)t|{w$XHCWr-Y
zm6T8l#yG+HM|yN8ag^+GcWX^Qmk{tOYMR?XCiAN(VBj_EKfXt0L?IdXjHF8lwO%w9
z?xzyKNQ0_+MC(;7({pew#v%8IUIAZHg_h`kOTYE+g_blst>&;jIg2Zd@WI9ktlB^9
zh8;aetO@(=sUK7|H0Ij#vs+FzQe~N_wCxFR3A4GRFCvAA>~xaT!IwW+O{A2pf`4yX
zh+eOb>RA=Z0{)071>s!p34WEkTB^M$I7P#vZ)51Q5s{9VQ`O!%L3Z$vTH4Q#{D${#
z<c_TrT{O)4Mq^&4@7ecsw*_<;Vg-E#*<!5j4t(;PL$A2cCM~e-bE3N&!;gDC-zy%m
zz1k-DA^c?>V8fg+U{6Ckw4AsHk8R~P5u(Si^Z}l#y;$}bVSe@%-(&28Z}8@>)0yGH
zT-RWu>n!_a;kM8;vX&!#<5|08i^=s|n{}|T>!ir(0|zb~*>ZZ|w}|gX_mk3R^*;Z+
zlEeWF$4u)Q`Y|F#T{4XeSqM<nuIj9V9Dg!^{LrZvKhR!a{QgmY;$1x06zfpX`;mL_
zcPoG!&IEW$L^X&z$TM)8xuX@!4nsiSC)}wvoDWRLCDNd`d;u=91WS|KZV$cGOM9-7
zIOn-hB6Zs$q=PIq{<6w}q-~gb)fawpX5Z+PeKW-4{X=$b_E*LnWaa8YAjQLbsI*@0
zO?ua);>=D?a5~dKu1S;bKkb~6dBglUMTc2G=AU>N1wV2sm=cO@Y-@A-=W^w=?xjDq
zOA6T2mktANs$@UDd?Rc1&`4G(qVcq%@uXg+u8zyzNf#|l;FOHA()g_m?-AokPgaI7
z&zmp~Im+W9MKp>-Bg`1|o1Xjky+bslbu9`<VO1Cmi5A8(kDJ_!rK7O)gPpB}zFfIT
zK|ihwpR<cUs*AGUQunr}W!VIF4U-dMzMV=eZFg)Zj2vO9;oV}(&sCG%gpEw)L`#Ua
z`FQyxsQFY@*+xjldm+Bc=tQWjU!Fc)QSY@fK|?3Lu*S@FugFY?_s2{Y#zHyn9|tcJ
zrWLz!28FYP53&ReqWWgt1q@ZBC_QA)`c~@n?5e-zauOe#G{~WOORClEdPn%T^8}47
zz?0TI+|unCYH!lxK}yZ6gHlx$RQS%)00SDi7RD0iRphtCYxKistiYUObk;cNk|z<r
znx$;jn5N#++@whu>z-98U?aRPYX2~;90NB4+<Cnq@77cvm3KFxv`Q3HyyQU;;uOFD
zKdw<JzR-AA_2qSEM^9LkC@+g=oXO)%?lybz1p<`KP!VsIWy6)R-^0E)bBh&7KF#)!
z6$;9eT<`-?pHTp?4a==SObAAVZ^H6gyd(%ly}1`XDZLrrPZ*_F-tTvfnmhQ<5ES&>
z|6E8nTv>*ZEc3{>9N;EPKIN@kB9gPhr=8xJOEMhbFkLb0lv1+Xj8TC-yRDM-eeWLR
z(XU6=G5LkI5>X0bxdb^&mh`16SwB9t&}LKIsbjxpo5$VyI=GqoC_&NGKENe-dW_pd
zl9Meavq=5I@1SDVcNw!b%{r(Dw((*GiS^>jdbPLF(rMJ`5;kTf-0H5@G3E>LUE=2;
zzhf6<Cj9=Q)V9FD$1D8Z>H5ff@)QxXWFBG*F)Fd{cWej075IWE&??WpD*2QTR=!7&
z6s?IP#L!jxA2~bU@fGyN_OQGky#M>*hikhYRuc7Awymeph?aVmor{JgaZv1em#BmT
zhDmU`r?|Y0?7i79z`5d{HF}E&S+~l?ev&))E2~m%@gXa-pr&f@u<%h<=S#8N3bk-<
zb~PgA-;RW@N<X;^_%7Qk4fUUE>)e_7K9L6idzesc6|4|?M;?@4dH}3f`O0P8fN3?g
z8T`fO+<xj%pz&{Yc|u6C0FR~*@T&eeuet~zhAu>tFIwj!(mT&|F4f27aFUdj^!5)3
z$$ipSqy^k?lnjTWlr8rc7p2Lb!0sMbW{nFqZvD`W;peGV1RJUzXvPv<uFTs(2bFJ|
zbnDn?+s(?^#_FjBx~rK4666<O5)BZzjL2M%MB6e!T~tX6Im_+nbyZ%ln%tRp4*nTD
zJhqd3H|%9-@5?NPx~Fd>#`;2+zDi%OT04Y!B=`;0?@*TO?<C(&#KNB+PVh^RE#||x
zV0q=mp7R=|Mc-GZ{#ib8ymTI9DjU2?B&RU#P=YUwfd3TTU_ZN4GeGuNbU;)Fks;IP
zsAtkppMMs?GoJUfWtVA^d%dJBJ>44MUW1Q}GXFu&s-F4BIszJXtxlWg^j$C`u#0^Q
zI4w5K{A>}u^Ksjiz*J*L`Q0-Y;cHB^^90D?h2UkkSq}>~9P>1I?p{2_l`<#Teo&dC
z+~D72P|g;=F;;j``C1mO6?6bB&BlU7<GseR=*0L9>Oz%RZA~i`C2?gI8;*`>9&4V$
z?38+4CDyT@X(odledggZ*%Z~ife!+0m!A_%t7exA=l0!KX0&mV_s#fB*lwh0Ohlk<
z*BkT%I0ix7MFKOcD4jm6RbOMgw1gr+X8XrKs}oJ&)X~D!Rt$iQs8W~(Xa5J?ldQzD
z^yYQIzgx}<RS#VLXOZ$CGMDs?zUUiuodaub6%HhYSAFbI8d~_Kl}CWy)c8L$it!F9
zm7UuBGwh)y*L}cyxdp1&+dt)Kb8NO&`o&}sOyfxX%TZiPQJ_SFG=Mau!1vbOTaf@R
z2uyqHbk9kbNW=~(jPAmXh&Gmd+74z5$APGKEASxSFvefDaD4hz=|0ns#|+fPqBr%o
z`Hd}(BRFK+oZ3VxBk~Ej__~81+qXH8v1V`anMf*L57q9{Ibu*LXEkx{BhQ_^%3y<M
zhB6G@nxTVNHS1Y^4spaaDWZS~x`F35&i+rEQq>ClP<N`c!emsEQ$0;h+e0p<4sI9%
zq-me1si16TA_wfMKi?omN7LV4e{S;uSyjLr<kTbh*%L>t?z2q}zh<8Q&j3f12^ni6
zK%2=h3KYt{;02P&ZxpTB-`?IK$g51orzB_$ZX#IFP#Ib040H%I!D9<7${)BT!2!GV
z?pFD&#^@f0W-lcYHULTf7QX(_qQ?|mTI|?cxm!HrMXxr_`bj1hT|Qm&YDf?=LjbiT
zZlTmx&Z|^S6hoxOmdsvx5G*Gpj4ixm1P$%n(_W7|M{>!{riAOXs4R^;mMa#AUQ*g)
z{1W3q5qy;o1$e9{G(*|Yje@}M1S&r%>FLt8baDQtcHHf2s&hwO5>uf98V*-_{sE1F
z#=!Lp9Y|<OaJgkcINY9|9stg$_ituq(HuY{qtUXT(}`$Wa~k=34gm*KF*WGw@!Y0<
zl$QZXMkk%#Z*iuo<+6bk3$x5bo&k~{q%M;xG2}v;?T)&UFJxJLzLCDm&Xf2o96vF<
z9L(aMl?+MWNft_>euWC2Aea<hlC#x){QzP3Ec@gx-u`SZ2<19=k9J2_vZ@knn86K+
zHoPT%-|4Q_ZDNaGZ#0^fAxe7SKH&CSL@ci@tvni^mZcgcbCa{M$D%*&PzR8Z%7jO0
zU9IH+WX@!q0s2lheVd9-01~kue^=S_N_m;tx^oKF<@jD3w=1<~hcf`S2blMA2W~_&
zYy)*5e_86pU<h<As6%=9FKDOGBXb28+S4oT1ndP*aKTYp1f#_xlfpJ`v63|gf10wT
zdk`}@e|1a>0j=B$S&u0(mFX1c4z-{uEq%+~KDkWLy2N1|lbLNHVf%<AD*ImgP&&`1
z>t~tI8jOwVolmJ)<2Qmws2f#aPh-J*9=t7lGZ>g&L|9gQ?<kaA=%4%eMz09mcQGU{
zi<s!PUUK<py5mbSn7z(IbNS(?v1NdC>%X>?lbj%J-U#5P3Xs{TCPA9AsvLOLBDG`G
z7`k<kX(a|*i#RwEpk7JIxR!w9_%CiQfBfV5@<^|AW0|jC5+zk0Vb=zKUUf2~jB9a#
zSIgi{Bd}9|a4Nk92p`~P>5ovp06TYi8X_YT@(0d4alCX6v;)&*m|Q;R=F9)+A5Ikg
z&-FZKufUyRGZsV+-Ee6Yr3J7&cqET25!6xRTeqq3O@BaQlgwJVsfD5mwl$noB9chH
zk`yy)_$0P^RcpQPaVwnjVjiAITS3*4v{?EnP(8C|YJ(}WP`wKx@|K7i7q6~0=?J+y
zIl*<iJAlWD=REr-vWD+`=kwlko*@P3I3<g*Svn2zmE+_CT?t^?x6}tYnw~%!&JJGR
z@sfYf31J(0!(v>sB%!mR_qK~OO&1d)=>6Gt_1^P^m)XiX^S>f>mWlueK}1r1zrA48
zOtRl+fTSMCy&A5=EQliz>FVghZBE}?uuMsZFB@1QKBs1ae^=qYzj2`Y4ks)xo#M0s
zEP?G8gNL<9l8+?mj2eztID}Ve22f3(O3aT+>4St)sTEyS7ct3QEf!4lYmqIja}g~D
zhSeW=cJr_1=_12-?Q~MS)5$3ALdQQipkldAWH$VWHmdFFsNpn);M(&VeT#Z_&=BBt
zS~m&!9?n5P1HIBRxWgV|hpjomzLZm7wyl0SJ#^Fa%CuS*cI9IkC>c_&A)?0;L6#!e
z{Q;*yFjs#Iwi2PyVEBg`-m)UQU6G?LN+)IX@1Uvk>k2uXwCF$fdG)g3@*v*z`Toxi
z!H`qIX&!V>-f_sp<G=jawKpn32c+6Mr+~ZD3!D`_eLz)f1=#Ao)8@2CzyCoD@)GzP
zciQ-`^#R5uu1s_GBq3#&L}dY|8BUmZx_U3<bZ5T31ZLA!y!Yz1kTF62>e@KIhxZzT
z$eV|~(jV#cajGya0yN*lwD@m816k7;BLZsyS!E5ba+i`QBkceBB5=|x6zU8}e<x_*
zBhNz5XY5Fk1xyx35<H^~YYTqoV!h`;o+v~@XnBWrt30X8r_E~o^NeG56g|HgsN_!J
zH1Mi(5tzNa1bE;^Z$2pLwvpqCxrgfZ!789GAw>d+6<JCeoAP#ZLroz7OESdk1QLIr
z6SI56v_k7Pi?=|X&cER~K!THEqN9#8-KLRVe;_$;`GJqh8DO)|X>O^m_IQlyyBH<^
zQ>M&tDp&`^0DQB~@2|>Xa~ln;^aj*zLv*)JYPvri3j9OuTyQF&o>4tD?iVAP$VB;@
z)gs-`uYU5`31YXI?oLOf^SI+ouhekC`qeM|^MpVKYG}0{g=kU_k%9IV<Yl}?&5kCo
zY^Y`R5=a`@;*<dT#?B$Mn&0VR>y@>!UVdz@zf8d2j_1aMJZ=MmP&~I%VYN$Bixzko
z5Yo#CcWdwabLSr{MF?cO=1|b9M!AY?ZaWT-=GHQzY<l1vZ-ci~*ILnk?^2XJUa=rh
zfd1-jRmy0vO8?=7s^<jUldk`qANCyUu{gUy4g5#5YhMb0%!zE}X_JFuB7ZHi(sb1k
z>CnvxmvC9Wgql!N>cNF3!{OPr0h~fWSttf>|KH@1YV))F^UhMll9nJ?jO%xT9`!TP
zo3NG0EIW_q1ZWm2fw}u0SX}lkPPL$qO%$E`7saEv4#j=N-V2~8!RZ2+jphgB1WvCA
zlg!mUUqxSZa_GMEDFUy_Q|S2n>JJ{ktE8(e@eOF>^73O4vQs^<`O($IXCbFJ&BW7~
z)+2HQRzMrHrH`z;PFdwee|}OM3L<^(i@ccK$C0|rAi&hS=j}&%85egqC&7J2A8hsb
zmprCcu~%w1m3^d~5~pvb!ui*a&)zb_Gks6iKy?CQe)p|_iG3T6=7O=ydR7N`aVAI`
z1^@HP0KuQ)B+&XN;bSbhssIGA#D;!KX_Ald0|AO&KuYJnJ-$J5aDD}4qycUz4h7Tz
zRI{)JxIYegpUS5eq{-{My#cY3JvwTj(qVTKc?SrE+B2?MEEb3R$^)s<d-bb5WQu5~
zo(lk<PyAwhB)<T1X_}T?x=(+BeCxO-G?UCJ5t2OHLQLgG9polI|1GTF=8Q+$9VMUb
zUHQ0thgL$PH~XO-3|9&8E8lH$oL<HY^uL|TS4mp=y?L91?0Ym`AYY(OB`GBd{KjoK
z$7~VN$0W-urhk;3?9uW*nQkBEJUmaNESCHFl9SOEz6YKM&Vy1u^+nCE3=9qmK#*wa
zT$)f6-Gj=&nziTA4OhetV?bw&>#jF78uPwv<I=`ofy@V^fYI?#Nua=x!Ou-yi%$R^
zZg*jnfPqE2i>3wgHv>cma5+Td=g151d2*wNs98S9u^&$?*;l**1s<X2SC4?uM(w1M
z54nNx31fB5?^CvQqLL4lsR-Dva4{2qoqEs@&%rA|#O3%yH4#m9E~IeNN^_X#EDHg0
zq^-%X&Q=yyn;#ka(0~0Gvx$``Y=td=)~lno&f+|Sw;m(->3GeO*4X3qR3X_OZJE1L
zXW%l(4L=B$r~@2Dp;puStEFQnfY4i2<#+c0%}0m4>ADJUP?1sNS^ZrnMXoKN6XH%d
zIXJljTY0OTJ{4m8_5gTiWXjRlrn%FmbpQ)IVn-W%?~643-?zdiJDZt1H|Ugo>(i>S
zwO>**Rd}S58K4)v8FzL$wcmn#mF<)O&G}JE@Do^vC-3n5Wk9~g_~E3g%P|xKc)O;P
zAo-)9HkJgCR~jB7Q!9d_xjYhO!7?9Y{@(TD9r8rkktxfg?3fIv15QC+tSnW%O~Y2r
z7*1u&_pSgD$%A<74q{3QG__4a)T9D^xYC_}2A9Y9b=?`)&PEK%pO46Ijq*$t?=?Z-
zIy!O0-}+)F!E5SOMTZ8;nohnGol~c>Y!=A4ZN|C`2|Q?<PJQdK;hstTZWl9U@oB$E
z9r(vcn~$<}bEErz-+aiB5RN5B+1<ialAqUNk2A3zIez)9!^?<r1$LzF+y19sqWAy#
zFycDl#i2d6#uFqz_s|W^U=4J|4uFV>&xQoHT?;E5%mm@7O791<Gw@1?(PxB==Vf|#
zrOhj>9qMa{VmAOfXVfQq@2e?J#)Fz2@6!uhH~{(djoO}0tsUL9!{2dIGMd~SP>1p+
zj1=cJm`4Ha=n7q}6fkwIU)icz+c3g<>g0Fu1p^AHT)~BrTt5hW4h^oDb#Oxzi31VD
zTTs!Kx`N|!LB*~OPl%Z79j0GmPM^*<%2VV}g~j24h5spzYkV8QU!%R5PHP24HZeDH
ziu`@K|GwjhGj#<$<R5Pz<Sm%JOtA3An16t;yUj&nZfT!#n%_+U^)&DbIORaJ`&&Gm
ztWQyI4Fp{p8Ie$Adx<Jv+WI~atyf-rynA6!s7r~gQ(YxSmc&h)le;B+1&F?Vh1{hf
zwK?8$gB0bs=c<^iFNB$XL9qzeX%H(fa&1-gyV>u(_%d&^3O+ma#mR`ZUT`EM#320{
z{J!gy@@G2%EB(rLd%cJ0+unJqmuifAgjzj{gS5+HRwRt1T}BbE8;V1n=GDlyY#gU_
z5Gv958DTA;Gb+1>6~yid@*YojK@^-!-_R*Hl{%k&i1Gfaj!35*H)mS#JB9%jRln7w
zjp>C&np%Jc2kk>bwSeO<kQYs$mXDW1V~^Oe*%tH70NnaE8`kjc?NL^ledJvm^Y7-k
zPl8|2{_0=9%RG0a+}SO)YG=OzwxGBTC<w|fb||s1NOlYa{c9M6npfN&_83*qqCw0A
zia>c^54QO*Jee_kY;g>MVT_wV^nno{`X{30kC1OQ7maQCWmVB8!S?HfzdPM`9EX#i
z41D+#xB+CPS_df;jk$f*#!CYyu8qc2-;L>hU4Tf?+E<q>6kNfTE}#yR)jJP_N~7O=
z^=J(wJb#w_$0CClgVqZ5CXTLBCUfH_x{WhgF8n0AdlAuc6!CcF0W3;!;^!lvhmlj4
zHXhH144x9U$OF@K_@LOxhe43D7^juXxj#&~sw`_o2`>s02S(m?oDiVpNzH=j+Fv30
zcrsn+R`?Uf!6b{k4B`XRV<&(+ADG{$zIPV+;J?imOV*bHP7*&jG8YehRtrLi?Mrb&
z4$|rMD!Ly~2|UB28_`h>!M}bc+4x%?JAmKo(<2<kK#>85lFJ!IyoybOS!JY1heTXZ
zCt+Jmc$2fzN0Y@#Qq(M1QZQe^{@W8qM#u%@K|y<hB+(tNz|3~@*J&8w{LsQ>{J4OR
zXek(n7Wxn26jg6_zVW8;kmK@4tUB<$&&pfiFzFF@sN}Lt+}Iyo>ykTM<*db;pQ|q0
zCzzC<1k*grM`$_N5(zx|%IK^qe+H7w-)4xcVHI~a=<Bg4-gB@u4L6&Wb17y23@vbB
zi;T|Sa@%udxW9Jjrb$@Re+R=Z=py$Uw|%yGOV!tX1)v_}W)*#I&Het5ER888{eU#S
z2<L9xdyPN5^opju$kcmT2LB^5tMdy+2RoT^B4oc|mg4Bg3JKU~{2f7xuew)d7G{yX
zsh~m<3po9n*>$G)-(r`)xs6yDR_(k6vzVWCEmDcd(KYQizt;5YY|hn9@`>`=4-MQQ
zka+clMd&M;U(w`%Cm)OVAKXbpP)Q?uI@${SW#~m??(RK|F>t<VP(?jBfak_hu$6!$
zyA=^~3%1)5;&8EKbYb?!gF>SjXekB9e@p;P;P=w$CGrYMoWPO%Zq37aZ!#W-K@xcP
z)G4pgaS!}Q9xbA%&3i*{PWor16gtY<s4^TndP$kp9TnhXbT5mqd{)r^kACis%wV2}
zb{a;;Eoo3;2Uix>UdCs|fYQ;hY4HRXLmi<c4oAyq{ucC_><vdlkx^&5-w!|-w7{Il
zg->qPP1(7V@!H3R6`{maPz#S2Zpk^Nki96LZkLUN@ImAR2ARy@d<sIH45Z}{zVaJq
zCSpnbPODZ!ZJXhqQ!LwH$b}h|x%i^!m=~k=JYHUM=+T_$alvyRo`6#g!htz(<tzMM
zYgVnS%Sgt~RlyW$Qg|(^Zjg##<IcV0J66kYd^WBqth-b9tmc6a17AH@=>{JgZ4<4)
zdLNvwi5$tufR6@Qs|t7+ImRh)WmY3s{Se{5YG-mNN_3=~Hw?CQ!O378kOmVS<}$i<
zPOT+U?5Xo4a_Uw8SI&_*_70BVH9=eZ#%MK>gg*9@p|Eg48_fYA*4+xe_);Q~^<{Kb
zg5S9&s8QrL9+Q{c>sSuH#<2I4MJD(}89{4u__@9nd&DZ8TpYFM;8r()h(~OI5drxa
z**UWT;(_+~PuKw0^!%f~0|*B2Nj1{z`PpQ~ZU*J)a|gI`@W>}d41YLL-|<J%Ttlce
z&MFk&X~G|E&6Fq|k`P36b0NhR$$WJPB5Zu!=b)dX&3WIs=I7?I=*DL@>`6uAMF*GM
z2l9x1&CuUI|2u&bxL**Xdj*_HN#HF@{Px_UPp8r5kh>y_al-Ezza5l3ffSf2UC;iA
zt4#9o)|E83`b)OD+7C8`_QQLtazkWXq3|l#6(-P|<ocf9Jcb`2SRbN^k;mC~Uf0al
zzCV4yTGJtnB3h5S4!P^Cw-0p(ey`|-xF;QV6uQAq#;;q;O+Ar2Q@BNLdaBrZ$0oa+
z$~E()zQqfDpMjKQKYPue2rxduQ0ntdel1aRefI&#U;%-2rBH3A%?>lI*u+bY%6@R`
z|1NLM=iP9PKgTJ>HV02Ky45T|zjb>j^V=QzJG;p6X%PHv)I%e`1s!g6oRgA3K7<zW
z4frgd!lMW4IxBYG4H`@<;7i<~tG8`)#Nsp*va6J<%-=;3i174{w0f_U=J)G}u#6~R
z<te354xX)$_##I}uUK_0=;W7b)H^RHLG1C2gizeIzc<_83vM|RFH(=;kuU-e`K=v_
z0jz;}<ggNRJT#_xKYd#RB-Ok1&N|p+uTR$q&oJiw{hiz|{>kgO0TOih=!3~k^*Xf8
zg|a-7$;|!fNQ@T*BM1uTD#n}vWKk7j=1ZV0G1|WeWETz5H{MRluDsE_-F!;Mw-kDv
zpS(-XtN3*)6$9dp>>k*vn!wuj>;PCwYqW_ZRDORdgV8vGg~Nm#nr@F{<?#g-#J_h*
zPc?Ny{q1L~u(U*e>ll~BYni9W6*5cWaGaNk^m7K>Jpti5;vafREMCAY>EO<j?T^o-
z3tk_HBr61g61r3aS-k5asco%?<@l3q8QX>dRlIg*8!`f6Lv&m^JQ$9wo-lD4H!(IN
zh~9sG>zRvjk1frFg!lKdy5*E58OWG9RezRN8YSYCMZ<4;dUiZ$f8j@G%*N@g>`@r;
z+tZv^NF8c$LOJF*9fCm>1xFbDD;!=;#RM>kk?UfS=U%h>8RMs7QPugF_<7tz83du|
zqokSra6`2Ee`SY;@eef=E`#18K!%f^=t`vArtQ?Uxbj`bfA<9)Hx(j%Ljxr%E}C9{
zr92)KB_)EeZUyc7IWTSJzG!0USFfwPHnOl4wXRh^8eJH3D^qnpR6`bYlJpS`)iA<V
zPrv$rSGz#G{Sw96()tvBcV@$F4O0#A513Mf-Vi_Ox<s5$7LNCY&(eo$XlNm-C#ff>
z^9Rm|Qi}&AJylej_<$|0e)TMiXQ=CX$~Te3E0AwpYtDNV`DWL$(+WCt+^g&?Oqj_d
z@M_S*qajZ|fmnhvgk8c8wZA?h)hkXq|In)iTKOs;I0BzJoG<w550@Wh*kp<Jvh9j9
zcZfpolK)xcOrMTdBsZ5{0YSI71@z#ylRy_=gljoQ8NFM#K`6f&G{!{Cd{Th5Cq$YH
zIsIU!3LtbC?`h_*q#Mr1WLL_7E%#>3qPN$|Cdh&6lyBbuR10MHb&x~IUh$evV=p=W
z-Itd)bmf4td5NiKBx_GozNM(UC;jDqeQ31R$RYRm=eiYian*osG2erfPxu=*A4tW_
zEy?{qyC@6~@dsd8Y7}>>gWB5+{N8-B_U;c(q0qxC*9*H{gKKikpkv8!3q#Srzg5bE
zV11%+cruHy*1`+AU$x6<HO`L|PJ^IFgkNlhUsiu_u@NAHAP6KZekW^<u6eG9f2^JD
z2&LYQmW}P*bFB|JjWtWq$<-c;o~lpJ$t@62uEuK&^g-p>GVH9R`IfuYui0G~>f<Ih
z(P=Sj2B7J`5}sY2VEaH1Nm>);6aTsqNG@>ul5zdsqHWKOa$f%v4&mEmNm4|MI1w&w
z#2C(Z$Hzuc4**|-P97<Q4N_2{<rJ@h??LXBGXeb+1{RchgxP5r@V($o2RO;m@ekc*
z&9X!2dqP`_ix<5Inew@1iGno^J(e<<DJOnrng19FZ@65`%_jd}7C^SkRqa|;@!Ryd
z11VecjKtNrhJ98x6BrBPZmpf9wj8GlCu)^yj{u6IlW^RtYxOZD)58fcaYT)=ocUJ%
z6YUyihTSXg?|xL-i*oVkduT#PS>EjyZH4q6u=>75-oItF%tj<aaniB9<<o87)LEI5
zu+cLMELJ*18ljJ#Bo2Ns%II|0eBA=-d)k@$Sn<Je9G=}f_wc?CP`7qth&t+HbN{bT
zjwOqH2DR;xhWYKM&goNlLonbEfC&1_AnZmAYpsf6zSzr1$L~M>TM6_v;UOzV6&p-L
z;|x-$zs`2YK`^<v4uIlH5aU48`qq0zE`OOUtuWf?JE~KL4{0UIf55H{N6IJlrZ`Cl
z5E8VEp%#)YGNjU<L>-s7TW?mxx%${iBP{)|dM|6XlO%?)r)Z8GkVBvIImsVZ#JmDw
zGhWb9)Mr};ZKIa)2i-V<HhCk_hQhKZl}f^hzJEDSbR)z(;2E=|byo*~p$wJR6g1X8
z%|7IO3VH4MeL{3VG8<wDJH%%{QV1x8)NkvQ6?r2CYvA@i+qHDT6jX*W824`F$E|u3
zM9DMc<x9GRn|bF-^adIb5vol&@nc0Vx|*I#MUE>>w;?Gw?*!Y9v#fgh*UZaVz6uKu
z@rxYip5A;%ykkie5I!B4$8pCXr#14@_&y&ZHDXpk8?JDhL}0t)5t9{S%4q7h8;w3?
zc(&qIJC{$ydaFv5SY~8I{c>W<nb~{muXBiG`rLp-hVQ$lU=UOmMWeepf!PX}Y{boa
zWiWALRpa=)l6*rVNa^esCZZ})EKy|t+E8-5)+)1C73~!I9^ak?1Ilh(Sr;Dmy6*Wu
z-P=RL<wVerw9_f`P3=#Ooamo0p6J_No)V0NAzWi;x_-Ss?JGDWol2XH)cafNjl49b
zf>D|_ujzZ$_>#k&;$_)jEx<MJiL|L%7z;VAW`n1`{S3W=x_M}<N1tm_URVQp(;;){
zFYsitAQ~?~noJfpcrtQdNHvMXIjG2a229W)vmtN}P)(rVn+bT}KeB=wly?&N8Us-+
z12ZJ>xS$X5Zzwmx<xCU@!oCqrYmCgPg357Lx1<F|{Ww;tcsQL?mMIWSb9)UPSh&1^
z*RR0!kZc+1LzhMf%juUg@#r@r<-k#QpZ@s&B$8~a*U$J#XoE?vT*E-y4e~A*vZngt
z@8OlwAx2@W;@`al#QDN|B;b_<n)vn5>Ej6Ehz(3UCAz(S3PGUtpeL%@>W|Ev%a_P{
zVg_4LOSP5+CuC|3G@dKG<y5S<;D~9Jifd461|H&2diIsF1#@usQm^}3;w>+^ic8f=
zpM`9^uQz*tS81N^RT-L{B60qJrAD^P=FFk|soyRcWWfB|?_mK}y-u#4YG#l^kv8;|
z-7>~&Ag`%jB~P@+c=OUBgT}_a7j%8@mU4n0=)8g+^|*)r+qr`uNq%Gy{>TS?JH_}I
zT+eVIU{-B(K;B-+YFTSV^W0?|eZ~t-Uch})kj&WfrHaUCL{wOCDZ%+Tu#z{z;z0Fi
zNYi(V;#EUj>Et^Luwlu6Nf*O5s{|l!3br4gitF%Q7_(|iQA5}@NbY9wDMpFxF3wQ&
zx1s$?`Pe`@$7>IA*DAwOJsrIGVsyYbBsQy}i(^9#CCnk3^z|i4*EoLd4da^-9=qbg
z^bJqn4Ntid`0o``7^@OWK8@DL;CVNn0KykT^hr^FWp{qShXhXi<!85oe-9qw4zFTb
zdOLfS7^6FtJ>6PyOSWp@A<iK7D6tw^DL%1qy~DymfFI%-rJ*@cd>;*_{d}Hhw)6s~
zEV`Yt&jJ}dvQ}ib&pQQuD-gzOv?~xlbgzitWC;GHo@WqM@{-3vjqlwn*Ao))Ha5YT
zS%*n?`ZNcuMP{pK>ZO)tUo<br%ZlEhh}EVVL3}ux!lA@B<>4luy{aOI{BtgFQ;zV~
z?1AU<(fvcuWEx7dG=b_@WkWyrvld?vA7#)7Q4(qYHj#a&wO?1{m)T9jo0TD)eXYl2
zQ#Q}msESi9Z&M%GvP?5hAF6B~uS-aN`u~@$=l(K5taRv;XxqytT6~kIP`6OoNjf_x
zv>6hVNX9j^Lo4JcLpOd=1AF?a<jX{6cO`{X-@tV+ix~)?vouRt81eZ@9m9?eq;>bB
zWbGW&@M}`Gteb~?9y%V+b6(<|?6&k*ChLX!FS8MFTmXwFABQM1?1jJm8w8F2w_iCS
zGCH@}Jy$<>O4DmpTYe2;$8Vep8u0esrySgR4A7Om1B0*+h}#?XLsw&o>RM+Z%^zI7
zGOe_Ay+10CTskjS(lNTt^;3cOqWO4zJc%$;Q4=8(*ct?sVAb&6&mZr;W)#eX8$ok?
z(6uH@e5_z5qDjD?4{}V<V1(Nd`jB;J;AxcPC^6B(Mf+wylh7}M$KerT`3O$`qo1l?
z@t?h>w5#wFem;u;cWU<8gS(gIj!=fp(usQMCnqF^S8!@TM(^0m6Bk2aa$?nl(ITa3
z+@d^h<aj$%qs3fhr<fR^SW}b&0rA>z!p_VyVEm9=J{vL-@xq`gm5K9ww-qN~7aAGU
ziW9wq^xTN22?3wn6JFbA74h=c717v(Id~2Mr#SEPFXN@_w0pPzuUJZWL&)GJbTQ0!
znH=1Pwr<><Mn`YU8sbRb5wuw_dpr`TORmA~$YMNgR($z{t(RI;Zlv(ks6i@6Dp+?;
zDe!p;+rTQN`3qKR+2E9p!VpW>*0ve^uKou!(m@D)P1T&2ZP!x{BqQ__2q2UUgn@w-
zOfY>qSk>znfpfPtC;jtI9S0%50@Ke@s*IQSQ*s<2E+|?JA|-n;t|^YFyBWj!aN3!&
z&2!2!5pX~)VpVK0g9hEl#(YEKJsh(7pWX>3dHuMVcs0Ti{n+19I$-Owys@A>!dSY(
zMnb67O?+-@zB!nvnw;E?Zdv*Co`nC9kIp!=ztD@;LNDO!<;TD3f24tLZSB#mbZJ5m
znLgSI-(W(-8dB-W{p$4+((#6~<Be{3R;dY-2NB+V@vFL#Fsap(iAf0cOr?%&>(=9#
zefY1ebVuqXP9h;q5CNjre0T5wnx;76(uAvQAM?&DlDS}<@Yw;NKKUA9U@#GKlCjsr
zg}K+`LBSw~p|fY}R4{dOk~Yowht~kenh_zqa`cux9tI?6HXqQT9iy&kvBHBMLE_GZ
zx_I{`Rz#O@1jyV~gfYXzP~K#JbfiJU6^Pp`N3qP$YS;=-^2;UAu>AO}{Y>lU-9q;o
zHn`hNo58%;lsa)GiktyI`Z7MlM)IZ5%6r6~t)>uqDhpa@hbIZV5yr+qnY$NYJ4*U+
z9A1^5N8E0qT&SQqB)UNI4u9UbWX}K8zY449*xc=RSd}@J{fh1gx|zev;l?TgHK$V(
z(niom!KdH?P)C(XNmItkll3CZLYs7Yi?^K}q7e)|E3n`vk1l}tJfpNCsJf)x@#&dY
z#1}_q&QfL0C8(BwISmM5n`W{zT(^4&XB6H?AbOpDu41aM$b(9uVS9Gs(j^H&g&J?F
z7C^UDuEYUHN$)YA*6u_QJc?evg%)HIpZbZkZbIYBqk|nQ0nAOmWl352tShWeF%|^0
z*+!aS-z>zf)M!Bul66E5>f0+Sk+i%Jm!7|+XkyCRJM38N2&1>P{blpM|KT1Q#@7k!
z0hF{r0Gpt!40uF}<mx#-!*w0Ysd#X5(>`!H<p$8YTr*A>f8D`Uq3Gij8MP7&L4)=m
z{dLlu{-@lGBzOu{Z#Qc#3kU0scS&A5&J9<)66CZF{lIhEF@&yM?sAqh)>gD|xb%G%
z6#9faJPe52<d!>(l9+SQO{))B*ivu=T^M`%b9hw|L!MI7Jh5N#jMX+dQe{#2`A#Ow
z8!-Ey!~zfaR_cU4C^Hw?7>{}Q;*VR$GR~M<$+E4c+dvb|VfvnzF8|5|kp`V@Qx`zj
zzqPhFb(W+j_9`tWUYUqPKaZ`0`Kl&&V1G|WXfD~P8{c}}4)iM*dG-c|(V0TL$08ny
zPkC49h3KvnV3dkJ((C$L_o=XTx~x>H(I+x^Qw<g@H;4=zsD|Er9-t@yr-0~Me<oLy
z(i&u7DViucFtwJs0o%T3XU_7!278z{i~X}-u6-x%*XBey60Oe%I{Dcx`<A7avbpt?
z;9xp&ojUoi*)~*z>?5Mq5i`QuR8Bw4Z+(>i3BzH>y#iuiO7Pv35iTe>M$Voe$d=v}
zS3I~A_9dw5eZ~n<15?!R%v_MFK`+1DqGBx*ayW0hGGqBuxSK`Y7Np0>Vy>UPOHEJ<
zYht7D9oMm`y0yYQ$)>$57d+-Rk}~=YcfTy4{pFqLhUscP5y|~HcCrvI`$<9$qgyJT
zZFTieA3VW<JqkuG5?isC4}@sqBZ$}{e1a$;^#KF|PH@qeirTRijPU76K-)ga*77}D
zl)qT~q)`5+??KA-=DqkOZ>JAaN6pP{c1<j!EgL5ljt|0|yN3_bHrf3|o%(z&$K%ai
z^2^Nk7&q9nfA|$XtCe(Vk(U2ymJp-ZOYtw{i8~jtSB<X?NEVPHzfsmhkae_6De8W)
zFJCdJO^O!&_?JE1iNi}ugZ98~no`2|9}Lr)XZ!VPGr(55WpQlkd8Ft-(iIiGpS_PZ
z0vcW+>o!PUP<v$_mu^8hL_9kU9(Bkb7Jm<8CEUwmbNqhIOi^uU=5+?&VEZ>!#CAO!
z-|b^3VqXQ<@!3OUkH1zi4P@;dC3cE#DKa#U4AD*-+dF$lCj`G`w@#U!o(mxtYtPZ)
zhFX0?bamY!vu78uGB1^XeI0(7I$R4FwFY<vBc(<!K68|4wNbz_>glOznlOtd6fu)!
zIQpnUYr^5fScvlbJ*&@V2eut8bt`QE2QJUKKKSInULt{y5aQ;Odka>(tUh9E!K_|7
z*8wL3=j1hiuRcpV(=^d%|MZC=c<xEQd_$$Bktb@bQ?#YmGW;8qnoZ|5LhD^n1F0S5
zHckS2CZ*^}PgJR*$oHJc?RqLc%O2W?H1*z~S7)t%;h2}@?^Kcnt6Fe<IzIgr!}a+G
zPC&A!04u@EJ-s9$a<+iKfbfLp&zJrN0TBG;#a-KBGeO4s6Xoj!iz{CigiyvDfv+06
zilE6=1Jb<LPRf&$R&wz8UmzAb&9}ui9tT<C2KNE-aOAmsQ&Lf>XNvfgWp<^u3;B(~
z+y4)F$j57}Tyl_w2T!f*&xxGu#f_r0kP`pclHSaQZ8!E}h0Cyw3Z|bK?9u=I^3Fy9
z(y%hUI&i^1!LRLgK}A0ir~;wWTNRV5I8A*0)eUuhJxXNjydoXCdE*`=NGD|?AYu{p
zLe}}pq*~l`lMx}$70rByq3GSS-xYUP23fM)<lK03xrwNVXVTlHTdNWEV<#HUmm)9)
zXRgvM!f`l?DIQ8FM}?Ccy#+Ix*L2pOuS^|J<BAShLJGW$M%a0Pxxo*m(Lh3SPnU_!
zPRl(v5lDfYS^S);%GqEOy_WueCj+k3yx@kw%fPxtKyhSiBMrhJbMWL9q`~)%w#}4i
z#`phw`+qUR2clF*;}NF-x0-(6T%wV`k6R*of!<Y24E87{;u?$<jze~T%$;048OL`+
zKO)kByS0YN^efs%{3f({e-0wo^c_A6y>xe&Ur5Zg)^?}u5GMT4dHMiNi<e*JEFoLL
zp62$<hNd&SWKQqFC%NK3l%VvhjOFvg;Qr_=J+l1l;!|VUcllgf{0b)kc6I&o@(Lnd
zugH^Wy?fhxMdq}Wd$<JI^DFm1N}~XwaaHKaG|H>5XKcc3ejtZ}VJ-ymjkl%41Sn0e
z{P7a~_Z4XT>fe0LmEPrzcAb+bO=!981esuU2IrzCfGU^kLmEKUNX#nsN!Vd}M0)+`
z8yh^RKZp<MGZ6y0&I+t55v}y(>Cr2CcYk)p2M%+Vr+0elDu;@^+U3U9)HaofM1{nh
zsy~<gcJ$oPS(y#TxM*D!(p&nNdG`A?V#at8T&Ge+*7sCjRat5<5)|J*JgHF1ZTR^)
zqww-^19-asvb3vZ{^AG_X(&qs-x$<h1mhmfzOH9ptYvy4nwnwjxZJ&q_XE%WUKL4U
zWd36~0>^$>LlZ5I@DZPoNh|#Wh$p|!a~%j~xvc=`(YIf8b&N!*O!&@`qU>(uT;^pt
zE#^hAKBxy#Xmn57flNc+fA>KMQF#k+@fLxKoHNgAwBt)JxC#yQw`@R4<rr|^POcwL
z+n1$(2m@PV=q4eb{#o*%ckW60+;O__K@Qd)<On<ydn{H622!$L)iUhIXr2v*_t(?^
z|KG*(8`|*Hr+sZrbub>S!vFryP)%WO$M0egTL;eDK#jRt-ud}3c7Y6)zP{J<vjk|Q
z87|=x{n*i*KLf}YkX;mbXafiCMMd1$c)F@7eUO|Giidt2M0}@Rn-HftcztZY8w#{c
zbvVK|)G*j}Gk&iHEHVk9s;wyNFaL2HVwW66QF2-0v>IY0t`8i5xJB_~V-LheW3Xp~
z*hUdrnSZqvIOeQRo=_V;LH~3~Ei}YSi|%Q>Dc@u&B7H3PpzS|-0-qWph2CV6%?sfp
za55e7`py|O9d7<Q?F2ZPQfL3<E_Bc6elT}&;;sS@g$uULX$4SJ>>}y`tES{(GB`Kk
z4DJBei=aI8l)gGz3I<c94$%G9F^hlIgYOH(TC|yJ99lU1AgLbD@B|mu!dOvrR6Z$H
z#Rzf3x6=PUy75?U2FC*oXhZ$i&h<Ylr6Aldm9acb@BbN(dHmnmKlK@cvKt-+P<hQC
zs|FI}K_~oy@w}mtWPDNbf0t&&)gvJPK;oml;ZE&2vuE<y6)c~0L8r<|F`dsHq0J^*
zL=(E(2TV}rSN7t6)|K|4<N%RQD`TVx<$1kbRjLi|)giyx2-14kK3*miJ3o3>f^=eU
zuk-;Lr!q9i?s*FcfAxkJ7d*5K_n<-MH8&Y!182Z-r=!Cg7;?N}h^b$n!=BHDy|8f3
zD=)?HwJgw<F{o?dp>c*?u%L72Gjj(%_MNA_J?J@*wUxNKCswcaLF<3t65Md`cs-z&
zB7+Mlumc$drW9hW{MU9)2@hk(Y)%X4nB7sw5pyG2{=%C6hvl$Zl(Uw<3}K(8F37bY
z#>3#YY=Bqhm!F=fi-jxYmOL{cF(Z=>!v)pf<o`37qZlN&WbsT+O&ACeo{ix!g>?|k
z!p9kGpfm6BjG#C5*%N3)GHxRA*v&+JH4g3_IaQ&t8eVdiCnI1Gf!g?e_kL?b^`^sb
zW&FG`gNJQe8K&7QxOukS5VwORfUiz6qDq^=AosauZKf|5wIr^17?X@Ice(yMEwuNp
z9sx>9Q@^MDYB5N^G^<~TQ%c<ee~O*`yv7d6!=C1?I4wg_C0rFGOISP&g%jJ<YFVUk
zkH-6lt<HJcCztg57u(GbP`TDb9n@zT;9+!na&S^Z+RQERHH{7mwc-h{nsbvq>9akG
znF4Q3AqcR@(QbFOa#<-b$LoC?<wPrronkasfpX|tw0+?yZm!cg9t4|+)E=FNQ)>aH
zS5CvlMCjd}_-`WG31z?#Lg=2VBsQIm?ve6y_4fm67jN+957tMdl8SmFNQ)cbjc;?W
zT}b>Y)W0O-E{YQWtFQR?9Cv;J-MPt!ta}6!Cft79OOqL_X9rFueXckE6S_c5i+vI2
zpqP}WOCR0i?0UWJ-YpZJNQ#(gD}W-89p=3E`@;+~E0-RzTKxe^pr|-EpJ5FtqBva^
zF8_#goUUhGX6|_4p{TQ*{w65>@@K&`TTNiL>2B0<f3f(g^YF9<duo<tB1a)o{h5zB
z2jI!JUgT^ofCMiL^$?x~dDCM+Ytz*;T3FNYSy<Az>wB-^VP((t+sb)kPl3DVAPr(C
z=%i3@s3k22=JuNVK#U8`VqH=gCHuuXu(+^~Ua?IAwE8Pazr_FAU}r7pi}V2eCyI#l
z5BDeNp5`=PklrU9N`D!<1*i@aH_==Fw9E*K+X#3GJ8V1dT8^A_kceG6K3w#1WQe*1
zsEY>rhEf9f*xY}B3!FUrP|th7!azqX{)A7-ZQ8b07!umK3F;_WA*a2FPFhI50LXUe
zxmQ5PnntOpL@~Q-dg+%fxDwKJhU<He+a+*w>a|g#Gte~<EK{FiS-uEz-jvoP`2o8=
z2HK*bx1?W{Qu=Cylbk@3OrmK-0?zB=B%+;_z1+zPlRgBSWAH^4`4k77@u~U!2gp<}
z#LPWYU_Xu3V+{N6S~Pa0HQs`QvWgynX58)fh9bvH37S{GS*&ZKvsC}XRF%liK*6#P
zZrjK#fjZ+>LoF~i9S_O4Rsk!+cMJOdGufmVCx4^M6zwl1<?~){C?(iI0}Uq2$7pbk
z&2jsFoVJ5bi$@*D6ICzYe<2Q}ZG~iz1B%<CI7G_ATgOc*CS^m#{r%Z=%emg8xD`fi
zdpz|_cBejJLc`Q#(a1Yz`fq=CTJa<~erqG+{j}EK!w6uOCr;FSJf@?KIxB!&M*kHR
z*1h}rb-N&X3iu`Ip4|WXBe439Z9?Xwx!ZpK)?>II>FN-e5m0`5BGN+|I#-Wi+dW?j
z9@J`5qYP^uu|P^C!9~QJ&P%{JkGm8k$WTNs*sbUWB4ot}oGh`g2M;;-Cs%@29&Iu|
zK%<aI6lqbk1L~UIUy1@|-V^bNxIf_XXTdkt=9>d48R<K_NZRzoYWKIX`|oMTw|Hv)
zL`m+~QEcMCS=pJoFyW^O@`qRq_QJ>o1R`ky@5%D(AYa2YoT45&PIt_bgLR!yi-~;e
zkH%iiVfDOAxb=vfFH55QXA#j>{Z53nm%gsM6QxDV(n}a5yIN#*LKHii>LgAT@AC$n
z_R05p{O^Hh*^<Gy)rrv*Kk(pgq}oD4<*|k{J?GPN7l+@c3T=C9BcJ~zIn-bJS6H&b
zO^JTpW7vPXlu~uhT-w}J3s)?{ckA+UA1f>>)z!(o0jdJ9%gr`9$T0#XftQQDK^g;3
z!dIw~c09;QGh*TX#GKl6%r5EK%U|pKGn2!z7UXJSIP&*iCv?~dzLA<#BOu}3&c<v1
z*o1W+B>skbjtjb-RXqnIVBsd57TZ^jAM=)IATzZ2cmmJ%t~fT+$F#=1B+zA|#RA#L
zOWcqjvzf4$mZu<Lk6uFR=V}h4o&KjPP?%fan~=(WsMlhBcD5p4rU_D{I*sqNz@%Lb
zNQij(l9*k5oCZS%L1h__Xd+Kec2NEA9#<|_@EIP3apS}7fiQy8T0UB`$43wY)(Dg|
z?L9d6OYh-Rqi=idxYwhM><m{!LEXw_#eL3732aP3W)UA^=7iH^o{c>3V$A4#tWn3v
zLBwO+6CeW)u_0cG`aR!2fjXnvbIaOjI!Fk?g38d0{>WX~o=KjDmjjYyd(w0^F0)Tp
zSl|`n>XCqElNmd)3Uc3#P6xmUtrs`k&{R2)CVo&BBUdGc1)09GU6~D)u0V9CRp#Ew
zO9qn%ab_x&sN1~G_%1}O2GfV2>hMMxhwfkcuKGr2JEzQ)m;is%yPWW<FHm9W4jY#S
zuKmdUs^pC;GQ=KJ^ss<tJ0j=W&o-kAz)y*r$o0Qs`|a~TAVtG?`RdRBF7GNr5D7sW
zfZRqC8ib)6Z~KDmX^p6s>s}A8o|PqJSPs~ne|(EB867w1R8_`+@UVcQ^${1l>{th3
zF@5u7v+!1Zfs`iqNt|lIR6CR?|6LPxya0d7V^7LaoQvZL`H%}ZKyNzhH0nqH{s?sE
zHB&e>0KK8R$&HEB{s?bO!yG?tk|Lv7MsEzRQ?M|TO?61_Yw|ZNeME7k5lC7#)5<&$
zC)w=htFKGnq_7g>Uw7ek5~O#Dv(WXqL$=|ndB2<0O`q{A{**!Hm~%@(*TOkYnR3>*
zQI3mfZ1PmPdx_)$)9+zmYZ*zkZ8!27Eh_Wqw=M)#z3H?4{srNm)DGcII)nyRpBVnU
zh`x^Qm+j}zml;NUf0NO4SK`02;vr%EXMfk%ElTRgu<eNfYwN;l{sYiZz<BZD)^7g^
zO5GnpyR<pHXy9%I&Dcc0<HWaM`>^068Mi`0WQaZ>e0HzQ0ht(77JWGd(H0JOal0JB
zRpOHg3q$CN|HOOzcYw6=4~jQqAeHj`ZKls*fgJ$38Q~{=hH(eGAS-m%3G=zJ9FDe_
zDgFF6ai}+t{SWgPDxT;Ngb(U2Ty7-(ovzcV?B<eAIF!6hBqdPyJC2lptaS|6>neES
z-=GJ^)apzt-&wFlQbpPWTDE}`qUt2f?<lO<;iVzaGdHY*<X4wr);|(CPZ}GMpq*-4
z$7OxHY&T)(K0|D)Zhm14mo2hhIhoNXTH6(gaqpZJ6$%fCoP3xHr3$)9jaj}h6ZF#2
zY2lRlTJ?e1Bj&$bE6advG@#)yDml_P<nT=*xUUQ40BS8`ew^_yTZFnv_@@lJY=4mp
z!Iaz8X7=hVee7qh8WJX^L;D?C_-XPXp>FyK*1FpjAPtrHW7FmpKVQ%_P~E<tifF4Q
z6g;Yrx0-f}=v)VlH}VNN>hgeD_M2*{yn8Yrx<7(9xl|_>4+cCassYXOkBK^#=<?V}
z%wAOj+?RIZf%>cAhc}9rU&=lK8qgQJcV?BXe`8O|uslID-Zm1wM3Uzq!?s1+cZB8l
z;pBsPu;M&+Z$@9{YOXzas`7+$23J&(*<h|zl{>aH(hCN;>z6bFeKa3J*8D;6DJ{7h
z-mbn*x<eNu;jf93>1;!n%j~;O-(I{mFjYrWOg%upejY(DQ~5$1h3jq(%pX5sdM%h)
z%>Mz=l(FxD6LSAWVfrWu73ct!1_yXk+l;Qb0oe&Pu7<0%A~yTC-~%rr1x}5?ZD+QQ
zXnJC;CNkA70!p6nQhZEp;}U;oi0kt4-z$LjUNU{w^+V0JbKLdGUw%h3JQ@3ZaS@!#
z>>m?wd6xmFBss({pG&WOT?bo>jf7jpz2SpVkC^I+qc%cW$H-$TKElOI-rC{PVX9qy
zLD|xN`3L+kV(5%X+3?*m(yG+C!9y&fj$0omgw@&k^#4)ym2pjQ{ofmtp|m0`VJqF8
zDuMzkf^-a!l5UV1OcbRRq{E;DN5kmRN_S2eB_$oBdCt85*LB~|E8qB0bZ6)Me%~bB
z1EnA0EhML4sC3z>9IioI*8#0RBjGw-pzE@V)6SKA1+5ba;_S5ql1vjXT*^#}Hs@1T
za0#_yJ|lqd^S#`9<vXqu@|$P8`R-^1kSVDe&A85;EAc$hsXG{4qH^@Qn{Ou>00O4b
z7!x7Rk=LB;Aj0)DUgBMr;*fu_%oy#w<t34CdG)j?%W0Fz+1OEad!I*%i$6~P=bGFm
zx0Xkj4(SgTQT(C}Vl<2Zdu|*L`|Yc|2mI+kHdj`1TRF|uyZP_gzL5`s8SGq@Uo|3K
z)g>X6!QWB=wVi~DF2=kpOi?)O84!;fWe%AJ&xqG<gr~q(*+n?fsSFVI<evg8q`ItY
zKn;>%7xw#Iu_rx+E4rwS%N!w1xB<4wUtf8YVuU}oF~kqxQ_iw<8<XdfV624YQhDW$
zi1Dx_AM33P`pZBc*{++YnJoggFf>(&6;xdZv9Wpi^g_sPGVx(~_3Winq8DXQLzzv~
zCjG^eVD1Ze4kogMnjdyV$1F1w)TWbN*F0R5e3qsMZ5&-Y6DeQIQ$jv6PRSEOydi`w
z%c8tq3Lf|m!1(%aYfigt_bNx`+{{qdCn^us=KG3w4Z72rVVy<i-Roqk0I75M@w;B=
z^NIhV5`W)=I+!!rh=2?tf>;+V+v95+RCwyj;^{M%|6m3HlG5v3YQ5ofO5C=Y->zT3
z|9ymqPy)sACbwmTbyxN2q^b7;h_Qlp!D_0Di|*pG)sA!$$)n%KoRn$P?q`dEdUhv$
z@;N$oo(~PFdy0^@{e>n)>=EVPy4++j=7RRUIuu%zbcU#B9a(ZaIV4u$VnIb8j6{Zn
zGw#d@S5L+~kt^c|GyW$(H|QUK*q@?-T}lyXzQ{psEg#BDjjRi`U?^6&{yQ=yRjk#p
zz-fPK&Po~#?G)FDQPC#YZSY@b3^_Ic0_J8Zs?)=O)3xcAEIEqHn;pd~W5h+LXCL@U
zcFx#(4B>_f1juWr-*Ia@f}J*WO`N4|{H5&lNDP`7h#EVuP#t^S!P&5pBsK5X)zn>1
zITM%F;mq_)M4y>?-_2S#QPocr?zJLdMxqCg{x&Gg>MygI%yfxze(=v!^ihix!%>3P
zfe_ZGCQ6kw=OW$T5KDjA-K?5_&YAwRE5uzy2xO&#mATbO|M|r_NumNg$)3csn$$@=
zJL*4s0=A!%!c&tW6E@rOP;l$iyJxQ)eoRtr2hvurI?v(9IJ<qR`c4WX{qm5_Xhoh4
zqXL8?^fOdrg_!tR^r&9IKUEPA{4w8nv^C1TJW^<U@vyskeed2_k<W_%uz0czLfsej
zY(mK>7*a?WM&M^<0{pEIVM=~m-dcjiJp@*WE>1VPl_VAY^Xa9d9og&-&p9wRJVQvz
z4>#^<M7pe<<h`iI5*;;W8|tVYQSA4G>u~59)WuaA6%ODbuqc>n<T!DHR_Ec9x?`a!
zH|)qz#GS}&@C0l<+ick(5)tKb+OTWDjbU60l6m4PBTK87i#@F7?6I7EU-<+p?GS;%
z(UXVYx7?>|*Ms?EyawCPP#qbcl=hOmonXlQKA#}be+0m~)!5bzx8&uu7~8qp9G`*1
zzK_eE9qxQ{$N%0j6&ecTt^g%8pu`x6)Y{5{y=)**8h^q5Plbl~TH@d9z6yLQEeBQS
za8)HgZrxQA-f+HxWwXUT(Z#@4aUB8|I|Q@?!P**{+13N0FPwK!{In8OYHqYiJWl3$
z@%z@P=rrlNQ#_fxuHkdH=2mB;4;q(<IrW1;;`=0z=e~1Ijv>rYj5j1hnNEgK#a@st
zlkLS@#_U8LX5QOzfH~)rG%VQD@UZ2|2L%rq4m4@U80$a|%^fexL|PMOsp*ibZKAkI
z_-}nTVYn-1d8+Lk)9`~H?Cvk%wK6QE9Da};XYp|;z1*vU;p`C+BA8=(Lce#BEZWcU
z(-Z%CT`M4N4LJ>FG?s`-MYr;H|D+gJDriB8ykg%yAqYLuzLL5f9;{Tcbq->`{yH?l
z|4WytGy8t?n4vNAwo^^cz=PHHEb+<BZAjcz4qWT0Th^z_NMpB*xR(N(ItMj-3wBcj
zmCvdsd#;xt&gY*H<9Ob6yJ;WWpB0&P$VdoiYa*twcR>i<eygrEE{6PXKAjR(d~<;b
zVzZhp|D$2a%!I@V0r<P>_tP7c9!ov4frkTaN&v1?A^oUET5x&!F^B;sj%}YLTMfCt
zpyff%Cb?7j?pb_<DXEjynIG0d|5>{9Fa+3Yo?~F9DfaisweFRGK3Fy>6533%seav(
zN1s@<_qi9;C5*uwH7m4r0?Z59{d0-cLB<yp9^<>jZrzgB4E%D8zDdKoeajK5MrE_g
zuge50?8H7zjun-k1atN-(};sx4@v4w^RFER*Ds%aeaMceva7)g$2dYZpsygDO6Ob{
z|0P&LRz9fhgOVqkORmCqaco-)a56CU!4J3`1)s%mGkqLx+afM;oHDfCl@`Em#fxBC
zusH7AG%!>&*IqFkLN-o2FsNQ?EuQkMr7I5!c)KnUK#9oSo?+QV&x{ch_;VQ<^`}vN
z(`HU*o_Nab@jSlLWAnsHabi>R_n3(JcX_*`>4P2FaH4RX0Kd^R>|XD}QuONg<CEgF
zW4j$-Ez5}E4z>MB0plcwLcDaId;g|ZUDy78Q1dHda9XOn90>LSJ%P0^Cl4od;8aT+
ziMi%;8(@lEj$QnrS_y6fwoodD&Sx^MRr!Ip<{GvbHyl^zl;z{pXN<(_{-yt(2Cj0a
zuYFd}>ohSD*&$B5f?pS(l9vXS$}eMO56&4qRBjRdy9^{~K@1~FH3K~j;$%D!kE=Nf
zh*-*{VCa>JP4FIfetnfv?ExlIg`w^YHAX)S_hm>%1Jio2D1Yce&KU&xEm#MnVi9ZZ
z#JC4zNg8(MV5mRFIyWWN*~Pv-R)dF2Z9v_j8tX9`x43O%k!#I#3-H>&4kB{TczqIO
zXi1_=`ysz+QJZp_BpDX8N#AtFQ&BT51+ewzc`kE<H<Ik05~JXoxvHt#b$~fj$f@Vm
zN*@Em+=ZC{C%p+WLsA0fvfv)A_8it{Hc7_qF`+o&Jm(MLo>50ih#wIKAdr9Gvz;Gm
zA^^ju0nO?GyU4cW`XQM87%=>gpniTpen90&``(9j)k48mdvp3xRu9tOzX||;&xpYV
z6>CIe#I$4w$FLDVo7>!t#<RI)8F<`A8$FLeVAj)<I^fWF=q>O4NwgX&OJPV&_cd_M
zet+q}l7=ZN{>6G8vzN0hOHccq3I=o1;iNgB|9WlWvGL^fa(D84paHwHtL*-7Nkm{i
zjvHplXa^RgSg6$16?kY&R@oWnscw^ske7YNFK11YrlnMb=UyGM?(03idpr_Ty%>|C
zNa*VR_XgHV|3xk!)%zQc+i_)nTD@ZL$h{&w>CP))2F1ZDAD23gm%3T`{{8Jt+ECaB
zb$rD9g1E=!1(dmiE;WAjIJgwt*b%SJTj+jO0H1m2x_@XUiLVjMdGeo%W~+Bds&9Se
z9MvM>=)f5l=&vx!T*L|w!%;^FAFS+A`lX(%Lb3)W$V1+HONuW1v3F#V6%3Z!cxP^s
zGB`ebs|hAyr+ov$$?-bxlOE&aGiiozl*E77vSiwD!;LXNohD^>N4^{Y48cgjUiV{=
z2WKv1p!nAQ>`i&S`%@$;kKhaU6V3R$u*?PL5`&tzLk`=mhGwHZLiO7MI4^BqB%2?x
z^~!yfq@8~<3DCTUiOuv*87L8DNf(n)o1!4gP98qIY@8a<U{OE?^&Tr5_gN4<iXWG_
zx@s8sW|xJ>!S~L%@0!0zzIgh+op|Ey$$F)+;r>n%){E$@*0nkS;?rC6uU$FW6%pY?
zY!3@x=1V<Rv=HA+uVu92vnE00-lTM5KI2^H2}a24>gR9nI}?Y>x8}z$JIyT&PI{wj
z`&TY{UxwnRtui5L8zsqViObG0-G-FV4d0O5t4YI885U=~UzpS8`xlIH2Dz1rPPp^h
zR3oN1BdyYnTb5fHQqB$E-<kYP^dkP>^29Sr{wnyeh{7snC{Wt`qTeJs7(7aK{KxNr
z)Vt%KF_h;iB<>uZ-G`D#qW81#xc66@2r6dI-H8_@p73NtT43r=3P^#hA{^MXB;ei1
zDYV6{J&Q`jS2CW|clmOw<d`J9ZDksq{j7Es=N|wFk8CNexH3%U<u%U%GH!L>JwgJ+
zwVRUu2y{=sVtwW;JMhn$<Jpe)Yv4-tx>)u<g9{gMq1Po<^@rN9;@tL6ddPQu{ST>B
zmf5jcYj9FdZN0N9ytSN{MmkQ*o8_KC<hIxrUT{KnJtm2U-lOh1_ph<JAAUpX(+|bv
z$;P`ujnnkO-6OqrV#AFR3RAn?41tT^fb;4iLLFsO;ZoM5uf$N%_Yg^g#YGM8#zhA9
zj-RUXK0}Ce;8Q7H1~s?`oWNyx8dxfw80iR~CAn>`zMp0sT4LCX<s)c(f>%fG1s=j>
zI|TlcFN-4gD)n}`Jdb%wjwfUv%O7t~XToXAb#q+k=3P;ZlTy|)qv<#n&Zm!Jp!>Y)
zZR1<r^76l3ravW9v+mJ~>rPep0o(TL<5A3fMP1;{ln+d2nFwTeeMj>jF-=>2mrzR0
z=2$wJkL8|=lKy(D{CmhBq>4%-0O^gEGQDmj`UuM>qAtVu;y8%Tz5jgn*b85g9wxuu
zRGm=VO$6Gha*WI${ii#y?Q(#p+D{Fm7gILW!N|ON8zCU7;PZz$)#H<+syz%gq6W}Z
zMboJW9a9PB7A~SQ{vFH6@GE-kl>)e(+il1T2Ai;LNYRJV_oR^oed}OK0kU+v7l__^
zBBG^x&33z>(vsdD#sSrX$nd<c&l^!Nmur$0!QL(xNATQY<)p!!2^Xc-bCRaP&o+?W
zGpqP%uk06npI~7@rBEft^pLF1)ls2@THfg92?1#^AnfKU7iz6NrLYUOGEFq|WGKz#
z5d0j5(sZ!4g~c{3a7Q6e1CyiW;(yoNzw=k9i7Ul$TQ?JJfmJlObx38M;)R#*>M#f2
z70EviLqtQJw1-WZuN=d9#3sCEHWRAj;x>Gqybo~KKE+lY4Imx$Tb)=h__y+QFxS%S
zC2yT~h`C@$@bS*<<q2r+wSqg!ghq4pojEDKrwwn`sZ8!ZI0RIE$`c)LF4@frxgu2q
z6veb;Zywo(HQf2RlA|U3bZuKO)Vxx_z>u=1XH-}y)}=qp_GHoox=b-JTp2Py1~FrF
zBN$J&DC@n&h!Ys9)hP%k`)O(a${SRRNRU;c$xOMgh`KKv+=DkhL7!~3FYf<_HAFN?
zJVy_ay^S8#@@oB@+cgn=!b?EMKi0*NIa&RRSlh@uU+uJOHnb`Yuz%PamMiMIP>iQ@
zuU0`wz?urpg022kLH(Lu5ULx+{-`!BFo%)xppNkpDw}7#-Wd_Q<D_7KA8#~sbZWfw
zp8d+?VHl~TQ`6WlPuw)5X|vhNnXO=-Xdd2AZ5E2>NvR!9FUii?L*WoyA(v>GzV1{&
z@b8MrhVf^R<UfM4@c9}dt$Eu}?vKMedbA2`b&I|+sLg4|cb3TYp44V>TDjQt&$A@=
ze33R%Dkz^Og&-j=hv~CFq?JkME+s-%GUq^|4xf^$x5DWTV`Y*c{(L>>xm)USpm{4F
zr^&Klo3TLDRDSI}^=&LhI>PG)3&a;beP+a=Ec_O(Jepo#_!7ww$G07M^yTVV_BwlG
zlapJXN6|@sf@~P7X;w)Kb-9#u+`Z9+F8As3O~sRVqo{Ndt%QUc=miVW)WH#Mlm6QV
z!gS-!`QJX(o0-bs(GE#Ve-fM5;?w@`$|e4ya}j^S&x6~k*fy`E#4&F!#F4p0j&>RS
zj105-`vn#L4!PfdW|gv}vVne`o#77@$6RWrTuqO^zjx(JJDT}kw_7dH4;O!nO@JDj
z(X_brHn2g?yt~SV<i&{CJqgh(qakVLA&-#!9Z!-kdoi7hV|?4}95o3UEdv?aOjiOm
zfUMY(-A0HY{}?)-aXs$NfIXQ_RPgxP=;#PqCP>ER4|*eaSE0XG0Wo3DDZoTJ2AhU1
zS0tMTQ$2<Dz|S6itV)E~<rVVcZID5v!n#V27sHqL*lv+s3oVv#nYx;CUdIPTo%b{F
z&(GIAtveaxvQ4paEbU-$^R6gg)BR#l(tlhpKF{<#+E}g%>6CPz>+}yowEd%{()AQW
ztsn9mp7N-hoRx>|btq~n>#)cj%Sx?HmIgHMFMRc6o5}vqX>HgjL2T|$wO=b$*FCw4
z*<3HNnTfDguT$2jPvICz2hDWm({)W}=wPOs+hsnu{&J{lYjJMa<GF;C6%ii>W6+~r
zi-JdgB!J$b4EE#|%-r$+s8=26&r*24z63Bu1(nHiTg6G0IvJ!7<M-{VOz##V4qll7
zd5yI$c9^2Zm?MnN9+Z30cKxmi?iKn*MZ_T!{rgQ7je1OroB<yY;QT4p<JU_`gc8J)
zc`}2umd6uD3meOPPe}*S41HLnwZ@3FDM;LrR)r1qLt7$&Gx-GoyH@ms`+Gw!Vu9;r
z{Y7tYK_Xc>^d%qSk=*_)Np?!3m5c)G2AO|_d+(1;0|yP?wS&GJeE65b7_q%SG9Rb&
zzUi&9szLl`SOCc4PJ?L`#S}w}&)EEKxv@(20<|bcBTI!D%ApYoktXn=VYH9M;;GO0
zs`}WuS-SH_p6r;Mmg;^6IN?b%eK(ohdf<C@8=-^N8Y&&G59bWadi1318OG=C-@i@(
zw)2|VXOwD`K1OIih`;yzfjahkkrp*i1k0S+i0$JYnQl16X65OAjxl!tkm<@OTT0&Z
zj;xW&qrj$YwiQI503WF%A|eU>kGg~?MyR`pkZFp~IET}#5g%4t3KBY?J)oxy*>hf-
zPFG}f>yjYefS&Z&kfnl@QfWLp+J8J%=+cM4Tf0rS$~c_rKww;E)9_g8?qX9u9o8>O
zm6?B+FCrb;slW>{@1}3P2W9%5NxJS3)Vs&4`ho^B`7rMl)P<F{W6}%P?-zd0hPHxX
z-TZ}0{|k0XDex_5n-0#a(33{BpkWBtm4?TfYA8Xe)|HTD)R=D*Ay)y{Z<gETDvQ=8
z5()3+D82-(ehLp(Sgv=h--XQO?Ny{Xvq91xyTU{a+t!U}?6%~MA6L~UIw@<`?H085
z-7`rn;1R!-zL|G-@nwb9Bfb50vczKRG&QFa&@VisimHDFKuxqhfRJ`}@&jswAugXq
zROi8FXW+XgJ$%}hE@b*UxLL3Bq1Q&8(RFpVnxon(a_gwPlD>x->`xe*h(DHl3l+sO
zA1V=068^`*=r4ORo&QdPUrDx911p22oit2DN<*<mb#E?fLI@(s2_|!rnn_?@q~pd$
z6`sQ>68M-AvcPQ`3Op<6Q%_$X&fwkXxP|1q7DSxZKC3b}Kdf%7WR0%{H||Xyd*7_$
z7<iK6?C(3d2!8H!NH#ZW1t1o-0)59%q>(hXc2OL83<?HMgh_OG8Dw@?opcOg6J#Us
ze$j8b_lptY)7KxNSLC`T0aEb|6mEUi?edYhDj{$91;ZY&iZ8S+=o?yhqvF%slgJ|@
zz-E@}9aDWbf0}*gW!rvRVgva$!lT_58ybxX<*UqYs-kXQ9!^>qS;P8L{3Ka$?~z+5
zhm&XO?>k9q5wg0zu~kQkP*++F%ZX#m3YzW6in(-8oX%gg(6?~7jC&Ph)IR#NRj1J$
zxJp+B^)x&aI{O@3I%d}dw(1ZyLyjKWUz>SYcl7>&5Q(g+3Au<Lz@`q2#^i8I?t;3@
zDw9CB(E5+Cjo~)dnhxRUpx~<$w8KJd2x?enQkr>6yml@S+6q(xA3+HIJtPGdl9YWO
zyahd^MX>7ib~z0x9*H)tWJh<tr>P*gN3ag+s;6I!DWknTLM6w&&eILGBDhWxmB9J2
zqDUXW9njl)IwjIeGxGYk7o~EuQn*#VUaNPfx+gbK@8O@b=laeqaB&)z{K8j>c9<xW
zJ^D!M_p9dJnl7qXW!|U8hDwg!^8&K^^(1l3%3OhXXa=uDzaAY6m9{-D=qc~vYB$lo
zW<<TIH&%_nXh{Jt{5uLxr(c{g>WQ(REEu(CL8{!k8A{FQQ9z5IFR9FzrQ&Q=vwXhk
z>1>L?9TpBxa3&|r+70Lb5$O=AoBa%=7zu`*&jJjkgKw&E=9d_-HOt2_`_EW}ONo~R
zE4jc6`v#9w@$d&$SNSw+$QUJNpq{BW1yU(PF9MSkM~O98-K0^e(|l#{jt7K^@9~Wy
z?OoYi*ONLu9RdZp_`3ae9`(0+i`ub@WMVj4i?2={b?#HN1;l-$pVk+Q-7PXA2*!YQ
zPN}%FH<O+2IDR4{Ol|#woYNsEGH#)c8~zOVF8WsgMfj&ZV~)8X>D77T<5ivEbo<t}
zhdk^ykb8~Ev7U^u9}eqpnoq!}t-~-WssQ`eT8yA6;|>_&#y`C8y{cd9E*LO&(Q58F
zaGtVi^2JbvUJy4jDZM?hgJD8a4(sh~vb7?7T{E8^6aGtmfy{_Z;Q7QD1I=U5L71sF
zBg$(zNw{d~n}#8yd$$B}-WR`!kRaC;|8&S%Hr%4Mv5J)@ozN)<=~`oB7GXBamx{t|
z;#VYyYF0GMRp@QAZkqDmt+zalRt7z$tF7PSa>G<Yqd5g!ZopC$tj5#vRiK3(Q@Pp3
z9lD(8pN?~^?^Z0piH1!S>Zf(Nz32PA%xRRhwGaG?eZ>yqU$6~1M$S3s7qyLJ&N+l(
z8m8E@YD2!yL!OH#ndN>j`_}OrFJ_sU_BO<1bvz4M*@{#hh%OY5%K9)CoKES=O6Tmj
zT2VgjapQlbmi(kACu^s*(>L;|aTPIz)=RgjA}lqZIk*r{$t?%5oi-n0gxS$kh0~#q
z6UZvQ>bt6N>V}SR7YyU`#u?}#PJ20yHQa&TC{l1J#Y7S(UrJQ{7@eb-lqx_>by+-Q
ztmj$oT-W4NCu8?QG&G;gxf%z&z&1>0x1A+$0YuTGkaF$)t#rxIxDSj6&j}qQ%RBS&
zwpZv&*E&;wobTnETkU9mhMEQagG`#*F|1eTEoI#=Lso$eZpzFiWHaBnFSf)@aqYk6
z>>hejCK~HuR$uY)e##lZObnI<y4xT<94sziJTtCY$^g^_QFak4xr9x*c@A)x!l@ND
z0CM>iJR=Z7f%gXuiO-0|pjN7Vk8oMV*pyhF;fqF;nIG0CS@9M?RGIcs)QeH{hs5JN
z<U?<e#m8UpD=Y+5EmmrxpLKX3R*HZQ_M?*Tm+Cj7(k91!#B@ii{WOe3N3L*;A78=e
zj;09~xKR$F;?C0i8@aw|ww6ho|No*Za02!#r`!F{@aSK3ST?t`F12~^MHTw{Mdi4N
z2-yQlu3a7+_z*bUuImo?bczo1FsvRU4}n)l*wU{B{nhry4DbmM?TRtyKOip_ioct#
z;)B-?5w-5@YG$Mf;oyMHcC<+H;D`!D#<YDSR^I0sz+lf9smH0SPb?5v>Q(0Wo(c$|
zchc8aiA0(^DTDwP>VQJ#^Z73ab6a?@hNtS|5wXku{tGi~mSZW*|DPV-|2CG>;yBpW
zbR&?JVU^+Y^5*9pOQ)@0)Meu?Q`P&=GXHb))UN7|>im-hK-|Fi8Zy)%1ip&%Gt`3!
z!8jpsg<pMJy8=k@M7t~vN+~E#j|BcTq^7%)99Msh;@y4yunQJnzG?_<O@2n&NE_N7
zEhx(`C11I(!29j|T=HQ&=m*LadS}aqB3{QYf&5WA4qc`^qCnQZxG`jF?ZZMTW<=z<
zpq>^BKuLK2W}hXpBau|&B*~{(yYhhA)@T3c-oL><_Sz69M}4sItzGcVv9*JHLOh@R
zJpJb#A_}Z=Jn4|tUBfoFpO8>#k(LIa)i5-{*EUj1yE)X<C-9|#?+DUdo?}&R%ZL#c
z?>3;Jyra;u+0Jhg_#FH>{^V}XDI^pb`bb7jQkMPndHws>?VT0@Wz7}3wX5prFXm3_
z)~5~R%1^Cce)1H}zDhJKP6X9Mb33DS!B}$>SrzdcJo7`j^H-?~0~%Q;dPdz<D)rGq
z6aSzV3al3)INm6I!W4KD!2ct2%%D-*Eai|`Oi38=hA2^js<pDjK*!8`wbI<LAAzpP
zTw*C9yAy$WrV;pbyoC_D38vA1Gwyb%i=5Wp@lPtb)VV!(3(XCO@MoGF{T8pYN&R@5
zMUwIi8<RuSERw15(%Ot&jCu*4eR|K!5yD}Q0s~G70sIsWIXW2Q#rN`<O!BsFU_1o(
z{@RH{ergQg=_CmEOVMq|V*3E%E`H-gV}2aOAm-=Sg7Q#zm#H;N|GCqD|5aQ9)!-H<
z2qKydCN@77S##mLIy*qJqr_3LzS|A+q{?8QJ8=vakM3Uwdx!ofi0!VFljjl00rPB#
z4?_|a8T$5MY4Zz|wyf&C&-#p^rwdFDfCme9A*!@8O?ci{b0JB?DECOJb*;f&TJZH&
zdase^IkV;$#S+*)qH89LC0ybQbcybf#HaZn3otOOY**6uZGnncEn+6s%bl+WeQIxs
zcHB+BaTvbK{=HJr7j*ub$yVZUjLj<}kK_JbnIHdi-n7zd!9V1LXnmM|+M;!g*2ma(
zLzIuoU2nrW{(0m<<eX9=4AVNHaNVOX7{M7k9uH)F<xXTcBG><p-uJZ<ImjV!Wo;a`
z2iW4So{mvl)G7E*EoCecRXIDMCP!u(=vfV}f-|?)iDG&M^7j*<es&O0Xu3muDs_V&
z+6~#5_-8kGhHMT%QEbt`ZBPfSW}*0jk1RX_#F>4bzLRN8Kn)W+VZjm183d^A1jrcu
z)fW_jX<c;DYs35to7rpPIZmcHz5yLXE>Gf%4arp{9bjO6fua)2&I=r9#u^3fT0;oL
zKrbV;`z?}x84_kqEai>k1LO*>jVb*P(L-eibnLf*<-?f{lV8}v(j2@Vc5bAe0_^kL
zNFL~NPjg|n@9-eD=Dx0+%c;NzZ3sJJsM*Lnswy$dD72iMm?@B0Xic;{pg$UUj84O6
z-Sd5n7PXKW%r~+iwwL*fi4ez{aL4<x0lu9paoohFHLJ`Fs;3Q{jl{IMX_hQwLas1B
z1|RfDcdfVq^bWWCIK(b3Ivu^!ss4Ph8CQqfuV#sPv+w;Ejre;~w{;X)kBAwx-5Hb=
zp4eY*M`#ky+jFa;Na=FPe=ZU*&?3>)<4^*4PSA9I200KM0U%)0a9*VJMB~+S6a*r=
zJ;QR2@2T0zrBW6Q>+MtUsXRTNSUa8o!d$D`<>{dJ@8X)z>z<JC<8E}sC~@`pgJxMR
zKubT<YjQccxU!$}6vfTeq}bg`%#Ns;VOzVU;B+H)^MdL3t)cSTQYoN5kTy+_VV2bu
zbR}zk_hv$PihY(S_WlO$R7-pqJL*Q>c>ONmv-5c#a-U|g##OMV_wVU~nC+GU@E!ri
zQ?IvX1qzZe*KLuWLx;rRxJkvBvMk=2f3?<MNi=mJT5DuDB18FZ$494;=vreZsssLu
zya7|xDTc|ZJX449pzNvXub)8i>=YIZoMc40E`?phI7ah}^b3Fx0KqJ|3c1R8AE%$5
zDCG3QwZsH&n^&&_%ur;+a%QX9`^2E9Kxd*nrSf~i`QZ8ApXs2_LPcGko$(U?3-%_|
zz67PbqIHSUr@RqM*ZT&oO4DxTwaFF(A?Cx<rEj^~48e1rTSV1)iK1uSA=SYj(0^%P
z3OdnZDrbMK`FmOzg#zlMj1s*Ow?--#OPauoB{l?J#K<m82p>yw=ZIHNQJEvF4v1aY
zUN`d~GGC55eRP_Aa%*)?CxMtz6~{TC78hFW|Ie}MaVOo|5Z#%eY^hXb#`<N36<FRC
zhMhB=qOP_2uNwdKw>yQWF@G({P-H+=C|Q*f7JyD$J{Nc(T+)LNf%4SkndFF+*eMX{
z@+LEW#JlTG0b+`N+Is}^KKh0YwB<e<&KwAw_^_?p5oM9dg=b5@Z5SF1MM!bncbBas
z%D!FQ!MveGtltQ%IR+|$5VC!{&KC5RUeX#6!scvU6l%dkd%E7^is>CbeRdcF9blPf
zFj=&*Bq_XYKSj?8*fX>f<;7<7)W6#Tv<D18IKLUc^Um*k?pgJ(<c}KV^RR@9vu)_Z
zH)Vz8kbG!l8Cmx-;Ql5(Uw<t5kw(lF+rLyMdsW!~pNk(GLeF#tM;vY*!8{$FlYpWZ
z!O@W7EBt>C88+`WHr$O3BOGxC7x;(ojLZh8RAfJkD-5|2uym)=QYhj(eAVy@a!Ea#
zRC}+(v)?^Q;KOu;r#<a500{g7AM{Pvvsysl#1tj%e7_Z2?$E8kJo`6V_<qouq{A?B
zDT6_^p;XHOr>V<>Ig$ATump1?09+k?XIR@M4bKgx(d^d&<r3qhzCDMpjd`kbcN6a;
zSM_uI=e;)>12!0isj~wOcUnPM`!ht94}mpC>#>XIOolE;(|hWx{ovsI!3+&@>|x2s
z3+7e*_=0YGw)1VDV@#Lb<yq6)EtmD$W%t|eolwgR3HUQN3KW?#Hyp=OGs8^&IXzM2
zY9@ho$K!P?6)}3i!}Sex$A8*$vclB2I_kg}Ly=XTB>$Sk7;djSp6)sZ9}a$!<|gEH
zsF=77j!HK$5y_rrWYy@2FUBD98ks@sZ{_7cV%~K><BdT2+FV$3;R9Pj06P~coiDTl
znV<pJJUGGAoTNkad+cMMY1@c8S=svlr??haSoBK~^+6gBd-rVvXMA`KlRr~Gn;C%w
zCqPNg9%cm`WM#-4|4cjj86W-hfFw3xTRA`r7vW|cqxT464_(lG+#qZ#pxUaEKo#<E
zCgD;?)Nm>d-{;SiO*Q6gt|)JY2^T(&^(96~QrbSDdR}&}JZ~}p$j`T9wn+vhg#^A_
z{qfLPs^VutC_?Ow#-@tSAHebxfC17h3KifdOnYT@N7kMg7&fsb&B!t@`(I)gu}d#7
zm#Uf|4q{3}D`FOlXgmdOBM*tt=P0AtTKr!+Fq9s95xaZC$x3827^!3krfOOIDqD*J
zAA`EZY?AxwNHTyj>j13dGxSAWcd80p{|t$FrdQR0TJLZqIpKGJZ+UUkobowcSPrCA
zj4UzUY;;g2<+eT1J3sADk}j+Qi{}!@E`f9!Lx<cz*14baojEclN7Ib$kT7x=bWj(m
zxUvximfwp?!RO=NST*n)QpCs+aIQYIsRnUBs}cVD?IsKylM0yhqog@#6oCS+PAT-7
z`&+hj48?}fND;Wwb<z$7vc3@oKXX#}(>HS4pPu?t!gbSCrH-_ZX+KVL9)gKb6E~X-
zekl5Y^{zteMZ<6mcfX;jl9V}7c^Mao@@FYs6yCQe_?%!8O}*~{%<?y#95pj74F3g)
z^`3z7=9`CwE{527PhZYsM1^<?A*}fms^}{D|GbbA{?E{=rUY$q#Qhi$XIKSV%=}E3
z3cXV*{K?|ufJ)t>zk!g;Q4nCiSQWl>1!UyvQ{nW^60;0ofmLfu=nD+jbB~pAQphRb
zM39Q$f_P`T6}Su{VKeC3gCz|k|LkR?I%jI9vjJ+e|My-m)h#2Nj99Kv!~}2~k(Qv`
z4O^J*c{^YJ@o}>4efRzjnhbv-%pzR2AH{bR={HT6ru#>Z%gU+JmO`;mh{R9!uHlX$
z2t6Tv-XG2Hm)4&`zXe{{G1c;IE*)g~d@tvPG<%*@z1XC88K~yUzlqM0^K5Hg$~#s-
zj64WT`a0dU6N0CQzKN_)qQS0*<-PJ^z4ywO`>o5}mqOjO_q)WG>zyH<czu}+3m~87
zb23UW`?==3_}<Euet`imzx3b`%vQE7zjni}bZ(lU8r4Ex9?itJ9H+)=;H2}T|DmnF
zlB_(#s@*A$)FXSX%Dkd*UldGKup8H%0DI9MPu%`-T-Yco1Q~9{JhxjaZJa40!1E7f
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

diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/reactpy-state-change.png b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/reactpy-state-change.png
deleted file mode 100644
index b36b0514ac1c6a73688dad78d2bd8ae996d328ff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 569027
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%0DIatoWB#&n16WNqobGCwfh`
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
GVgDaP$Qtzk

diff --git a/docs/source/guides/adding-interactivity/state-as-a-snapshot/index.rst b/docs/source/guides/adding-interactivity/state-as-a-snapshot/index.rst
deleted file mode 100644
index a677a3e68..000000000
--- a/docs/source/guides/adding-interactivity/state-as-a-snapshot/index.rst
+++ /dev/null
@@ -1,158 +0,0 @@
-State as a Snapshot
-===================
-
-When you watch the user interfaces you build change as you interact with them, it's easy
-to imagining that they do so because there's some bit of code that modifies the relevant
-parts of the view directly. As an illustration, you may think that when a user clicks a
-"Send" button, there's code which reaches into the view and adds some text saying
-"Message sent!":
-
-.. image:: _static/direct-state-change.png
-
-ReactPy works a bit differently though - user interactions cause event handlers to
-:ref:`"set state" <Introduction to use_state>` triggering ReactPy to re-render a new
-version of the view rather then mutating the existing one.
-
-.. image:: _static/reactpy-state-change.png
-
-Given this, when ReactPy "renders" something, it's as if ReactPy has taken a snapshot of the
-UI where all the event handlers, local variables and the view itself were calculated
-using what state was present at the time of that render. Then, when user interactions
-trigger state setters, ReactPy is made away of the newly set state and schedules a
-re-render. When this subsequent renders occurs it performs all the same calculations as
-before, but with this new state.
-
-As we've :ref:`already seen <When Variables Aren't Enough>`, state variables are not
-like normal variables. Instead, they live outside your components and are managed by
-ReactPy. When a component is rendered, ReactPy provides the component a snapshot of the state
-in that exact moment. As a result, the view returned by that component is itself a
-snapshot of the UI at that time.
-
-
-Setting State Triggers Renders
-------------------------------
-
-Setting state does not impact the current render, instead it schedules a re-render. It's
-only in this subsequent render that changes to state take effect. As a result, setting
-state more than once in the context of the same render will not cause those changes to
-compound. This makes it easier to reason about how your UI will react to user
-interactions because state does not change until the next render.
-
-Let's experiment with this behaviors of state to see why we should think about it with
-respect to these "snapshots" in time. Take a look at the example below and try to guess
-how it will behave. **What will the count be after you click the "Increment" button?**
-
-.. reactpy:: _examples/set_counter_3_times
-
-Despite the fact that we called ``set_count(count + 1)`` three times, the count only
-increments by ``1``! This is perhaps a surprising result, but let's break what's
-happening inside the event handler to see why this is happening:
-
-.. code-block::
-
-    set_count(count + 1)
-    set_count(count + 1)
-    set_count(count + 1)
-
-On the initial render of your ``Counter`` the ``number`` variable is ``0``. Because we
-know that state variables do not change until the next render we ought to be able to
-substitute ``number`` with ``0`` everywhere it's referenced within the component until
-then. That includes the event handler too we should be able to rewrite the three lines
-above as:
-
-.. code-block::
-
-    set_count(0 + 1)
-    set_count(0 + 1)
-    set_count(0 + 1)
-
-Even though, we called ``set_count`` three times with what might have seemed like
-different values, every time we were actually just doing ``set_count(1)`` on each call.
-Only after the event handler returns will ReactPy actually perform the next render where
-count is ``1``. When it does, ``number`` will be ``1`` and we'll be able to perform the
-same substitution as before to see what the next number will be after we click
-"Increment":
-
-.. code-block::
-
-    set_count(1 + 1)
-    set_count(1 + 1)
-    set_count(1 + 1)
-
-
-State And Delayed Reactions
----------------------------
-
-Given what we :ref:`learned above <setting state triggers renders>`, we ought to be able
-to reason about what should happen in the example below. What will be printed when the
-"Increment" button is clicked?
-
-.. reactpy:: _examples/print_count_after_set
-
-If we use the same substitution trick we saw before, we can rewrite these lines:
-
-.. code-block::
-
-    set_number(number + 5)
-    print(number)
-
-Using the value of ``number`` in the initial render which is ``0``:
-
-.. code-block::
-
-    set_number(0 + 5)
-    print(0)
-
-Thus when we click the button we should expect that the next render will show ``5``, but
-we will ``print`` the number ``0`` instead. The next time we click the view will show
-``10`` and the printout will be ``5``. In this sense the print statement, because it
-lives within the prior snapshot, trails what is displayed in the next render.
-
-What if we slightly modify this example, by introducing a delay between when we call
-``set_number`` and when we print? Will this behavior remain the same? To add this delay
-we'll use an :ref:`async event handler` and :func:`~asyncio.sleep` for some time:
-
-.. reactpy:: _examples/delayed_print_after_set
-
-Even though the render completed before the print statement took place, the behavior
-remained the same! Despite the fact that the next render took place before the print
-statement did, the print statement still relies on the state snapshot from the initial
-render. Thus we can continue to use our substitution trick to analyze what's happening:
-
-.. code-block::
-
-    set_number(0 + 5)
-    print("about to print...")
-    await asyncio.sleep(3)
-    print(0)
-
-This property of state, that it remains static within the context of particular render,
-while unintuitive at first, is actually an important tool for preventing subtle bugs.
-Let's consider the example below where there's a form that sends a message with a 5
-second delay. Imagine a scenario where the user:
-
-1. Presses the "Send" button with the message "Hello" where "Alice" is the recipient.
-2. Then, before the five-second delay ends, the user changes the "To" field to "Bob".
-
-The first question to ask is "What should happen?" In this case, the user's expectation
-is that after they press "Send", changing the recipient, even if the message has not
-been sent yet, should not impact where the message is ultimately sent. We then need to
-ask what actually happens. Will it print “You said Hello to Alice” or “You said Hello to
-Bob”?
-
-.. reactpy:: _examples/print_chat_message
-
-As it turns out, the code above matches the user's expectation. This is because ReactPy
-keeps the state values fixed within the event handlers defined during a particular
-render. As a result, you don't need to worry about whether state has changed while
-code in an event handler is running.
-
-.. card::
-    :link: ../multiple-state-updates/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    What if you wanted to read the latest state values before the next render? You’ll
-    want to use a state updater function, covered on the next page!
diff --git a/docs/source/guides/creating-interfaces/html-with-reactpy/index.rst b/docs/source/guides/creating-interfaces/html-with-reactpy/index.rst
deleted file mode 100644
index 4a8ba4957..000000000
--- a/docs/source/guides/creating-interfaces/html-with-reactpy/index.rst
+++ /dev/null
@@ -1,131 +0,0 @@
-HTML With ReactPy
-=================
-
-In a typical Python-based web application the responsibility of defining the view along
-with its backing data and logic are distributed between a client and server
-respectively. With ReactPy, both these tasks are centralized in a single place. This is
-done by allowing HTML interfaces to be constructed in Python. Take a look at the two
-code examples below. The first one shows how to make a basic title and todo list using
-standard HTML, the second uses ReactPy in Python, and below is a view of what the HTML
-would look like if displayed:
-
-.. grid:: 1 1 2 2
-    :margin: 0
-    :padding: 0
-
-    .. grid-item::
-
-        .. code-block:: html
-
-            <h1>My Todo List</h1>
-            <ul>
-                <li>Build a cool new app</li>
-                <li>Share it with the world!</li>
-            </ul>
-
-    .. grid-item::
-
-        .. testcode::
-
-            from reactpy import html
-
-            html.h1("My Todo List")
-            html.ul(
-                html.li("Build a cool new app"),
-                html.li("Share it with the world!"),
-            )
-
-    .. grid-item-card::
-        :columns: 12
-
-        .. raw:: html
-
-            <div style="width: 50%; margin: auto;">
-                <h2 style="margin-top: 0px !important;">My Todo List</h2>
-                <ul>
-                    <li>Build a cool new app</li>
-                    <li>Share it with the world!</li>
-                </ul>
-            </div>
-
-What this shows is that you can recreate the same HTML layouts with ReactPy using functions
-from the :mod:`reactpy.html` module. These function share the same names as their
-corresponding HTML tags. For instance, the ``<h1/>`` element above has a similarly named
-:func:`~reactpy.html.h1` function. With that said, while the code above looks similar, it's
-not very useful because we haven't captured the results from these function calls in a
-variable. To do this we need to wrap up the layout above into a single
-:func:`~reactpy.html.div` and assign it to a variable:
-
-.. testcode::
-
-    layout = html.div(
-        html.h1("My Todo List"),
-        html.ul(
-            html.li("Build a cool new app"),
-            html.li("Share it with the world!"),
-        ),
-    )
-
-
-Adding HTML Attributes
-----------------------
-
-That's all well and good, but there's more to HTML than just text. What if we wanted to
-display an image? In HTMl we'd use the ``<img>`` element and add attributes to it order
-to specify a URL to its ``src`` and use some ``style`` to modify and position it:
-
-.. code-block:: html
-
-    <img
-        src="https://picsum.photos/id/237/500/300"
-        class="img-fluid"
-        style="width: 50%; margin-left: 25%;"
-        alt="Billie Holiday"
-        tabindex="0"
-    />
-
-In ReactPy we add these attributes to elements using a dictionary:
-
-.. testcode::
-
-    html.img(
-        {
-            "src": "https://picsum.photos/id/237/500/300",
-            "class_name": "img-fluid",
-            "style": {"width": "50%", "margin_left": "25%"},
-            "alt": "Billie Holiday",
-        }
-    )
-
-.. raw:: html
-
-    <!-- no tabindex since that would ruin accessibility of the page -->
-    <img
-        src="https://picsum.photos/id/237/500/300"
-        class="img-fluid"
-        style="width: 50%; margin-left: 25%;"
-        alt="Billie Holiday"
-    />
-
-There are some notable differences. First, all names in ReactPy use ``snake_case`` instead
-of dash-separated words. For example, ``tabindex`` and ``margin-left`` become
-``tab_index`` and ``margin_left`` respectively. Second, instead of using a string to
-specify the ``style`` attribute, we use a dictionary to describe the CSS properties we
-want to apply to an element. This is done to avoid having to escape quotes and other
-characters in the string. Finally, the ``class`` attribute is renamed to ``class_name``
-to avoid conflicting with the ``class`` keyword in Python.
-
-For full list of supported attributes and differences from HTML, see the
-:ref:`HTML Attributes` reference.
-
-----------
-
-
-.. card::
-    :link: /guides/understanding-reactpy/representing-html
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Dive into the data structures ReactPy uses to represent HTML
diff --git a/docs/source/guides/creating-interfaces/index.rst b/docs/source/guides/creating-interfaces/index.rst
deleted file mode 100644
index 78466eaef..000000000
--- a/docs/source/guides/creating-interfaces/index.rst
+++ /dev/null
@@ -1,128 +0,0 @@
-Creating Interfaces
-===================
-
-.. toctree::
-    :hidden:
-
-    html-with-reactpy/index
-    your-first-components/index
-    rendering-data/index
-
-.. dropdown:: :octicon:`bookmark-fill;2em` What You'll Learn
-    :color: info
-    :animate: fade-in
-    :open:
-
-    .. grid:: 1 2 2 2
-
-        .. grid-item-card:: :octicon:`code-square` HTML with ReactPy
-            :link: html-with-reactpy/index
-            :link-type: doc
-
-            Construct HTML layouts from the basic units of user interface functionality.
-
-        .. grid-item-card:: :octicon:`package` Your First Components
-            :link: your-first-components/index
-            :link-type: doc
-
-            Define reusable building blocks that it easier to construct complex
-            interfaces.
-
-        .. grid-item-card:: :octicon:`database` Rendering Data
-            :link: rendering-data/index
-            :link-type: doc
-
-            Use data to organize and render HTML elements and components.
-
-ReactPy is a Python package for making user interfaces (UI). These interfaces are built
-from small elements of functionality like buttons text and images. ReactPy allows you to
-combine these elements into reusable, nestable :ref:`"components" <your first
-components>`. In the sections that follow you'll learn how these UI elements are created
-and organized into components. Then, you'll use components to customize and
-conditionally display more complex UIs.
-
-
-Section 1: HTML with ReactPy
-----------------------------
-
-In a typical Python-base web application the responsibility of defining the view along
-with its backing data and logic are distributed between a client and server
-respectively. With ReactPy, both these tasks are centralized in a single place. The most
-foundational pilar of this capability is formed by allowing HTML interfaces to be
-constructed in Python. Let's consider the HTML sample below:
-
-.. code-block:: html
-
-    <h1>My Todo List</h1>
-    <ul>
-        <li>Build a cool new app</li>
-        <li>Share it with the world!</li>
-    </ul>
-
-To recreate the same thing in ReactPy you would write:
-
-.. code-block::
-
-    from reactpy import html
-
-    html.div(
-        html.h1("My Todo List"),
-        html.ul(
-            html.li("Design a cool new app"),
-            html.li("Build it"),
-            html.li("Share it with the world!"),
-        )
-    )
-
-.. card::
-    :link: html-with-reactpy/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Construct HTML layouts from the basic units of user interface functionality.
-
-
-Section 2: Your First Components
---------------------------------
-
-The next building block in our journey with ReactPy are components. At their core,
-components are just a normal Python functions that return :ref:`HTML <HTML with ReactPy>`.
-The one special thing about them that we'll concern ourselves with now, is that to
-create them we need to add an ``@component`` `decorator
-<https://realpython.com/primer-on-python-decorators/>`__. To see what this looks like in
-practice we'll quickly make a ``Photo`` component:
-
-.. reactpy:: your-first-components/_examples/simple_photo
-
-.. card::
-    :link: your-first-components/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Define reusable building blocks that it easier to construct complex interfaces.
-
-
-Section 3: Rendering Data
--------------------------
-
-The last pillar of knowledge you need before you can start making :ref:`interactive
-interfaces <adding interactivity>` is the ability to render sections of the UI given a
-collection of data. This will require you to understand how elements which are derived
-from data in this way must be organized with :ref:`"keys" <Organizing Items With Keys>`.
-One case where we might want to do this is if items in a todo list come from a list of
-data that we want to sort and filter:
-
-.. reactpy:: rendering-data/_examples/todo_list_with_keys
-
-.. card::
-    :link: rendering-data/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Use data to organize and render HTML elements and components.
diff --git a/docs/source/guides/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py b/docs/source/guides/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py
deleted file mode 100644
index 8be2b5f30..000000000
--- a/docs/source/guides/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def DataList(items, filter_by_priority=None, sort_by_priority=False):
-    if filter_by_priority is not None:
-        items = [i for i in items if i["priority"] <= filter_by_priority]
-    if sort_by_priority:
-        items = sorted(items, key=lambda i: i["priority"])
-    list_item_elements = [html.li(i["text"]) for i in items]
-    return html.ul(list_item_elements)
-
-
-@component
-def TodoList():
-    tasks = [
-        {"text": "Make breakfast", "priority": 0},
-        {"text": "Feed the dog", "priority": 0},
-        {"text": "Do laundry", "priority": 2},
-        {"text": "Go on a run", "priority": 1},
-        {"text": "Clean the house", "priority": 2},
-        {"text": "Go to the grocery store", "priority": 2},
-        {"text": "Do some coding", "priority": 1},
-        {"text": "Read a book", "priority": 1},
-    ]
-    return html.section(
-        html.h1("My Todo List"),
-        DataList(tasks, filter_by_priority=1, sort_by_priority=True),
-    )
-
-
-run(TodoList)
diff --git a/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_from_list.py b/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_from_list.py
deleted file mode 100644
index 85ba1d79d..000000000
--- a/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_from_list.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def DataList(items):
-    list_item_elements = [html.li(text) for text in items]
-    return html.ul(list_item_elements)
-
-
-@component
-def TodoList():
-    tasks = [
-        "Make breakfast (important)",
-        "Feed the dog (important)",
-        "Do laundry",
-        "Go on a run (important)",
-        "Clean the house",
-        "Go to the grocery store",
-        "Do some coding",
-        "Read a book (important)",
-    ]
-    return html.section(
-        html.h1("My Todo List"),
-        DataList(tasks),
-    )
-
-
-run(TodoList)
diff --git a/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py b/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py
deleted file mode 100644
index 8afd2ae55..000000000
--- a/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def DataList(items, filter_by_priority=None, sort_by_priority=False):
-    if filter_by_priority is not None:
-        items = [i for i in items if i["priority"] <= filter_by_priority]
-    if sort_by_priority:
-        items = sorted(items, key=lambda i: i["priority"])
-    list_item_elements = [html.li({"key": i["id"]}, i["text"]) for i in items]
-    return html.ul(list_item_elements)
-
-
-@component
-def TodoList():
-    tasks = [
-        {"id": 0, "text": "Make breakfast", "priority": 0},
-        {"id": 1, "text": "Feed the dog", "priority": 0},
-        {"id": 2, "text": "Do laundry", "priority": 2},
-        {"id": 3, "text": "Go on a run", "priority": 1},
-        {"id": 4, "text": "Clean the house", "priority": 2},
-        {"id": 5, "text": "Go to the grocery store", "priority": 2},
-        {"id": 6, "text": "Do some coding", "priority": 1},
-        {"id": 7, "text": "Read a book", "priority": 1},
-    ]
-    return html.section(
-        html.h1("My Todo List"),
-        DataList(tasks, filter_by_priority=1, sort_by_priority=True),
-    )
-
-
-run(TodoList)
diff --git a/docs/source/guides/creating-interfaces/rendering-data/index.rst b/docs/source/guides/creating-interfaces/rendering-data/index.rst
deleted file mode 100644
index 8b11ac439..000000000
--- a/docs/source/guides/creating-interfaces/rendering-data/index.rst
+++ /dev/null
@@ -1,297 +0,0 @@
-Rendering Data
-==============
-
-Frequently you need to construct a number of similar components from a collection of
-data. Let's imagine that we want to create a todo list that can be ordered and filtered
-on the priority of each item in the list. To start, we'll take a look at the kind of
-view we'd like to display:
-
-.. code-block:: html
-
-    <ul>
-        <li>Make breakfast (important)</li>
-        <li>Feed the dog (important)</li>
-        <li>Do laundry</li>
-        <li>Go on a run (important)</li>
-        <li>Clean the house</li>
-        <li>Go to the grocery store</li>
-        <li>Do some coding</li>
-        <li>Read a book (important)</li>
-    </ul>
-
-Based on this, our next step in achieving our goal is to break this view down into the
-underlying data that we'd want to use to represent it. The most straightforward way to
-do this would be to just put the text of each ``<li>`` into a list:
-
-.. testcode::
-
-    tasks = [
-        "Make breakfast (important)",
-        "Feed the dog (important)",
-        "Do laundry",
-        "Go on a run (important)",
-        "Clean the house",
-        "Go to the grocery store",
-        "Do some coding",
-        "Read a book (important)",
-    ]
-
-We could then take this list and "render" it into a series of ``<li>`` elements:
-
-.. testcode::
-
-    from reactpy import html
-
-    list_item_elements = [html.li(text) for text in tasks]
-
-This list of elements can then be passed into a parent ``<ul>`` element:
-
-.. testcode::
-
-    list_element = html.ul(list_item_elements)
-
-The last thing we have to do is return this from a component:
-
-.. reactpy:: _examples/todo_from_list
-
-
-Filtering and Sorting Elements
-------------------------------
-
-Our representation of ``tasks`` worked fine to just get them on the screen, but it
-doesn't extend well to the case where we want to filter and order them based on
-priority. Thus, we need to change the data structure we're using to represent our tasks:
-
-.. testcode::
-
-    tasks = [
-        {"text": "Make breakfast", "priority": 0},
-        {"text": "Feed the dog", "priority": 0},
-        {"text": "Do laundry", "priority": 2},
-        {"text": "Go on a run", "priority": 1},
-        {"text": "Clean the house", "priority": 2},
-        {"text": "Go to the grocery store", "priority": 2},
-        {"text": "Do some coding", "priority": 1},
-        {"text": "Read a book", "priority": 1},
-    ]
-
-With this we can now imaging writing some filtering and sorting logic using Python's
-:func:`filter` and :func:`sorted` functions respectively. We'll do this by only
-displaying items whose ``priority`` is less than or equal to some ``filter_by_priority``
-and then ordering the elements based on the ``priority``:
-
-.. testcode::
-
-    filter_by_priority = 1
-    sort_by_priority = True
-
-    filtered_tasks = tasks
-    if filter_by_priority is not None:
-        filtered_tasks = [t for t in filtered_tasks if t["priority"] <= filter_by_priority]
-    if sort_by_priority:
-        filtered_tasks = list(sorted(filtered_tasks, key=lambda t: t["priority"]))
-
-    assert filtered_tasks == [
-        {'text': 'Make breakfast', 'priority': 0},
-        {'text': 'Feed the dog', 'priority': 0},
-        {'text': 'Go on a run', 'priority': 1},
-        {'text': 'Do some coding', 'priority': 1},
-        {'text': 'Read a book', 'priority': 1},
-    ]
-
-We could then add this code to our ``DataList`` component:
-
-.. warning::
-
-    The code below produces a bunch of warnings! Be sure to tead the
-    :ref:`next section <Organizing Items With Keys>` to find out why.
-
-.. reactpy:: _examples/sorted_and_filtered_todo_list
-
-
-Organizing Items With Keys
---------------------------
-
-If you run the examples above :ref:`in debug mode <Running ReactPy in Debug Mode>` you'll
-see the server log a bunch of errors that look something like:
-
-.. code-block:: text
-
-    Key not specified for child in list {'tagName': 'li', 'children': ...}
-
-What this is telling us is that we haven't specified a unique ``key`` for each of the
-items in our todo list. In order to silence this warning we need to expand our data
-structure even further to include a unique ID for each item in our todo list:
-
-.. testcode::
-
-    tasks = [
-        {"id": 0, "text": "Make breakfast", "priority": 0},
-        {"id": 1, "text": "Feed the dog", "priority": 0},
-        {"id": 2, "text": "Do laundry", "priority": 2},
-        {"id": 3, "text": "Go on a run", "priority": 1},
-        {"id": 4, "text": "Clean the house", "priority": 2},
-        {"id": 5, "text": "Go to the grocery store", "priority": 2},
-        {"id": 6, "text": "Do some coding", "priority": 1},
-        {"id": 7, "text": "Read a book", "priority": 1},
-    ]
-
-Then, as we're constructing our ``<li>`` elements we'll declare a ``key`` attribute:
-
-.. code-block::
-
-    list_item_elements = [html.li({"key": t["id"]}, t["text"]) for t in tasks]
-
-This ``key`` tells ReactPy which ``<li>`` element corresponds to which item of data in our
-``tasks`` list. This becomes important if the order or number of items in your list can
-change. In our case, if we decided to change whether we want to ``filter_by_priority``
-or ``sort_by_priority`` the items in our ``<ul>`` element would change. Given this,
-here's how we'd change our component:
-
-.. reactpy:: _examples/todo_list_with_keys
-
-
-Keys for Components
-...................
-
-Thus far we've been talking about passing keys to standard HTML elements. However, this
-principle also applies to components too. Every function decorated with the
-``@component`` decorator automatically gets a ``key`` parameter that operates in the
-exact same way that it does for standard HTML elements:
-
-.. testcode::
-
-    from reactpy import component
-
-
-    @component
-    def ListItem(text):
-        return html.li(text)
-
-    tasks = [
-        {"id": 0, "text": "Make breakfast"},
-        {"id": 1, "text": "Feed the dog"},
-        {"id": 2, "text": "Do laundry"},
-        {"id": 3, "text": "Go on a run"},
-        {"id": 4, "text": "Clean the house"},
-        {"id": 5, "text": "Go to the grocery store"},
-        {"id": 6, "text": "Do some coding"},
-        {"id": 7, "text": "Read a book"},
-    ]
-
-    list_element = [ListItem(t["text"], key=t["id"]) for t in tasks]
-
-
-.. warning::
-
-    The ``key`` argument is reserved for this purpose. Defining a component with a
-    function that has a ``key`` parameter will cause an error:
-
-    .. testcode::
-
-        from reactpy import component
-
-        @component
-        def FunctionWithKeyParam(key):
-            ...
-
-    .. testoutput::
-
-        Traceback (most recent call last):
-        ...
-        TypeError: Component render function ... uses reserved parameter 'key'
-
-
-Rules of Keys
-.............
-
-In order to avoid unexpected behaviors when rendering data with keys, there are a few
-rules that need to be followed. These will ensure that each item of data is associated
-with the correct UI element.
-
-.. dropdown:: Keys may be the same if their elements are not siblings
-    :color: info
-
-    If two elements have different parents in the UI, they can use the same keys.
-
-    .. testcode::
-
-        data_1 = [
-            {"id": 1, "text": "Something"},
-            {"id": 2, "text": "Something else"},
-        ]
-
-        data_2 = [
-            {"id": 1, "text": "Another thing"},
-            {"id": 2, "text": "Yet another thing"},
-        ]
-
-        html.section(
-            html.ul([html.li(data["text"], key=data["id"]) for data in data_1]),
-            html.ul([html.li(data["text"], key=data["id"]) for data in data_2]),
-        )
-
-.. dropdown:: Keys must be unique amongst siblings
-    :color: danger
-
-    Keys must be unique among siblings.
-
-    .. testcode::
-
-        data = [
-            {"id": 1, "text": "Something"},
-            {"id": 2, "text": "Something else"},
-            {"id": 1, "text": "Another thing"},      # BAD: has a duplicated id
-            {"id": 2, "text": "Yet another thing"},  # BAD: has a duplicated id
-        ]
-
-        html.section(
-            html.ul([html.li(data["text"], key=data["id"]) for data in data]),
-        )
-
-.. dropdown:: Keys must be fixed to their data.
-    :color: danger
-
-    Don't generate random values for keys to avoid the warning.
-
-    .. testcode::
-
-        from random import random
-
-        data = [
-            {"id": random(), "text": "Something"},
-            {"id": random(), "text": "Something else"},
-            {"id": random(), "text": "Another thing"},
-            {"id": random(), "text": "Yet another thing"},
-        ]
-
-        html.section(
-            html.ul([html.li(data["text"], key=data["id"]) for data in data]),
-        )
-
-    Doing so will result in unexpected behavior.
-
-Since we've just been working with a small amount of sample data thus far, it was easy
-enough for us to manually add an ``id`` key to each item of data. Often though, we have
-to work with data that already exists. In those cases, how should we pick what value to
-use for each ``key``?
-
-- If your data comes from your database you should use the keys and IDs generated by
-  that database since these are inherently unique. For example, you might use the
-  primary key of records in a relational database.
-
-- If your data is generated and persisted locally (e.g. notes in a note-taking app), use
-  an incrementing counter or :mod:`uuid` from the standard library when creating items.
-
-
-----------
-
-
-.. card::
-    :link: /guides/understanding-reactpy/why-reactpy-needs-keys
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Learn about why ReactPy needs keys in the first place.
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py
deleted file mode 100644
index 1ed3268b6..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Item(name, done):
-    if done:
-        return html.li(name, " ✔")
-    else:
-        return html.li(name)
-
-
-@component
-def TodoList():
-    return html.section(
-        html.h1("My Todo List"),
-        html.ul(
-            Item("Find a cool problem to solve", done=True),
-            Item("Build an app to solve it", done=True),
-            Item("Share that app with the world!", done=False),
-        ),
-    )
-
-
-run(TodoList)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py
deleted file mode 100644
index cd9ab6fc0..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Item(name, done):
-    return html.li(name, " ✔" if done else "")
-
-
-@component
-def TodoList():
-    return html.section(
-        html.h1("My Todo List"),
-        html.ul(
-            Item("Find a cool problem to solve", done=True),
-            Item("Build an app to solve it", done=True),
-            Item("Share that app with the world!", done=False),
-        ),
-    )
-
-
-run(TodoList)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/nested_photos.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/nested_photos.py
deleted file mode 100644
index 96f8531d3..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/nested_photos.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Photo():
-    return html.img(
-        {
-            "src": "https://picsum.photos/id/274/500/300",
-            "style": {"width": "30%"},
-            "alt": "Ray Charles",
-        }
-    )
-
-
-@component
-def Gallery():
-    return html.section(
-        html.h1("Famous Musicians"),
-        Photo(),
-        Photo(),
-        Photo(),
-    )
-
-
-run(Gallery)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/parametrized_photos.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/parametrized_photos.py
deleted file mode 100644
index 665dd8c86..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/parametrized_photos.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Photo(alt_text, image_id):
-    return html.img(
-        {
-            "src": f"https://picsum.photos/id/{image_id}/500/200",
-            "style": {"width": "50%"},
-            "alt": alt_text,
-        }
-    )
-
-
-@component
-def Gallery():
-    return html.section(
-        html.h1("Photo Gallery"),
-        Photo("Landscape", image_id=830),
-        Photo("City", image_id=274),
-        Photo("Puppy", image_id=237),
-    )
-
-
-run(Gallery)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/simple_photo.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/simple_photo.py
deleted file mode 100644
index 94fa6633f..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/simple_photo.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Photo():
-    return html.img(
-        {
-            "src": "https://picsum.photos/id/237/500/300",
-            "style": {"width": "50%"},
-            "alt": "Puppy",
-        }
-    )
-
-
-run(Photo)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/todo_list.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/todo_list.py
deleted file mode 100644
index 2ffd09261..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/todo_list.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def Item(name, done):
-    return html.li(name)
-
-
-@component
-def TodoList():
-    return html.section(
-        html.h1("My Todo List"),
-        html.ul(
-            Item("Find a cool problem to solve", done=True),
-            Item("Build an app to solve it", done=True),
-            Item("Share that app with the world!", done=False),
-        ),
-    )
-
-
-run(TodoList)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_div.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_div.py
deleted file mode 100644
index 58ed79dd8..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_div.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def MyTodoList():
-    return html.div(
-        html.h1("My Todo List"),
-        html.img({"src": "https://picsum.photos/id/0/500/300"}),
-        html.ul(html.li("The first thing I need to do is...")),
-    )
-
-
-run(MyTodoList)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py
deleted file mode 100644
index cc54d8b71..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def MyTodoList():
-    return html._(
-        html.h1("My Todo List"),
-        html.img({"src": "https://picsum.photos/id/0/500/200"}),
-        html.ul(html.li("The first thing I need to do is...")),
-    )
-
-
-run(MyTodoList)
diff --git a/docs/source/guides/creating-interfaces/your-first-components/index.rst b/docs/source/guides/creating-interfaces/your-first-components/index.rst
deleted file mode 100644
index 00b53d1b7..000000000
--- a/docs/source/guides/creating-interfaces/your-first-components/index.rst
+++ /dev/null
@@ -1,134 +0,0 @@
-Your First Components
-=====================
-
-As we learned :ref:`earlier <HTML with ReactPy>` we can use ReactPy to make rich structured
-documents out of standard HTML elements. As these documents become larger and more
-complex though, working with these tiny UI elements can become difficult. When this
-happens, ReactPy allows you to group these elements together info "components". These
-components can then be reused throughout your application.
-
-
-Defining a Component
---------------------
-
-At their core, components are just normal Python functions that return HTML. To define a
-component you just need to add a ``@component`` `decorator
-<https://realpython.com/primer-on-python-decorators/>`__ to a function. Functions
-decorator in this way are known as **render function** and, by convention, we name them
-like classes - with ``CamelCase``. So consider what we would do if we wanted to write,
-and then :ref:`display <Running ReactPy>` a ``Photo`` component:
-
-.. reactpy:: _examples/simple_photo
-
-.. warning::
-
-    If we had not decorated our ``Photo``'s render function with the ``@component``
-    decorator, the server would start, but as soon as we tried to view the page it would
-    be blank. The servers logs would then indicate:
-
-    .. code-block:: text
-
-        TypeError: Expected a ComponentType, not dict.
-
-
-Using a Component
------------------
-
-Having defined our ``Photo`` component we can now nest it inside of other components. We
-can define a "parent" ``Gallery`` component that returns one or more ``Profile``
-components. This is part of what makes components so powerful - you can define a
-component once and use it wherever and however you need to:
-
-.. reactpy:: _examples/nested_photos
-
-
-Return a Single Root Element
-----------------------------
-
-Components must return a "single root element". That one root element may have children,
-but you cannot for example, return a list of element from a component and expect it to
-be rendered correctly. If you want to return multiple elements you must wrap them in
-something like a :func:`html.div <reactpy.html.div>`:
-
-.. reactpy:: _examples/wrap_in_div
-
-If don't want to add an extra ``div`` you can use a "fragment" instead with the
-:func:`html._ <reactpy.html._>` function:
-
-.. reactpy:: _examples/wrap_in_fragment
-
-Fragments allow you to group elements together without leaving any trace in the UI. For
-example, the first code sample written with ReactPy will produce the second HTML code
-block:
-
-.. grid:: 1 2 2 2
-    :margin: 0
-    :padding: 0
-
-    .. grid-item::
-
-        .. testcode::
-
-            from reactpy import html
-
-            html.ul(
-                html._(
-                    html.li("Group 1 Item 1"),
-                    html.li("Group 1 Item 2"),
-                    html.li("Group 1 Item 3"),
-                ),
-                html._(
-                    html.li("Group 2 Item 1"),
-                    html.li("Group 2 Item 2"),
-                    html.li("Group 2 Item 3"),
-                )
-            )
-
-    .. grid-item::
-
-        .. code-block:: html
-
-            <ul>
-              <li>Group 1 Item 1</li>
-              <li>Group 1 Item 2</li>
-              <li>Group 1 Item 3</li>
-              <li>Group 2 Item 1</li>
-              <li>Group 2 Item 2</li>
-              <li>Group 2 Item 3</li>
-            </ul>
-
-
-
-Parametrizing Components
-------------------------
-
-Since components are just regular functions, you can add parameters to them. This allows
-parent components to pass information to child components. Where standard HTML elements
-are parametrized by dictionaries, since components behave like typical functions you can
-give them positional and keyword arguments as you would normally:
-
-.. reactpy:: _examples/parametrized_photos
-
-
-Conditional Rendering
----------------------
-
-Your components will often need to display different things depending on different
-conditions. Let's imagine that we had a basic todo list where only some of the items
-have been completed. Below we have a basic implementation for such a list except that
-the ``Item`` component doesn't change based on whether it's ``done``:
-
-.. reactpy:: _examples/todo_list
-
-Let's imagine that we want to add a ✔ to the items which have been marked ``done=True``.
-One way to do this might be to write an ``if`` statement where we return one ``li``
-element if the item is ``done`` and a different one if it's not:
-
-.. reactpy:: _examples/bad_conditional_todo_list
-
-As you can see this accomplishes our goal! However, notice how similar ``html.li(name, "
-✔")`` and ``html.li(name)`` are. While in this case it isn't especially harmful, we
-could make our code a little easier to read and maintain by using an "inline" ``if``
-statement.
-
-.. reactpy:: _examples/good_conditional_todo_list
diff --git a/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py b/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py
deleted file mode 100644
index 3ad4dac5b..000000000
--- a/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from reactpy import component, run, web
-
-mui = web.module_from_template(
-    "react@^17.0.0",
-    "@material-ui/core@4.12.4",
-    fallback="⌛",
-)
-Button = web.export(mui, "Button")
-
-
-@component
-def HelloWorld():
-    return Button({"color": "primary", "variant": "contained"}, "Hello World!")
-
-
-run(HelloWorld)
diff --git a/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py b/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py
deleted file mode 100644
index 3fc684005..000000000
--- a/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py
+++ /dev/null
@@ -1,30 +0,0 @@
-import json
-
-import reactpy
-
-mui = reactpy.web.module_from_template(
-    "react@^17.0.0",
-    "@material-ui/core@4.12.4",
-    fallback="⌛",
-)
-Button = reactpy.web.export(mui, "Button")
-
-
-@reactpy.component
-def ViewButtonEvents():
-    event, set_event = reactpy.hooks.use_state(None)
-
-    return reactpy.html.div(
-        Button(
-            {
-                "color": "primary",
-                "variant": "contained",
-                "onClick": lambda event: set_event(event),
-            },
-            "Click Me!",
-        ),
-        reactpy.html.pre(json.dumps(event, indent=2)),
-    )
-
-
-reactpy.run(ViewButtonEvents)
diff --git a/docs/source/guides/escape-hatches/_examples/super_simple_chart/main.py b/docs/source/guides/escape-hatches/_examples/super_simple_chart/main.py
deleted file mode 100644
index 4640785f8..000000000
--- a/docs/source/guides/escape-hatches/_examples/super_simple_chart/main.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from pathlib import Path
-
-from reactpy import component, run, web
-
-file = Path(__file__).parent / "super-simple-chart.js"
-ssc = web.module_from_file("super-simple-chart", file, fallback="⌛")
-SuperSimpleChart = web.export(ssc, "SuperSimpleChart")
-
-
-@component
-def App():
-    return SuperSimpleChart(
-        {
-            "data": [
-                {"x": 1, "y": 2},
-                {"x": 2, "y": 4},
-                {"x": 3, "y": 7},
-                {"x": 4, "y": 3},
-                {"x": 5, "y": 5},
-                {"x": 6, "y": 9},
-                {"x": 7, "y": 6},
-            ],
-            "height": 300,
-            "width": 500,
-            "color": "royalblue",
-            "lineWidth": 4,
-            "axisColor": "silver",
-        }
-    )
-
-
-run(App)
diff --git a/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js b/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js
deleted file mode 100644
index 486e5c363..000000000
--- a/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import { h, render } from "https://unpkg.com/preact?module";
-import htm from "https://unpkg.com/htm?module";
-
-const html = htm.bind(h);
-
-export function bind(node, config) {
-  return {
-    create: (component, props, children) => h(component, props, ...children),
-    render: (element) => render(element, node),
-    unmount: () => render(null, node),
-  };
-}
-
-export function SuperSimpleChart(props) {
-  const data = props.data;
-  const lastDataIndex = data.length - 1;
-
-  const options = {
-    height: props.height || 100,
-    width: props.width || 100,
-    color: props.color || "blue",
-    lineWidth: props.lineWidth || 2,
-    axisColor: props.axisColor || "black",
-  };
-
-  const xData = data.map((point) => point.x);
-  const yData = data.map((point) => point.y);
-
-  const domain = {
-    xMin: Math.min(...xData),
-    xMax: Math.max(...xData),
-    yMin: Math.min(...yData),
-    yMax: Math.max(...yData),
-  };
-
-  return html`<svg
-    width="${options.width}px"
-    height="${options.height}px"
-    viewBox="0 0 ${options.width} ${options.height}"
-  >
-    ${makePath(props, domain, data, options)} ${makeAxis(props, options)}
-  </svg>`;
-}
-
-function makePath(props, domain, data, options) {
-  const { xMin, xMax, yMin, yMax } = domain;
-  const { width, height } = options;
-  const getSvgX = (x) => ((x - xMin) / (xMax - xMin)) * width;
-  const getSvgY = (y) => height - ((y - yMin) / (yMax - yMin)) * height;
-
-  let pathD =
-    `M ${getSvgX(data[0].x)} ${getSvgY(data[0].y)} ` +
-    data.map(({ x, y }, i) => `L ${getSvgX(x)} ${getSvgY(y)}`).join(" ");
-
-  return html`<path
-    d="${pathD}"
-    style=${{
-      stroke: options.color,
-      strokeWidth: options.lineWidth,
-      fill: "none",
-    }}
-  />`;
-}
-
-function makeAxis(props, options) {
-  return html`<g>
-    <line
-      x1="0"
-      y1=${options.height}
-      x2=${options.width}
-      y2=${options.height}
-      style=${{ stroke: options.axisColor, strokeWidth: options.lineWidth * 2 }}
-    />
-    <line
-      x1="0"
-      y1="0"
-      x2="0"
-      y2=${options.height}
-      style=${{ stroke: options.axisColor, strokeWidth: options.lineWidth * 2 }}
-    />
-  </g>`;
-}
diff --git a/docs/source/guides/escape-hatches/distributing-javascript.rst b/docs/source/guides/escape-hatches/distributing-javascript.rst
deleted file mode 100644
index 9eb478965..000000000
--- a/docs/source/guides/escape-hatches/distributing-javascript.rst
+++ /dev/null
@@ -1,307 +0,0 @@
-Distributing Javascript
-=======================
-
-There are two ways that you can distribute your :ref:`Custom Javascript Components`:
-
-- Using a CDN_
-- In a Python package via PyPI_
-
-These options are not mutually exclusive though, and it may be beneficial to support
-both options. For example, if you upload your Javascript components to NPM_ and also
-bundle your Javascript inside a Python package, in principle your users can determine
-which work best for them. Regardless though, either you or, if you give then the choice,
-your users, will have to consider the tradeoffs of either approach.
-
-- :ref:`Distributing Javascript via CDN_` - Most useful in production-grade applications
-  where its assumed the user has a network connection. In this scenario a CDN's `edge
-  network <https://en.wikipedia.org/wiki/Edge_computing>`__ can be used to bring the
-  Javascript source closer to the user in order to reduce page load times.
-
-- :ref:`Distributing Javascript via PyPI_` - This method is ideal for local usage since
-  the user can server all the Javascript components they depend on from their computer
-  without requiring a network connection.
-
-
-Distributing Javascript via CDN_
---------------------------------
-
-Under this approach, to simplify these instructions, we're going to ignore the problem
-of distributing the Javascript since that must be handled by your CDN. For open source
-or personal projects, a CDN like https://unpkg.com/ makes things easy by automatically
-preparing any package that's been uploaded to NPM_. If you need to roll with your own
-private CDN, this will likely be more complicated.
-
-In either case though, on the Python side, things are quite simple. You need only pass
-the URL where your package can be found to :func:`~reactpy.web.module.module_from_url`
-where you can then load any of its exports:
-
-.. code-block::
-
-    import reactpy
-
-    your_module = ido.web.module_from_url("https://some.cdn/your-module")
-    YourComponent = reactpy.web.export(your_module, "YourComponent")
-
-
-Distributing Javascript via PyPI_
----------------------------------
-
-This can be most easily accomplished by using the `template repository`_ that's been
-purpose-built for this. However, to get a better sense for its inner workings, we'll
-briefly look at what's required. At a high level, we must consider how to...
-
-1. bundle your Javascript into an `ECMAScript Module`)
-2. include that Javascript bundle in a Python package
-3. use it as a component in your application using ReactPy
-
-In the descriptions to follow we'll be assuming that:
-
-- NPM_ is the Javascript package manager
-- The components are implemented with React_
-- Rollup_ bundles the Javascript module
-- Setuptools_ builds the Python package
-
-To start, let's take a look at the file structure we'll be building:
-
-.. code-block:: text
-
-    your-project
-    |-- js
-    |   |-- src
-    |   |   \-- index.js
-    |   |-- package.json
-    |   \-- rollup.config.js
-    |-- your_python_package
-    |   |-- __init__.py
-    |   \-- widget.py
-    |-- Manifest.in
-    |-- pyproject.toml
-    \-- setup.py
-
-``index.js`` should contain the relevant exports (see
-:ref:`Custom JavaScript Components` for more info):
-
-.. code-block:: javascript
-
-    import * as React from "react";
-    import * as ReactDOM from "react-dom";
-
-    export function bind(node, config) {
-        return {
-            create: (component, props, children) =>
-                React.createElement(component, props, ...children),
-            render: (element) => ReactDOM.render(element, node),
-            unmount: () => ReactDOM.unmountComponentAtNode(node),
-        };
-    }
-
-    // exports for your components
-    export YourFirstComponent(props) {...};
-    export YourSecondComponent(props) {...};
-    export YourThirdComponent(props) {...};
-
-
-Your ``package.json`` should include the following:
-
-.. code-block:: python
-
-    {
-      "name": "YOUR-PACKAGE-NAME",
-      "scripts": {
-        "build": "rollup --config",
-        ...
-      },
-      "devDependencies": {
-        "rollup": "^2.35.1",
-        "rollup-plugin-commonjs": "^10.1.0",
-        "rollup-plugin-node-resolve": "^5.2.0",
-        "rollup-plugin-replace": "^2.2.0",
-        ...
-      },
-      "dependencies": {
-        "react": "^17.0.1",
-        "react-dom": "^17.0.1",
-        "@reactpy/client": "^0.8.5",
-        ...
-      },
-      ...
-    }
-
-Getting a bit more in the weeds now, your ``rollup.config.js`` file should be designed
-such that it drops an ES Module at ``your-project/your_python_package/bundle.js`` since
-we'll be writing ``widget.py`` under that assumption.
-
-.. note::
-
-    Don't forget to ignore this ``bundle.js`` file when committing code (with a
-    ``.gitignore`` if you're using Git) since it can always rebuild from the raw
-    Javascript source in ``your-project/js``.
-
-.. code-block:: javascript
-
-    import resolve from "rollup-plugin-node-resolve";
-    import commonjs from "rollup-plugin-commonjs";
-    import replace from "rollup-plugin-replace";
-
-    export default {
-      input: "src/index.js",
-      output: {
-        file: "../your_python_package/bundle.js",
-        format: "esm",
-      },
-      plugins: [
-        resolve(),
-        commonjs(),
-        replace({
-          "process.env.NODE_ENV": JSON.stringify("production"),
-        }),
-      ]
-    };
-
-Your ``widget.py`` file should then load the neighboring bundle file using
-:func:`~reactpy.web.module.module_from_file`. Then components from that bundle can be
-loaded with :func:`~reactpy.web.module.export`.
-
-.. code-block::
-
-    from pathlib import Path
-
-    import reactpy
-
-    _BUNDLE_PATH = Path(__file__).parent / "bundle.js"
-    _WEB_MODULE = reactpy.web.module_from_file(
-        # Note that this is the same name from package.json - this must be globally
-        # unique since it must share a namespace with all other javascript packages.
-        name="YOUR-PACKAGE-NAME",
-        file=_BUNDLE_PATH,
-        # What to temporarily display while the module is being loaded
-        fallback="Loading...",
-    )
-
-    # Your module must provide a named export for YourFirstComponent
-    YourFirstComponent = reactpy.web.export(_WEB_MODULE, "YourFirstComponent")
-
-    # It's possible to export multiple components at once
-    YourSecondComponent, YourThirdComponent = reactpy.web.export(
-        _WEB_MODULE, ["YourSecondComponent", "YourThirdComponent"]
-    )
-
-.. note::
-
-    When :data:`reactpy.config.REACTPY_DEBUG_MODE` is active, named exports will be validated.
-
-The remaining files that we need to create are concerned with creating a Python package.
-We won't cover all the details here, so refer to the Setuptools_ documentation for
-more information. With that said, the first file to fill out is `pyproject.toml` since
-we need to declare what our build tool is (in this case Setuptools):
-
-.. code-block:: toml
-
-    [build-system]
-    requires = ["setuptools>=40.8.0", "wheel"]
-    build-backend = "setuptools.build_meta"
-
-Then, we can create the ``setup.py`` file which uses Setuptools. This will differ
-substantially from a normal ``setup.py`` file since, as part of the build process we'll
-need to use NPM to bundle our Javascript. This requires customizing some of the build
-commands in Setuptools like ``build``, ``sdist``, and ``develop``:
-
-.. code-block:: python
-
-    import subprocess
-    from pathlib import Path
-
-    from setuptools import setup, find_packages
-    from distutils.command.build import build
-    from distutils.command.sdist import sdist
-    from setuptools.command.develop import develop
-
-    PACKAGE_SPEC = {}  # gets passed to setup() at the end
-
-
-    # -----------------------------------------------------------------------------
-    # General Package Info
-    # -----------------------------------------------------------------------------
-
-
-    PACKAGE_NAME = "your_python_package"
-
-    PACKAGE_SPEC.update(
-        name=PACKAGE_NAME,
-        version="0.0.1",
-        packages=find_packages(exclude=["tests*"]),
-        classifiers=["Framework :: ReactPy", ...],
-        keywords=["ReactPy", "components", ...],
-        # install ReactPy with this package
-        install_requires=["reactpy"],
-        # required in order to include static files like bundle.js using MANIFEST.in
-        include_package_data=True,
-        # we need access to the file system, so cannot be run from a zip file
-        zip_safe=False,
-    )
-
-
-    # ----------------------------------------------------------------------------
-    # Build Javascript
-    # ----------------------------------------------------------------------------
-
-
-    # basic paths used to gather files
-    PROJECT_ROOT = Path(__file__).parent
-    PACKAGE_DIR = PROJECT_ROOT / PACKAGE_NAME
-    JS_DIR = PROJECT_ROOT / "js"
-
-
-    def build_javascript_first(cls):
-        class Command(cls):
-            def run(self):
-                for cmd_str in ["npm install", "npm run build"]:
-                    subprocess.run(cmd_str.split(), cwd=str(JS_DIR), check=True)
-                super().run()
-
-        return Command
-
-
-    package["cmdclass"] = {
-        "sdist": build_javascript_first(sdist),
-        "build": build_javascript_first(build),
-        "develop": build_javascript_first(develop),
-    }
-
-
-    # -----------------------------------------------------------------------------
-    # Run It
-    # -----------------------------------------------------------------------------
-
-
-    if __name__ == "__main__":
-        setup(**package)
-
-
-Finally, since we're using ``include_package_data`` you'll need a MANIFEST.in_ file that
-includes ``bundle.js``:
-
-.. code-block:: text
-
-    include your_python_package/bundle.js
-
-And that's it! While this might seem like a lot of work, you're always free to start
-creating your custom components using the provided `template repository`_ so you can get
-up and running as quickly as possible.
-
-
-.. Links
-.. =====
-
-.. _NPM: https://www.npmjs.com
-.. _install NPM: https://www.npmjs.com/get-npm
-.. _CDN: https://en.wikipedia.org/wiki/Content_delivery_network
-.. _PyPI: https://pypi.org/
-.. _template repository: https://github.com/reactive-python/reactpy-js-component-template
-.. _web module: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
-.. _Rollup: https://rollupjs.org/guide/en/
-.. _Webpack: https://webpack.js.org/
-.. _Setuptools: https://setuptools.readthedocs.io/en/latest/userguide/index.html
-.. _ECMAScript Module: https://tc39.es/ecma262/#sec-modules
-.. _React: https://reactjs.org
-.. _MANIFEST.in: https://packaging.python.org/guides/using-manifest-in/
diff --git a/docs/source/guides/escape-hatches/index.rst b/docs/source/guides/escape-hatches/index.rst
deleted file mode 100644
index 3ef1b7122..000000000
--- a/docs/source/guides/escape-hatches/index.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-Escape Hatches
-==============
-
-.. toctree::
-    :hidden:
-
-    javascript-components
-    distributing-javascript
-    using-a-custom-backend
-    using-a-custom-client
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/escape-hatches/javascript-components.rst b/docs/source/guides/escape-hatches/javascript-components.rst
deleted file mode 100644
index f0a71b6b7..000000000
--- a/docs/source/guides/escape-hatches/javascript-components.rst
+++ /dev/null
@@ -1,146 +0,0 @@
-.. _Javascript Component:
-
-Javascript Components
-=====================
-
-While ReactPy is a great tool for displaying HTML and responding to browser events with
-pure Python, there are other projects which already allow you to do this inside
-`Jupyter Notebooks <https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Basics.html>`__
-or in standard
-`web apps <https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93?gi=54b835a2fcce>`__.
-The real power of ReactPy comes from its ability to seamlessly leverage the existing
-Javascript ecosystem. This can be accomplished in different ways for different reasons:
-
-.. list-table::
-    :header-rows: 1
-
-    *   - Integration Method
-        - Use Case
-
-    *   - :ref:`Dynamically Loaded Components`
-        - You want to **quickly experiment** with ReactPy and the Javascript ecosystem.
-
-    *   - :ref:`Custom Javascript Components`
-        - You want to create polished software that can be **easily shared** with others.
-
-
-.. _Dynamically Loaded Component:
-
-Dynamically Loaded Components
------------------------------
-
-.. note::
-
-    This method is not recommended in production systems - see :ref:`Distributing
-    Javascript` for more info. Instead, it's best used during exploratory phases of
-    development.
-
-ReactPy makes it easy to draft your code when you're in the early stages of development by
-using a CDN_ to dynamically load Javascript packages on the fly. In this example we'll
-be using the ubiquitous React-based UI framework `Material UI`_.
-
-.. reactpy:: _examples/material_ui_button_no_action
-
-So now that we can display a Material UI Button we probably want to make it do
-something. Thankfully there's nothing new to learn here, you can pass event handlers to
-the button just as you did when :ref:`getting started <responding to events>`. Thus, all
-we need to do is add an ``onClick`` handler to the component:
-
-.. reactpy:: _examples/material_ui_button_on_click
-
-
-.. _Custom Javascript Component:
-
-Custom Javascript Components
-----------------------------
-
-For projects that will be shared with others, we recommend bundling your Javascript with
-Rollup_ or Webpack_ into a `web module`_. ReactPy also provides a `template repository`_
-that can be used as a blueprint to build a library of React components.
-
-To work as intended, the Javascript bundle must export a function ``bind()`` that
-adheres to the following interface:
-
-.. code-block:: typescript
-
-    type EventData = {
-        target: string;
-        data: Array<any>;
-    }
-
-    type LayoutContext = {
-        sendEvent(data: EventData) => void;
-        loadImportSource(source: string, sourceType: "NAME" | "URL") => Module;
-    }
-
-    type bind = (node: HTMLElement, context: LayoutContext) => ({
-        create(type: any, props: Object, children: Array<any>): any;
-        render(element): void;
-        unmount(): void;
-    });
-
-.. note::
-
-    - ``node`` is the ``HTMLElement`` that ``render()`` should mount to.
-
-    - ``context`` can send events back to the server and load "import sources"
-      (like a custom component module).
-
-    - ``type`` is a named export of the current module, or a string (e.g. ``"div"``,
-      ``"button"``, etc.)
-
-    - ``props`` is an object containing attributes and callbacks for the given
-      ``component``.
-
-    - ``children`` is an array of elements which were constructed by recursively calling
-      ``create``.
-
-The interface returned by ``bind()`` can be thought of as being similar to that of
-React.
-
-- ``create`` ➜ |React.createElement|_
-- ``render`` ➜ |ReactDOM.render|_
-- ``unmount`` ➜ |ReactDOM.unmountComponentAtNode|_
-
-.. |React.createElement| replace:: ``React.createElement``
-.. _React.createElement: https://reactjs.org/docs/react-api.html#createelement
-
-.. |ReactDOM.render| replace:: ``ReactDOM.render``
-.. _ReactDOM.render: https://reactjs.org/docs/react-dom.html#render
-
-.. |ReactDOM.unmountComponentAtNode| replace:: ``ReactDOM.unmountComponentAtNode``
-.. _ReactDOM.unmountComponentAtNode: https://reactjs.org/docs/react-api.html#createelement
-
-It will be used in the following manner:
-
-.. code-block:: javascript
-
-    // once on mount
-    const binding = bind(node, context);
-
-    // on every render
-    let element = binding.create(type, props, children)
-    binding.render(element);
-
-    // once on unmount
-    binding.unmount();
-
-The simplest way to try this out yourself though, is to hook in a simple hand-crafted
-Javascript module that has the requisite interface. In the example to follow we'll
-create a very basic SVG line chart. The catch though is that we are limited to using
-Javascript that can run directly in the browser. This means we can't use fancy syntax
-like `JSX <https://reactjs.org/docs/introducing-jsx.html>`__ and instead will use
-`htm <https://github.com/developit/htm>`__ to simulate JSX in plain Javascript.
-
-.. reactpy:: _examples/super_simple_chart
-
-
-.. Links
-.. =====
-
-.. _Material UI: https://material-ui.com/
-.. _CDN: https://en.wikipedia.org/wiki/Content_delivery_network
-.. _template repository: https://github.com/reactive-python/reactpy-js-component-template
-.. _web module: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
-.. _Rollup: https://rollupjs.org/guide/en/
-.. _Webpack: https://webpack.js.org/
diff --git a/docs/source/guides/escape-hatches/using-a-custom-backend.rst b/docs/source/guides/escape-hatches/using-a-custom-backend.rst
deleted file mode 100644
index f9d21208a..000000000
--- a/docs/source/guides/escape-hatches/using-a-custom-backend.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. _Writing Your Own Backend:
-.. _Using a Custom Backend:
-
-Using a Custom Backend 🚧
-=========================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/escape-hatches/using-a-custom-client.rst b/docs/source/guides/escape-hatches/using-a-custom-client.rst
deleted file mode 100644
index 95de23e59..000000000
--- a/docs/source/guides/escape-hatches/using-a-custom-client.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. _Writing Your Own Client:
-.. _Using a Custom Client:
-
-Using a Custom Client 🚧
-========================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/getting-started/_examples/debug_error_example.py b/docs/source/guides/getting-started/_examples/debug_error_example.py
deleted file mode 100644
index dd0b212ab..000000000
--- a/docs/source/guides/getting-started/_examples/debug_error_example.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def App():
-    return html.div(GoodComponent(), BadComponent())
-
-
-@component
-def GoodComponent():
-    return html.p("This component rendered successfully")
-
-
-@component
-def BadComponent():
-    msg = "This component raised an error"
-    raise RuntimeError(msg)
-
-
-run(App)
diff --git a/docs/source/guides/getting-started/_examples/hello_world.py b/docs/source/guides/getting-started/_examples/hello_world.py
deleted file mode 100644
index f38d9e38f..000000000
--- a/docs/source/guides/getting-started/_examples/hello_world.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from reactpy import component, html, run
-
-
-@component
-def App():
-    return html.h1("Hello, world!")
-
-
-run(App)
diff --git a/docs/source/guides/getting-started/_examples/run_fastapi.py b/docs/source/guides/getting-started/_examples/run_fastapi.py
deleted file mode 100644
index bb02e9d6a..000000000
--- a/docs/source/guides/getting-started/_examples/run_fastapi.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# :lines: 11-
-
-from reactpy import run
-from reactpy.backend import fastapi as fastapi_server
-
-# the run() function is the entry point for examples
-fastapi_server.configure = lambda _, cmpt: run(cmpt)
-
-
-from fastapi import FastAPI
-
-from reactpy import component, html
-from reactpy.backend.fastapi import configure
-
-
-@component
-def HelloWorld():
-    return html.h1("Hello, world!")
-
-
-app = FastAPI()
-configure(app, HelloWorld)
diff --git a/docs/source/guides/getting-started/_examples/run_flask.py b/docs/source/guides/getting-started/_examples/run_flask.py
deleted file mode 100644
index f98753784..000000000
--- a/docs/source/guides/getting-started/_examples/run_flask.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# :lines: 11-
-
-from reactpy import run
-from reactpy.backend import flask as flask_server
-
-# the run() function is the entry point for examples
-flask_server.configure = lambda _, cmpt: run(cmpt)
-
-
-from flask import Flask
-
-from reactpy import component, html
-from reactpy.backend.flask import configure
-
-
-@component
-def HelloWorld():
-    return html.h1("Hello, world!")
-
-
-app = Flask(__name__)
-configure(app, HelloWorld)
diff --git a/docs/source/guides/getting-started/_examples/run_sanic.py b/docs/source/guides/getting-started/_examples/run_sanic.py
deleted file mode 100644
index 1dae9f6e0..000000000
--- a/docs/source/guides/getting-started/_examples/run_sanic.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# :lines: 11-
-
-from reactpy import run
-from reactpy.backend import sanic as sanic_server
-
-# the run() function is the entry point for examples
-sanic_server.configure = lambda _, cmpt: run(cmpt)
-
-
-from sanic import Sanic
-
-from reactpy import component, html
-from reactpy.backend.sanic import configure
-
-
-@component
-def HelloWorld():
-    return html.h1("Hello, world!")
-
-
-app = Sanic("MyApp")
-configure(app, HelloWorld)
-
-
-if __name__ == "__main__":
-    app.run(port=8000)
diff --git a/docs/source/guides/getting-started/_examples/run_starlette.py b/docs/source/guides/getting-started/_examples/run_starlette.py
deleted file mode 100644
index 966b9ef77..000000000
--- a/docs/source/guides/getting-started/_examples/run_starlette.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# :lines: 11-
-
-from reactpy import run
-from reactpy.backend import starlette as starlette_server
-
-# the run() function is the entry point for examples
-starlette_server.configure = lambda _, cmpt: run(cmpt)
-
-
-from starlette.applications import Starlette
-
-from reactpy import component, html
-from reactpy.backend.starlette import configure
-
-
-@component
-def HelloWorld():
-    return html.h1("Hello, world!")
-
-
-app = Starlette()
-configure(app, HelloWorld)
diff --git a/docs/source/guides/getting-started/_examples/run_tornado.py b/docs/source/guides/getting-started/_examples/run_tornado.py
deleted file mode 100644
index b86126e63..000000000
--- a/docs/source/guides/getting-started/_examples/run_tornado.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# :lines: 11-
-
-from reactpy import run
-from reactpy.backend import tornado as tornado_server
-
-# the run() function is the entry point for examples
-tornado_server.configure = lambda _, cmpt: run(cmpt)
-
-
-import tornado.ioloop
-import tornado.web
-
-from reactpy import component, html
-from reactpy.backend.tornado import configure
-
-
-@component
-def HelloWorld():
-    return html.h1("Hello, world!")
-
-
-def make_app():
-    app = tornado.web.Application()
-    configure(app, HelloWorld)
-    return app
-
-
-if __name__ == "__main__":
-    app = make_app()
-    app.listen(8000)
-    tornado.ioloop.IOLoop.current().start()
diff --git a/docs/source/guides/getting-started/_examples/sample_app.py b/docs/source/guides/getting-started/_examples/sample_app.py
deleted file mode 100644
index a1cc34e6d..000000000
--- a/docs/source/guides/getting-started/_examples/sample_app.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import reactpy
-
-reactpy.run(reactpy.sample.SampleApp)
diff --git a/docs/source/guides/getting-started/_static/embed-doc-ex.html b/docs/source/guides/getting-started/_static/embed-doc-ex.html
deleted file mode 100644
index 589cb5d80..000000000
--- a/docs/source/guides/getting-started/_static/embed-doc-ex.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<div id="reactpy-app" />
-<script type="module">
-  import { mountLayoutWithWebSocket } from "https://esm.sh/@reactpy/client";
-  mountLayoutWithWebSocket(
-    document.getElementById("reactpy-app"),
-    "wss://reactpy.dev/_reactpy/stream?view_id=todo"
-  );
-</script>
diff --git a/docs/source/guides/getting-started/_static/embed-reactpy-view/index.html b/docs/source/guides/getting-started/_static/embed-reactpy-view/index.html
deleted file mode 100644
index 146d715e4..000000000
--- a/docs/source/guides/getting-started/_static/embed-reactpy-view/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="UTF-8" />
-    <title>Example App</title>
-  </head>
-  <body>
-    <h1>This is an Example App</h1>
-    <p>Just below is an embedded ReactPy view...</p>
-    <div id="reactpy-app" />
-    <script type="module">
-      import {
-        mountWithLayoutServer,
-        LayoutServerInfo,
-      } from "https://esm.sh/@reactpy/client@0.38.0";
-
-      const serverInfo = new LayoutServerInfo({
-        host: document.location.hostname,
-        port: document.location.port,
-        path: "_reactpy",
-        query: queryParams.user.toString(),
-        secure: document.location.protocol == "https:",
-      });
-
-      mountLayoutWithWebSocket(
-        document.getElementById("reactpy-app"),
-        serverInfo
-      );
-    </script>
-  </body>
-</html>
diff --git a/docs/source/guides/getting-started/_static/embed-reactpy-view/main.py b/docs/source/guides/getting-started/_static/embed-reactpy-view/main.py
deleted file mode 100644
index 6e3687f27..000000000
--- a/docs/source/guides/getting-started/_static/embed-reactpy-view/main.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from sanic import Sanic
-from sanic.response import file
-
-from reactpy import component, html
-from reactpy.backend.sanic import Options, configure
-
-app = Sanic("MyApp")
-
-
-@app.route("/")
-async def index(request):
-    return await file("index.html")
-
-
-@component
-def ReactPyView():
-    return html.code("This text came from an ReactPy App")
-
-
-configure(app, ReactPyView, Options(url_prefix="/_reactpy"))
-
-app.run(host="127.0.0.1", port=5000)
diff --git a/docs/source/guides/getting-started/_static/embed-reactpy-view/screenshot.png b/docs/source/guides/getting-started/_static/embed-reactpy-view/screenshot.png
deleted file mode 100644
index 7439c83cff03c27cbaf3727d190a5e67a4bb90b5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13161
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
HMnV4vwf$3`

diff --git a/docs/source/guides/getting-started/_static/logo-django.svg b/docs/source/guides/getting-started/_static/logo-django.svg
deleted file mode 100644
index 1538f0817..000000000
--- a/docs/source/guides/getting-started/_static/logo-django.svg
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
-	<!ENTITY ns_svg "http://www.w3.org/2000/svg">
-	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg  version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="436.505" height="152.503"
-	 viewBox="0 0 436.505 152.503" overflow="visible" enable-background="new 0 0 436.505 152.503" xml:space="preserve">
-<g>
-	<g>
-		<path fill="#092E20" d="M51.464,0h23.872v110.496c-12.246,2.325-21.237,3.255-31.002,3.255C15.191,113.75,0,100.576,0,75.308
-			c0-24.337,16.122-40.147,41.078-40.147c3.875,0,6.82,0.309,10.386,1.239V0z M51.464,55.62c-2.79-0.929-5.115-1.239-8.06-1.239
-			c-12.091,0-19.067,7.441-19.067,20.461c0,12.712,6.666,19.687,18.912,19.687c2.634,0,4.805-0.155,8.215-0.619V55.62z"/>
-		<path fill="#092E20" d="M113.312,36.865v55.338c0,19.067-1.395,28.212-5.58,36.118c-3.876,7.597-8.992,12.401-19.532,17.672
-			l-22.167-10.541c10.541-4.96,15.656-9.299,18.911-15.967c3.411-6.82,4.497-14.726,4.497-35.497V36.865H113.312z M89.441,0.127
-			h23.871v24.492H89.441V0.127z"/>
-		<path fill="#092E20" d="M127.731,42.29c10.542-4.959,20.617-7.129,31.623-7.129c12.246,0,20.306,3.254,23.872,9.61
-			c2.014,3.565,2.634,8.215,2.634,18.137v48.517c-10.697,1.55-24.182,2.636-34.102,2.636c-19.996,0-28.988-6.978-28.988-22.478
-			c0-16.742,11.936-24.492,41.234-26.973v-5.27c0-4.34-2.17-5.889-8.216-5.889c-8.835,0-18.756,2.48-28.058,7.286V42.29z
-			 M165.089,80.268c-15.812,1.55-20.927,4.031-20.927,10.231c0,4.65,2.946,6.82,9.456,6.82c3.566,0,6.82-0.309,11.471-1.084V80.268z
-			"/>
-		<path fill="#092E20" d="M197.487,40.585c14.105-3.72,25.731-5.424,37.512-5.424c12.246,0,21.082,2.789,26.354,8.215
-			c4.96,5.114,6.509,10.694,6.509,22.632v46.812H243.99V66.938c0-9.145-3.1-12.557-11.625-12.557c-3.255,0-6.2,0.31-11.007,1.705
-			v56.734h-23.871V40.585z"/>
-		<path fill="#092E20" d="M277.142,125.842c8.372,4.34,16.742,6.354,25.577,6.354c15.655,0,22.321-6.354,22.321-21.546
-			c0-0.155,0-0.31,0-0.465c-4.65,2.324-9.301,3.255-15.5,3.255c-20.927,0-34.26-13.796-34.26-35.652
-			c0-27.129,19.688-42.473,54.564-42.473c10.232,0,19.688,1.084,31.159,3.409l-8.174,17.219c-6.356-1.24-0.509-0.166-5.312-0.631
-			v2.481l0.309,10.074l0.154,13.022c0.155,3.254,0.155,6.51,0.311,9.765c0,2.945,0,4.341,0,6.511c0,20.462-1.705,30.072-6.82,37.977
-			c-7.441,11.627-20.307,17.362-38.598,17.362c-9.301,0-17.36-1.395-25.732-4.651V125.842z M324.576,54.536c-0.31,0-0.619,0-0.774,0
-			h-1.706c-4.649-0.155-10.074,1.084-13.796,3.409c-5.734,3.256-8.681,9.147-8.681,17.517c0,11.937,5.892,18.757,16.432,18.757
-			c3.255,0,5.891-0.621,8.99-1.55v-1.706v-6.509c0-2.79-0.154-5.892-0.154-9.146l-0.154-11.005l-0.156-7.906V54.536z"/>
-		<path fill="#092E20" d="M398.062,34.85c23.871,0,38.443,15.037,38.443,39.373c0,24.958-15.19,40.614-39.373,40.614
-			c-23.873,0-38.599-15.037-38.599-39.218C358.534,50.505,373.726,34.85,398.062,34.85z M397.595,95.614
-			c9.147,0,14.573-7.596,14.573-20.772c0-13.02-5.271-20.771-14.415-20.771c-9.457,0-14.884,7.597-14.884,20.771
-			C382.87,88.019,388.296,95.614,397.595,95.614z"/>
-	</g>
-</g>
-</svg>
diff --git a/docs/source/guides/getting-started/_static/logo-jupyter.svg b/docs/source/guides/getting-started/_static/logo-jupyter.svg
deleted file mode 100644
index fb2921a41..000000000
--- a/docs/source/guides/getting-started/_static/logo-jupyter.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<svg width="189" height="51" viewBox="0 0 189 51" version="2.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:figma="http://www.figma.com/figma/ns">
-<title>logo.svg</title>
-<desc>Created using Figma 0.90</desc>
-<g id="Canvas" transform="translate(-1638 -2093)" figma:type="canvas">
-<g id="logo" style="mix-blend-mode:normal;" figma:type="group">
-<g id="Group" style="mix-blend-mode:normal;" figma:type="group">
-<g id="g" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path0 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path0_fill" transform="translate(1688.87 2106.23)" fill="#4E4E4E" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path1 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path1_fill" transform="translate(1705.38 2106.19)" fill="#4E4E4E" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path2 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path2_fill" transform="translate(1730.18 2105.67)" fill="#4E4E4E" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path3 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path3_fill" transform="translate(1752.94 2106.21)" fill="#4E4E4E" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path4 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path4_fill" transform="translate(1775.8 2100.04)" fill="#4E4E4E" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path5 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path5_fill" transform="translate(1791.75 2105.71)" fill="#4E4E4E" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path6 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path6_fill" transform="translate(1815.77 2105.72)" fill="#4E4E4E" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-</g>
-</g>
-<g id="g" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path7 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path7_fill" transform="translate(1669.3 2093.31)" fill="#767677" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path8 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path8_fill" transform="translate(1639.74 2123.98)" fill="#F37726" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path9 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path9_fill" transform="translate(1639.73 2097.48)" fill="#F37726" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path10 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path10_fill" transform="translate(1639.8 2135.81)" fill="#989798" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-<g id="path" style="mix-blend-mode:normal;" figma:type="group">
-<g id="path11 fill" style="mix-blend-mode:normal;" figma:type="vector">
-<use xlink:href="#path11_fill" transform="translate(1638.36 2098.06)" fill="#6F7070" style="mix-blend-mode:normal;"/>
-</g>
-</g>
-</g>
-</g>
-</g>
-<defs>
-<path id="path0_fill" d="M 5.62592 17.9276C 5.62592 23.0737 5.23342 24.7539 4.18673 25.9942C 3.04416 27.0501 1.54971 27.6341 0 27.6304L 0.392506 30.6916C 2.79452 30.7249 5.12302 29.8564 6.92556 28.255C 8.80086 26.3021 9.45504 23.6015 9.45504 19.4583L 9.45504 0L 5.6172 0L 5.6172 17.954L 5.62592 17.9276Z"/>
-<path id="path1_fill" d="M 17.7413 15.6229C 17.7413 17.8397 17.7413 19.7925 17.9157 21.4727L 14.5576 21.4727L 14.3396 17.954L 14.2523 17.954C 13.5454 19.1838 12.5262 20.2013 11.2997 20.9017C 10.0732 21.6022 8.68377 21.9602 7.27445 21.9389C 3.95995 21.9389 0 20.074 0 12.5441L 0 0L 3.83784 0L 3.83784 11.9019C 3.83784 15.9836 5.05897 18.7281 8.53919 18.7281C 9.63092 18.708 10.6925 18.3634 11.5908 17.7374C 12.4892 17.1115 13.1844 16.2321 13.5894 15.2095C 13.8222 14.57 13.9404 13.8938 13.9383 13.2126L 13.9383 0.0175934L 17.7762 0.0175934L 17.7762 15.6229L 17.7413 15.6229Z"/>
-<path id="path2_fill" d="M 0.174447 7.53632C 0.174447 4.79175 0.0872236 2.57499 0 0.498968L 3.44533 0.498968L 3.61978 4.17598L 3.707 4.17598C 4.46074 2.85853 5.55705 1.77379 6.87754 1.03893C 8.19802 0.304077 9.69248 -0.0529711 11.1995 0.0063534C 16.2934 0.0063534 20.1312 4.4047 20.1312 10.9142C 20.1312 18.6289 15.5171 22.4379 10.5366 22.4379C 9.25812 22.492 7.98766 22.2098 6.84994 21.6192C 5.71222 21.0285 4.74636 20.1496 4.04718 19.0688L 3.95995 19.0688L 3.95995 30.7244L 0.165725 30.7244L 0.165725 7.50113L 0.174447 7.53632ZM 3.96868 13.2542C 3.97869 13.7891 4.03708 14.3221 4.14312 14.8464C 4.45574 16.1467 5.19222 17.3035 6.23449 18.1313C 7.27677 18.9592 8.56446 19.4101 9.89116 19.4118C 13.9471 19.4118 16.2934 16.0427 16.2934 11.1254C 16.2934 6.82378 14.0692 3.14677 10.022 3.14677C 8.66089 3.18518 7.35158 3.68134 6.30219 4.55638C 5.25279 5.43143 4.52354 6.63513 4.23035 7.97615C 4.07662 8.49357 3.98869 9.02858 3.96868 9.56835L 3.96868 13.2454L 3.96868 13.2542Z"/>
-<path id="path3_fill" d="M 4.16057 0L 8.7747 12.676C 9.25443 14.0923 9.77777 15.7813 10.1267 17.0744L 10.2139 17.0744C 10.6064 15.7901 11.0425 14.1451 11.5659 12.5969L 15.7526 0.00879669L 19.8085 0.00879669L 14.0604 15.3062C 11.3129 22.6603 9.44632 26.434 6.82961 28.7388C 5.50738 29.9791 3.88672 30.8494 2.12826 31.2634L 1.1688 27.9823C 2.39912 27.5689 3.53918 26.9208 4.52691 26.0734C 5.92259 24.8972 7.02752 23.4094 7.75418 21.7278C 7.90932 21.4374 8.01266 21.1218 8.05946 20.7954C 8.02501 20.4436 7.93674 20.0994 7.79779 19.7749L 0 0.00879669L 4.18673 0.00879669L 4.16057 0Z"/>
-<path id="path4_fill" d="M 7.0215 0L 7.0215 6.15768L 12.5079 6.15768L 12.5079 9.13096L 7.0215 9.13096L 7.0215 20.6898C 7.0215 23.3288 7.7629 24.8594 9.89988 24.8594C 10.6496 24.8712 11.3975 24.7824 12.1241 24.5955L 12.2985 27.5248C 11.207 27.9125 10.0534 28.0915 8.89681 28.0526C 8.1298 28.1 7.36177 27.9782 6.64622 27.6956C 5.93068 27.413 5.28484 26.9765 4.75369 26.4164C 3.66339 25.2641 3.27089 23.3552 3.27089 20.8306L 3.27089 9.13096L 0 9.13096L 0 6.15768L 3.27089 6.15768L 3.27089 1.01162L 7.0215 0Z"/>
-<path id="path5_fill" d="M 3.6285 11.9283C 3.71573 17.2063 7.03022 19.3791 10.8593 19.3791C 12.8612 19.4425 14.8527 19.0642 16.6946 18.2707L 17.3488 21.0593C 15.1419 21.994 12.7638 22.4467 10.3709 22.3876C 3.88145 22.3876 0 18.042 0 11.5676C 0 5.09328 3.75062 0 9.89116 0C 16.7731 0 18.6135 6.15768 18.6135 10.1074C 18.607 10.7165 18.5634 11.3246 18.4827 11.9283L 3.65467 11.9283L 3.6285 11.9283ZM 14.8716 9.13976C 14.9152 6.65909 13.8686 2.79735 9.55971 2.79735C 5.67826 2.79735 3.98612 6.43038 3.68084 9.13976L 14.8803 9.13976L 14.8716 9.13976Z"/>
-<path id="path6_fill" d="M 0.174447 7.17854C 0.174447 4.65389 0.130835 2.48111 0 0.484261L 3.35811 0.484261L 3.48894 4.69787L 3.66339 4.69787C 4.62285 1.81256 6.93428 0.00044283 9.49865 0.00044283C 9.8663 -0.0049786 10.233 0.0394012 10.5889 0.132393L 10.5889 3.80941C 10.1593 3.71494 9.72029 3.67067 9.28059 3.67746C 6.57666 3.67746 4.66646 5.76227 4.14312 8.68277C 4.03516 9.28384 3.97681 9.89289 3.96867 10.5037L 3.96867 21.9394L 0.174447 21.9394L 0.174447 7.17854Z"/>
-<path id="path7_fill" d="M 5.89353 2.844C 5.91889 3.43165 5.77085 4.01367 5.46815 4.51645C 5.16545 5.01922 4.72168 5.42015 4.19299 5.66851C 3.6643 5.91688 3.07444 6.00151 2.49805 5.91171C 1.92166 5.8219 1.38463 5.5617 0.954898 5.16401C 0.52517 4.76633 0.222056 4.24903 0.0839037 3.67757C -0.0542483 3.10611 -0.02123 2.50617 0.178781 1.95364C 0.378793 1.4011 0.736809 0.920817 1.20754 0.573538C 1.67826 0.226259 2.24055 0.0275919 2.82326 0.00267229C 3.60389 -0.0307115 4.36573 0.249789 4.94142 0.782551C 5.51711 1.31531 5.85956 2.05676 5.89353 2.844Z"/>
-<path id="path8_fill" d="M 18.2646 7.13411C 10.4145 7.13411 3.55872 4.2576 0 0C 1.32539 3.8204 3.79556 7.13081 7.0686 9.47303C 10.3417 11.8152 14.2557 13.0734 18.269 13.0734C 22.2823 13.0734 26.1963 11.8152 29.4694 9.47303C 32.7424 7.13081 35.2126 3.8204 36.538 0C 32.9705 4.2576 26.1148 7.13411 18.2646 7.13411Z"/>
-<path id="path9_fill" d="M 18.2733 5.93931C 26.1235 5.93931 32.9793 8.81583 36.538 13.0734C 35.2126 9.25303 32.7424 5.94262 29.4694 3.6004C 26.1963 1.25818 22.2823 0 18.269 0C 14.2557 0 10.3417 1.25818 7.0686 3.6004C 3.79556 5.94262 1.32539 9.25303 0 13.0734C 3.56745 8.82463 10.4232 5.93931 18.2733 5.93931Z"/>
-<path id="path10_fill" d="M 7.42789 3.58338C 7.46008 4.3243 7.27355 5.05819 6.89193 5.69213C 6.51031 6.32607 5.95075 6.83156 5.28411 7.1446C 4.61747 7.45763 3.87371 7.56414 3.14702 7.45063C 2.42032 7.33712 1.74336 7.0087 1.20184 6.50695C 0.660328 6.0052 0.27861 5.35268 0.105017 4.63202C -0.0685757 3.91135 -0.0262361 3.15494 0.226675 2.45856C 0.479587 1.76217 0.931697 1.15713 1.52576 0.720033C 2.11983 0.282935 2.82914 0.0334395 3.56389 0.00313344C 4.54667 -0.0374033 5.50529 0.316706 6.22961 0.987835C 6.95393 1.65896 7.38484 2.59235 7.42789 3.58338L 7.42789 3.58338Z"/>
-<path id="path11_fill" d="M 2.27471 4.39629C 1.84363 4.41508 1.41671 4.30445 1.04799 4.07843C 0.679268 3.8524 0.385328 3.52114 0.203371 3.12656C 0.0214136 2.73198 -0.0403798 2.29183 0.0258116 1.86181C 0.0920031 1.4318 0.283204 1.03126 0.575213 0.710883C 0.867222 0.39051 1.24691 0.164708 1.66622 0.0620592C 2.08553 -0.0405897 2.52561 -0.0154714 2.93076 0.134235C 3.33591 0.283941 3.68792 0.551505 3.94222 0.90306C 4.19652 1.25462 4.34169 1.67436 4.35935 2.10916C 4.38299 2.69107 4.17678 3.25869 3.78597 3.68746C 3.39516 4.11624 2.85166 4.37116 2.27471 4.39629L 2.27471 4.39629Z"/>
-</defs>
-</svg>
diff --git a/docs/source/guides/getting-started/_static/logo-plotly.svg b/docs/source/guides/getting-started/_static/logo-plotly.svg
deleted file mode 100644
index 3dd95459a..000000000
--- a/docs/source/guides/getting-started/_static/logo-plotly.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="147" height="46" viewBox="0 0 147 46">
-    <g fill="none" fill-rule="evenodd">
-        <path fill="#3F4F75" d="M41.909 46H3.66C1.64 46 0 44.307 0 42.22V3.78C0 1.692 1.64 0 3.661 0H41.91c2.022 0 3.661 1.692 3.661 3.78v38.44c0 2.087-1.64 3.78-3.661 3.78"/>
-        <path fill="#80CFBE" d="M11.383 17.956a1.263 1.263 0 0 1 .153.26 1.148 1.148 0 0 0-.433-.243c-.033-.072-.095-.133-.169-.147l-.022-.004a1.087 1.087 0 0 0-.065-.081c.191.052.377.124.536.215m-1.368 1.867c.117-.007.233-.03.344-.071.021.025.044.051.068.075a1.051 1.051 0 0 1-.436.027l.024-.03m.448-1.395a.62.62 0 0 0 .143.047.838.838 0 0 1 .007.107c-.081-.107-.228-.114-.337-.052l-.02-.08.164-.05c.013.01.027.02.043.028m-.717.143a1.102 1.102 0 0 0 .063.247c-.05-.055-.073-.137-.063-.247m1.412.65a35.186 35.186 0 0 0-.068-.133.803.803 0 0 0 .055-.122c.03.088.032.173.013.255m.718-1.553a3.586 3.586 0 0 0-.112-.074 2.06 2.06 0 0 0-.44-.431c-.718-.517-1.816-.567-2.338.252-.026.04-.05.082-.072.126a1.997 1.997 0 0 0-.652 1.15.251.251 0 0 0-.176.242c-.015.52.252.927.636 1.199.4.36.993.505 1.573.52.858.023 1.45-.447 1.716-1.07l.01-.013c.457-.6.51-1.433-.145-1.901M11.383 10.386a1.263 1.263 0 0 1 .153.26 1.142 1.142 0 0 0-.433-.243c-.033-.073-.095-.133-.169-.147l-.022-.005a1.08 1.08 0 0 0-.065-.08c.191.051.377.123.536.215m-1.368 1.867c.117-.007.233-.03.344-.072.021.026.044.051.068.075a1.02 1.02 0 0 1-.436.028l.024-.031m.448-1.394a.643.643 0 0 0 .143.046.833.833 0 0 1 .007.108c-.081-.107-.228-.115-.337-.052l-.02-.08.164-.05c.013.01.027.02.043.028M9.746 11c.005.033.01.066.019.099.012.05.027.099.044.149-.05-.055-.073-.137-.063-.248m1.412.65l-.068-.132c.022-.04.04-.08.055-.122.03.088.032.173.013.254m.718-1.552a2.91 2.91 0 0 0-.112-.075 2.048 2.048 0 0 0-.44-.43c-.718-.518-1.816-.567-2.338.252-.026.04-.05.082-.072.125a1.997 1.997 0 0 0-.652 1.15.251.251 0 0 0-.176.242c-.015.52.252.927.636 1.2.4.359.993.504 1.573.52.858.023 1.45-.447 1.716-1.07l.01-.013c.457-.6.51-1.433-.145-1.901M28.02 17.956a1.263 1.263 0 0 1 .153.26 1.148 1.148 0 0 0-.433-.243c-.033-.072-.095-.133-.169-.147l-.022-.004a1.087 1.087 0 0 0-.065-.081c.192.052.377.124.536.215m-1.368 1.867c.117-.007.233-.03.344-.071.022.025.044.051.068.075a1.051 1.051 0 0 1-.436.027l.024-.03m.448-1.395a.62.62 0 0 0 .144.047.838.838 0 0 1 .006.107c-.08-.107-.228-.114-.337-.052l-.02-.08.164-.05c.013.01.027.02.043.028m-.717.143a1.102 1.102 0 0 0 .063.247c-.05-.055-.073-.137-.063-.247m1.412.65a35.186 35.186 0 0 0-.068-.133.803.803 0 0 0 .056-.122c.029.088.031.173.012.255m.718-1.553a3.586 3.586 0 0 0-.111-.074 2.06 2.06 0 0 0-.441-.431c-.717-.517-1.816-.567-2.338.252-.025.04-.05.082-.072.126a1.994 1.994 0 0 0-.652 1.15.251.251 0 0 0-.176.242c-.015.52.252.927.636 1.199.4.36.994.505 1.573.52.858.023 1.45-.447 1.716-1.07l.01-.013c.457-.6.51-1.433-.145-1.901M28.02 10.386a1.263 1.263 0 0 1 .153.26 1.142 1.142 0 0 0-.433-.243c-.033-.073-.095-.133-.169-.147l-.022-.005a1.08 1.08 0 0 0-.065-.08c.192.051.377.123.536.215m-1.368 1.867c.117-.007.233-.03.344-.072.022.026.044.051.068.075a1.02 1.02 0 0 1-.436.028l.024-.031m.448-1.394a.643.643 0 0 0 .144.046.833.833 0 0 1 .006.108c-.08-.107-.228-.115-.337-.052l-.02-.08.164-.05c.013.01.027.02.043.028m-.717.142a1.66 1.66 0 0 0 .063.247c-.05-.054-.073-.136-.063-.247m1.412.65l-.068-.132c.022-.04.04-.08.056-.122.029.088.031.173.012.254m.718-1.552a2.91 2.91 0 0 0-.111-.075 2.048 2.048 0 0 0-.441-.43c-.717-.518-1.816-.567-2.338.252-.025.04-.05.082-.072.125a1.994 1.994 0 0 0-.652 1.15.251.251 0 0 0-.176.242c-.015.52.252.927.636 1.2.4.359.994.504 1.573.52.858.023 1.45-.447 1.716-1.07l.01-.013c.457-.6.51-1.433-.145-1.901"/>
-        <path fill="#FFF" d="M10.656 24.81c-1.116 0-2.02.92-2.02 2.056v8.221c0 1.135.904 2.055 2.02 2.055s2.02-.92 2.02-2.055v-8.221c0-1.135-.904-2.055-2.02-2.055M26.818 24.81c-1.116 0-2.02.92-2.02 2.056v8.221c0 1.135.904 2.055 2.02 2.055 1.115 0 2.02-.92 2.02-2.055v-8.221c0-1.135-.905-2.055-2.02-2.055M18.737 16.59c-1.116 0-2.02.92-2.02 2.054v16.443c0 1.135.904 2.055 2.02 2.055s2.02-.92 2.02-2.055V18.644c0-1.135-.904-2.055-2.02-2.055M34.899 16.59c-1.116 0-2.02.92-2.02 2.054v16.443c0 1.135.904 2.055 2.02 2.055 1.115 0 2.02-.92 2.02-2.055V18.644c0-1.135-.905-2.055-2.02-2.055"/>
-        <path fill="#80CFBE" d="M36.174 12.043c-.12.187-.263.316-.416.394.1-.156.198-.342.283-.546a2.23 2.23 0 0 0 .056-.126c.064-.058.1-.144.075-.227.002-.003.002-.007.003-.01.126-.094.215-.268.248-.455l.021-.033c.01.351-.078.703-.27 1.003m-2.656-.673a2.518 2.518 0 0 1-.009-.257c.079.295.198.584.32.837.07.188.16.386.274.53a1.13 1.13 0 0 1-.165-.127c-.269-.25-.386-.627-.42-.983m1.384-.405a3.724 3.724 0 0 1 .01-.564c.024.01.048.021.073.036l.039.027c.034.178.023.421-.122.5m1.823-.785a.407.407 0 0 0-.16-.31 2.293 2.293 0 0 0-.682-.717c-.383-.255-.815-.38-1.085-.047a3.714 3.714 0 0 0-.304-.015c-.062-.001-.119.004-.173.012-.322-.127-.666-.13-.815.282a1.743 1.743 0 0 0-.093.507.704.704 0 0 0-.158.164c-.313.449-.268 1.24-.144 1.74.21.852 1.117 1.522 1.903 1.27a.462.462 0 0 0 .184-.074c.42.079.878-.062 1.243-.507.545-.663.601-1.56.284-2.305M20.018 12.043c-.12.187-.264.316-.417.394.101-.156.198-.342.284-.546.02-.041.038-.083.055-.126.064-.058.1-.144.076-.227a.35.35 0 0 1 .003-.01c.126-.094.214-.268.248-.455l.02-.033c.01.351-.077.703-.27 1.003m-2.655-.673a2.518 2.518 0 0 1-.01-.257c.08.295.198.584.32.837.07.188.16.386.275.53a1.13 1.13 0 0 1-.165-.127c-.269-.25-.387-.627-.42-.983m1.384-.405a3.665 3.665 0 0 1 .01-.564c.023.01.047.021.072.036.014.008.026.017.04.027.033.178.022.421-.122.5m1.822-.785a.407.407 0 0 0-.159-.31 2.293 2.293 0 0 0-.683-.717c-.382-.255-.815-.38-1.084-.047a3.714 3.714 0 0 0-.304-.015c-.062-.001-.12.004-.173.012-.323-.127-.667-.13-.816.282a1.758 1.758 0 0 0-.093.507.704.704 0 0 0-.158.164c-.312.449-.268 1.24-.144 1.74.21.852 1.118 1.522 1.904 1.27a.462.462 0 0 0 .184-.074c.42.079.877-.062 1.243-.507.544-.663.6-1.56.283-2.305"/>
-        <g fill="#3F4F75">
-            <path d="M74.759 32.856a1.862 1.862 0 0 1-1.852-1.873V12.26c0-1.035.829-1.873 1.852-1.873 1.022 0 1.851.838 1.851 1.873v18.723a1.862 1.862 0 0 1-1.851 1.873M113.644 32.856a1.862 1.862 0 0 1-1.851-1.873V12.26c0-1.035.829-1.873 1.851-1.873 1.023 0 1.852.838 1.852 1.873v18.723a1.862 1.862 0 0 1-1.852 1.873M65.5 25.026c0 2.256-1.658 4.085-3.704 4.085-2.045 0-3.703-1.83-3.703-4.085v-3.064c0-2.256 1.658-4.085 3.703-4.085 2.046 0 3.704 1.829 3.704 4.085v3.064zm-3.704-10.894a6.953 6.953 0 0 0-3.842 1.163 1.852 1.852 0 0 0-1.713-1.163 1.862 1.862 0 0 0-1.851 1.872v18.724c0 1.034.829 1.873 1.851 1.873a1.862 1.862 0 0 0 1.852-1.873V31.78a6.937 6.937 0 0 0 3.703 1.076c4.091 0 7.407-3.593 7.407-8.025v-2.675c0-4.431-3.316-8.024-7.407-8.024zM91.424 25.026c0 2.256-1.658 4.085-3.704 4.085-2.045 0-3.703-1.83-3.703-4.085v-3.064c0-2.256 1.658-4.085 3.703-4.085 2.046 0 3.704 1.829 3.704 4.085v3.064zM87.72 14.132c-4.09 0-7.406 3.593-7.406 8.024v2.675c0 4.432 3.316 8.025 7.406 8.025 4.091 0 7.407-3.593 7.407-8.025v-2.675c0-4.431-3.316-8.024-7.407-8.024zM106.238 29.111c-2.042 0-3.704-1.68-3.704-3.745v-7.49h3.704a1.862 1.862 0 0 0 1.851-1.872 1.862 1.862 0 0 0-1.851-1.872h-3.704v-1.873a1.862 1.862 0 0 0-1.851-1.872 1.862 1.862 0 0 0-1.852 1.872v13.107c0 4.13 3.323 7.49 7.407 7.49a1.862 1.862 0 0 0 1.851-1.873 1.862 1.862 0 0 0-1.851-1.872M132.247 14.284a1.844 1.844 0 0 0-2.432.983l-3.84 9.056-3.839-9.056a1.844 1.844 0 0 0-2.432-.983 1.88 1.88 0 0 0-.972 2.458l5.229 12.333-.622 1.467a3.71 3.71 0 0 1-3.335 2.308 1.864 1.864 0 0 0-1.809 1.917 1.862 1.862 0 0 0 1.85 1.828h.045a7.41 7.41 0 0 0 6.661-4.597l6.468-15.256a1.88 1.88 0 0 0-.972-2.458"/>
-        </g>
-    </g>
-</svg>
diff --git a/docs/source/guides/getting-started/_static/reactpy-in-jupyterlab.gif b/docs/source/guides/getting-started/_static/reactpy-in-jupyterlab.gif
deleted file mode 100644
index b420ecd8c5a082a39f5904ba157735fa4327a02e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 551674
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%0D|MDvhCuIb{ddy7f71S>E_)}9luvV<^{PB07m
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

diff --git a/docs/source/guides/getting-started/_static/shared-client-state-server-slider.gif b/docs/source/guides/getting-started/_static/shared-client-state-server-slider.gif
deleted file mode 100644
index 61bb8295f94aa635e32041c0b89f5a29537aa22e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 98006
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%0A!U^x*`g)M
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%0D5tOoiL(*(xkheb51S>Jyq(
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
V6@AeeeGSqe4I9nTz7Y@r06QZgj+g)d

diff --git a/docs/source/guides/getting-started/index.rst b/docs/source/guides/getting-started/index.rst
deleted file mode 100644
index dd210be60..000000000
--- a/docs/source/guides/getting-started/index.rst
+++ /dev/null
@@ -1,123 +0,0 @@
-Getting Started
-===============
-
-.. toctree::
-    :hidden:
-
-    installing-reactpy
-    running-reactpy
-
-.. dropdown:: :octicon:`bookmark-fill;2em` What You'll Learn
-    :color: info
-    :animate: fade-in
-    :open:
-
-    .. grid:: 1 2 2 2
-
-        .. grid-item-card:: :octicon:`tools` Installing ReactPy
-            :link: installing-reactpy
-            :link-type: doc
-
-            Learn how ReactPy can be installed in a variety of different ways - with
-            different web servers and even in different frameworks.
-
-        .. grid-item-card:: :octicon:`play` Running ReactPy
-            :link: running-reactpy
-            :link-type: doc
-
-            See how ReactPy can be run with a variety of different production servers or be
-            added to existing applications.
-
-The fastest way to get started with ReactPy is to try it out in a `Juptyer Notebook
-<https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb>`__.
-If you want to use a Notebook to work through the examples shown in this documentation,
-you'll need to replace calls to ``reactpy.run(App)`` with a line at the end of each cell
-that constructs the ``App()`` in question. If that doesn't make sense, the introductory
-notebook linked below will demonstrate how to do this:
-
-.. card::
-    :link: https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb
-
-    .. image:: _static/reactpy-in-jupyterlab.gif
-        :scale: 72%
-        :align: center
-
-
-Section 1: Installing ReactPy
------------------------------
-
-The next fastest option is to install ReactPy along with a supported server (like
-``starlette``) with ``pip``:
-
-.. code-block:: bash
-
-    pip install "reactpy[starlette]"
-
-To check that everything is working you can run the sample application:
-
-.. code-block:: bash
-
-    python -c "import reactpy; reactpy.run(reactpy.sample.SampleApp)"
-
-.. note::
-
-    This launches a simple development server which is good enough for testing, but
-    probably not what you want to use in production. When deploying in production,
-    there's a number of different ways of :ref:`running ReactPy <Section 2: Running ReactPy>`.
-
-You should then see a few log messages:
-
-.. code-block:: text
-
-    2022-03-27T11:58:59-0700 | WARNING | You are running a development server. Change this before deploying in production!
-    2022-03-27T11:58:59-0700 | INFO | Running with 'Starlette' at http://127.0.0.1:8000
-
-The second log message includes a URL indicating where you should go to view the app.
-That will usually be http://127.0.0.1:8000. Once you go to that URL you should see
-something like this:
-
-.. card::
-
-    .. reactpy-view:: _examples/sample_app
-
-If you get a ``RuntimeError`` similar to the following:
-
-.. code-block:: text
-
-    Found none of the following builtin server implementations...
-
-Then be sure you run ``pip install "reactpy[starlette]"`` instead of just ``reactpy``. For
-anything else, report your issue in ReactPy's :discussion-type:`discussion forum
-<problem>`.
-
-.. card::
-    :link: installing-reactpy
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Learn how ReactPy can be installed in a variety of different ways - with different web
-    servers and even in different frameworks.
-
-
-Section 2: Running ReactPy
---------------------------
-
-Once you've :ref:`installed ReactPy <Installing ReactPy>`, you'll want to learn how to run an
-application. Throughout most of the examples in this documentation, you'll see the
-:func:`~reactpy.backend.utils.run` function used. While it's convenient tool for
-development it shouldn't be used in production settings - it's slow, and could leak
-secrets through debug log messages.
-
-.. reactpy:: _examples/hello_world
-
-.. card::
-    :link: running-reactpy
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    See how ReactPy can be run with a variety of different production servers or be
-    added to existing applications.
diff --git a/docs/source/guides/getting-started/installing-reactpy.rst b/docs/source/guides/getting-started/installing-reactpy.rst
deleted file mode 100644
index 0b2ffc28a..000000000
--- a/docs/source/guides/getting-started/installing-reactpy.rst
+++ /dev/null
@@ -1,121 +0,0 @@
-Installing ReactPy
-==================
-
-You will typically ``pip`` install ReactPy to alongside one of it's natively supported
-backends. For example, if we want to run ReactPy using the `Starlette
-<https://www.starlette.io/>`__ backend you would run
-
-.. code-block:: bash
-
-    pip install "reactpy[starlette]"
-
-If you want to install a "pure" version of ReactPy **without a backend implementation**
-you can do so without any installation extras. You might do this if you wanted to
-:ref:`use a custom backend <using a custom backend>` or if you wanted to manually pin
-the dependencies for your chosen backend:
-
-.. code-block:: bash
-
-    pip install reactpy
-
-
-Native Backends
----------------
-
-ReactPy includes built-in support for a variety backend implementations. To install the
-required dependencies for each you should substitute ``starlette`` from the ``pip
-install`` command above with one of the options below:
-
-- ``fastapi`` - https://fastapi.tiangolo.com
-- ``flask`` - https://palletsprojects.com/p/flask/
-- ``sanic`` - https://sanicframework.org
-- ``starlette`` - https://www.starlette.io/
-- ``tornado`` - https://www.tornadoweb.org/en/stable/
-
-If you need to, you can install more than one option by separating them with commas:
-
-.. code-block:: bash
-
-    pip install "reactpy[fastapi,flask,sanic,starlette,tornado]"
-
-Once this is complete you should be able to :ref:`run ReactPy <Running ReactPy>` with your
-chosen implementation.
-
-
-Other Backends
---------------
-
-While ReactPy can run in a variety of contexts, sometimes frameworks require extra work in
-order to integrate with them. In these cases, the ReactPy team distributes bindings for
-those frameworks as separate Python packages. For documentation on how to install and
-run ReactPy in these supported frameworks, follow the links below:
-
-.. raw:: html
-
-    <style>
-        .card-logo-image {
-            display: flex;
-            justify-content: center;
-            align-content: center;
-            padding: 10px;
-            background-color: var(--color-background-primary);
-            border: 2px solid var(--color-background-border);
-        }
-
-        .transparent-text-color {
-            color: transparent;
-        }
-    </style>
-
-.. role:: transparent-text-color
-
-.. We add transparent-text-color to the text so it's not visible, but it's still
-.. searchable.
-
-.. grid:: 3
-
-    .. grid-item-card::
-        :link: https://github.com/reactive-python/reactpy-django
-        :img-background: _static/logo-django.svg
-        :class-card: card-logo-image
-
-        :transparent-text-color:`Django`
-
-    .. grid-item-card::
-        :link: https://github.com/reactive-python/reactpy-jupyter
-        :img-background: _static/logo-jupyter.svg
-        :class-card: card-logo-image
-
-        :transparent-text-color:`Jupyter`
-
-    .. grid-item-card::
-        :link: https://github.com/reactive-python/reactpy-dash
-        :img-background: _static/logo-plotly.svg
-        :class-card: card-logo-image
-
-        :transparent-text-color:`Plotly Dash`
-
-
-For Development
----------------
-
-If you want to contribute to the development of ReactPy or modify it, you'll want to
-install a development version of ReactPy. This involves cloning the repository where ReactPy's
-source is maintained, and setting up a :ref:`development environment`. From there you'll
-be able to modifying ReactPy's source code and :ref:`run its tests <Running The Tests>` to
-ensure the modifications you've made are backwards compatible. If you want to add a new
-feature to ReactPy you should write your own test that validates its behavior.
-
-If you have questions about how to modify ReactPy or help with its development, be sure to
-:discussion:`start a discussion <new?category=question>`. The ReactPy team are always
-excited to :ref:`welcome <everyone can contribute>` new contributions and contributors
-of all kinds
-
-.. card::
-    :link: /about/contributor-guide
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Learn more about how to contribute to the development of ReactPy.
diff --git a/docs/source/guides/getting-started/running-reactpy.rst b/docs/source/guides/getting-started/running-reactpy.rst
deleted file mode 100644
index 8abbd574f..000000000
--- a/docs/source/guides/getting-started/running-reactpy.rst
+++ /dev/null
@@ -1,221 +0,0 @@
-Running ReactPy
-===============
-
-The simplest way to run ReactPy is with the :func:`~reactpy.backend.utils.run` function. This
-is the method you'll see used throughout this documentation. However, this executes your
-application using a development server which is great for testing, but probably not what
-if you're :ref:`deploying in production <Running ReactPy in Production>`. Below are some
-more robust and performant ways of running ReactPy with various supported servers.
-
-
-Running ReactPy in Production
------------------------------
-
-The first thing you'll need to do if you want to run ReactPy in production is choose a
-backend implementation and follow its documentation on how to create and run an
-application. This is the backend :ref:`you probably chose <Native Backends>` when
-installing ReactPy. Then you'll need to configure that application with an ReactPy view. We
-show the basics of how to set up, and then run, each supported backend below, but all
-implementations will follow a pattern similar to the following:
-
-.. code-block::
-
-    from my_chosen_backend import Application
-
-    from reactpy import component, html
-    from reactpy.backend.my_chosen_backend import configure
-
-
-    @component
-    def HelloWorld():
-        return html.h1("Hello, world!")
-
-
-    app = Application()
-    configure(app, HelloWorld)
-
-You'll then run this ``app`` using an `ASGI <https://asgi.readthedocs.io/en/latest/>`__
-or `WSGI <https://wsgi.readthedocs.io/>`__ server from the command line.
-
-
-Running with `FastAPI <https://fastapi.tiangolo.com>`__
-.......................................................
-
-.. reactpy:: _examples/run_fastapi
-
-Then assuming you put this in ``main.py``, you can run the ``app`` using the `Uvicorn
-<https://www.uvicorn.org/>`__ ASGI server:
-
-.. code-block:: bash
-
-    uvicorn main:app
-
-
-Running with `Flask <https://palletsprojects.com/p/flask/>`__
-.............................................................
-
-.. reactpy:: _examples/run_flask
-
-Then assuming you put this in ``main.py``, you can run the ``app`` using the `Gunicorn
-<https://gunicorn.org/>`__ WSGI server:
-
-.. code-block:: bash
-
-    gunicorn main:app
-
-
-Running with `Sanic <https://sanicframework.org>`__
-...................................................
-
-.. reactpy:: _examples/run_sanic
-
-Then assuming you put this in ``main.py``, you can run the ``app`` using Sanic's builtin
-server:
-
-.. code-block:: bash
-
-    sanic main.app
-
-
-Running with `Starlette <https://www.starlette.io/>`__
-......................................................
-
-.. reactpy:: _examples/run_starlette
-
-Then assuming you put this in ``main.py``, you can run the application using the
-`Uvicorn <https://www.uvicorn.org/>`__ ASGI server:
-
-.. code-block:: bash
-
-    uvicorn main:app
-
-
-Running with `Tornado <https://www.tornadoweb.org/en/stable/>`__
-................................................................
-
-.. reactpy:: _examples/run_tornado
-
-Tornado is run using it's own builtin server rather than an external WSGI or ASGI
-server.
-
-
-Running ReactPy in Debug Mode
------------------------------
-
-ReactPy provides a debug mode that is turned off by default. This can be enabled when you
-run your application by setting the ``REACTPY_DEBUG_MODE`` environment variable.
-
-.. tab-set::
-
-    .. tab-item:: Unix Shell
-
-        .. code-block::
-
-            export REACTPY_DEBUG_MODE=1
-            python my_reactpy_app.py
-
-    .. tab-item:: Command Prompt
-
-        .. code-block:: text
-
-            set REACTPY_DEBUG_MODE=1
-            python my_reactpy_app.py
-
-    .. tab-item:: PowerShell
-
-        .. code-block:: powershell
-
-            $env:REACTPY_DEBUG_MODE = "1"
-            python my_reactpy_app.py
-
-.. danger::
-
-    Leave debug mode off in production!
-
-Among other things, running in this mode:
-
-- Turns on debug log messages
-- Adds checks to ensure the :ref:`VDOM` spec is adhered to
-- Displays error messages that occur within your app
-
-Errors will be displayed where the uppermost component is located in the view:
-
-.. reactpy:: _examples/debug_error_example
-
-
-Backend Configuration Options
------------------------------
-
-ReactPy's various backend implementations come with ``Options`` that can be passed to their
-respective ``configure()`` functions in the following way:
-
-.. code-block::
-
-    from reactpy.backend.<implementation> import configure, Options
-
-    configure(app, MyComponent, Options(...))
-
-To learn more read about the options for your chosen backend ``<implementation>``:
-
-- :class:`reactpy.backend.fastapi.Options`
-- :class:`reactpy.backend.flask.Options`
-- :class:`reactpy.backend.sanic.Options`
-- :class:`reactpy.backend.starlette.Options`
-- :class:`reactpy.backend.tornado.Options`
-
-
-Embed in an Existing Webpage
-----------------------------
-
-ReactPy provides a Javascript client called ``@reactpy/client`` that can be used to embed
-ReactPy views within an existing applications. This is actually how the interactive
-examples throughout this documentation have been created. You can try this out by
-embedding one the examples from this documentation into your own webpage:
-
-.. tab-set::
-
-    .. tab-item:: HTML
-
-        .. literalinclude:: _static/embed-doc-ex.html
-            :language: html
-
-    .. tab-item:: ▶️ Result
-
-        .. raw:: html
-            :file: _static/embed-doc-ex.html
-
-.. note::
-
-    For more information on how to use the client see the :ref:`Javascript API`
-    reference. Or if you need to, your can :ref:`write your own backend implementation
-    <writing your own backend>`.
-
-As mentioned though, this is connecting to the server that is hosting this
-documentation. If you want to connect to a view from your own server, you'll need to
-change the URL above to one you provide. One way to do this might be to add to an
-existing application. Another would be to run ReactPy in an adjacent web server instance
-that you coordinate with something like `NGINX <https://www.nginx.com/>`__. For the sake
-of simplicity, we'll assume you do something similar to the following in an existing
-Python app:
-
-.. tab-set::
-
-    .. tab-item:: main.py
-
-        .. literalinclude:: _static/embed-reactpy-view/main.py
-            :language: python
-
-    .. tab-item:: index.html
-
-        .. literalinclude:: _static/embed-reactpy-view/index.html
-            :language: html
-
-After running ``python main.py``, you should be able to navigate to
-``http://127.0.0.1:8000/index.html`` and see:
-
-.. card::
-    :text-align: center
-
-    .. image:: _static/embed-reactpy-view/screenshot.png
-        :width: 500px
-
diff --git a/docs/source/guides/managing-state/combining-contexts-and-reducers/index.rst b/docs/source/guides/managing-state/combining-contexts-and-reducers/index.rst
deleted file mode 100644
index b9f274f0a..000000000
--- a/docs/source/guides/managing-state/combining-contexts-and-reducers/index.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Combining Contexts and Reducers 🚧
-==================================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/managing-state/deeply-sharing-state-with-contexts/index.rst b/docs/source/guides/managing-state/deeply-sharing-state-with-contexts/index.rst
deleted file mode 100644
index 4a00caa48..000000000
--- a/docs/source/guides/managing-state/deeply-sharing-state-with-contexts/index.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Deeply Sharing State with Contexts 🚧
-=====================================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/managing-state/how-to-structure-state/index.rst b/docs/source/guides/managing-state/how-to-structure-state/index.rst
deleted file mode 100644
index 5092370a5..000000000
--- a/docs/source/guides/managing-state/how-to-structure-state/index.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _Structuring Your State:
-
-How to Structure State 🚧
-=========================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/managing-state/index.rst b/docs/source/guides/managing-state/index.rst
deleted file mode 100644
index 0578bafdd..000000000
--- a/docs/source/guides/managing-state/index.rst
+++ /dev/null
@@ -1,127 +0,0 @@
-Managing State
-==============
-
-.. toctree::
-    :hidden:
-
-    how-to-structure-state/index
-    sharing-component-state/index
-    when-and-how-to-reset-state/index
-    simplifying-updates-with-reducers/index
-    deeply-sharing-state-with-contexts/index
-    combining-contexts-and-reducers/index
-
-.. dropdown:: :octicon:`bookmark-fill;2em` What You'll Learn
-    :color: info
-    :animate: fade-in
-    :open:
-
-    .. grid:: 1 2 2 2
-
-        .. grid-item-card:: :octicon:`organization` How to Structure State
-            :link: how-to-structure-state/index
-            :link-type: doc
-
-            Make it easy to reason about your application with strategies for organizing
-            state.
-
-        .. grid-item-card:: :octicon:`link` Sharing Component State
-            :link: sharing-component-state/index
-            :link-type: doc
-
-            Allow components to vary vary together, by lifting state into common
-            parents.
-
-        .. grid-item-card:: :octicon:`light-bulb` When and How to Reset State
-            :link: when-and-how-to-reset-state/index
-            :link-type: doc
-
-            Control if and how state is preserved by understanding it's relationship to
-            the "UI tree".
-
-        .. grid-item-card:: :octicon:`plug` Simplifying Updates with Reducers
-            :link: simplifying-updates-with-reducers/index
-            :link-type: doc
-
-            Consolidate state update logic outside your component in a single function,
-            called a “reducer".
-
-        .. grid-item-card:: :octicon:`broadcast` Deeply Sharing State with Contexts
-            :link: deeply-sharing-state-with-contexts/index
-            :link-type: doc
-
-            Instead of passing shared state down deep component trees, bring state into
-            "contexts" instead.
-
-        .. grid-item-card:: :octicon:`rocket` Combining Contexts and Reducers
-            :link: combining-contexts-and-reducers/index
-            :link-type: doc
-
-            You can combine reducers and context together to manage state of a complex
-            screen.
-
-
-Section 1: How to Structure State
----------------------------------
-
-.. note::
-
-    Under construction 🚧
-
-
-Section 2: Shared Component State
----------------------------------
-
-Sometimes, you want the state of two components to always change together. To do it,
-remove state from both of them, move it to their closest common parent, and then pass it
-down to them via props. This is known as “lifting state up”, and it’s one of the most
-common things you will do writing code with ReactPy.
-
-In the example below the search input and the list of elements below share the same
-state, the state represents the food name. Note how the component ``Table`` gets called
-at each change of state. The component is observing the state and reacting to state
-changes automatically, just like it would do in React.
-
-.. reactpy:: sharing-component-state/_examples/synced_inputs
-
-.. card::
-    :link: sharing-component-state/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Allow components to vary vary together, by lifting state into common parents.
-
-
-Section 3: When and How to Reset State
---------------------------------------
-
-.. note::
-
-    Under construction 🚧
-
-
-Section 4: Simplifying Updates with Reducers
---------------------------------------------
-
-.. note::
-
-    Under construction 🚧
-
-
-Section 5: Deeply Sharing State with Contexts
----------------------------------------------
-
-.. note::
-
-    Under construction 🚧
-
-
-
-Section 6: Combining Contexts and Reducers
-------------------------------------------
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/data.json b/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/data.json
deleted file mode 100644
index f977fe9a7..000000000
--- a/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/data.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
-  {
-    "name": "Sushi",
-    "description": "Sushi is a traditional Japanese dish of prepared vinegared rice"
-  },
-  {
-    "name": "Dal",
-    "description": "The most common way of preparing dal is in the form of a soup to which onions, tomatoes and various spices may be added"
-  },
-  {
-    "name": "Pierogi",
-    "description": "Pierogi are filled dumplings made by wrapping unleavened dough around a savoury or sweet filling and cooking in boiling water"
-  },
-  {
-    "name": "Shish Kebab",
-    "description": "Shish kebab is a popular meal of skewered and grilled cubes of meat"
-  },
-  {
-    "name": "Dim sum",
-    "description": "Dim sum is a large range of small dishes that Cantonese people traditionally enjoy in restaurants for breakfast and lunch"
-  }
-]
diff --git a/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/main.py b/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/main.py
deleted file mode 100644
index ca68aedcb..000000000
--- a/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/main.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import json
-from pathlib import Path
-
-from reactpy import component, hooks, html, run
-
-HERE = Path(__file__)
-DATA_PATH = HERE.parent / "data.json"
-food_data = json.loads(DATA_PATH.read_text())
-
-
-@component
-def FilterableList():
-    value, set_value = hooks.use_state("")
-    return html.p(Search(value, set_value), html.hr(), Table(value, set_value))
-
-
-@component
-def Search(value, set_value):
-    def handle_change(event):
-        set_value(event["target"]["value"])
-
-    return html.label(
-        "Search by Food Name: ",
-        html.input({"value": value, "on_change": handle_change}),
-    )
-
-
-@component
-def Table(value, set_value):
-    rows = []
-    for row in food_data:
-        name = html.td(row["name"])
-        descr = html.td(row["description"])
-        tr = html.tr(name, descr, value)
-        if not value:
-            rows.append(tr)
-        elif value.lower() in row["name"].lower():
-            rows.append(tr)
-        headers = html.tr(html.td(html.b("name")), html.td(html.b("description")))
-    table = html.table(html.thead(headers), html.tbody(rows))
-    return table
-
-
-run(FilterableList)
diff --git a/docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/main.py b/docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/main.py
deleted file mode 100644
index e8bcdf333..000000000
--- a/docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/main.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from reactpy import component, hooks, html, run
-
-
-@component
-def SyncedInputs():
-    value, set_value = hooks.use_state("")
-    return html.p(
-        Input("First input", value, set_value),
-        Input("Second input", value, set_value),
-    )
-
-
-@component
-def Input(label, value, set_value):
-    def handle_change(event):
-        set_value(event["target"]["value"])
-
-    return html.label(
-        label + " ", html.input({"value": value, "on_change": handle_change})
-    )
-
-
-run(SyncedInputs)
diff --git a/docs/source/guides/managing-state/sharing-component-state/index.rst b/docs/source/guides/managing-state/sharing-component-state/index.rst
deleted file mode 100644
index 54b61335a..000000000
--- a/docs/source/guides/managing-state/sharing-component-state/index.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-Sharing Component State
-=======================
-
-.. note::
-
-    Parts of this document are still under construction 🚧
-
-Sometimes, you want the state of two components to always change together. To do it,
-remove state from both of them, move it to their closest common parent, and then pass it
-down to them via props. This is known as “lifting state up”, and it’s one of the most
-common things you will do writing code with ReactPy.
-
-
-Synced Inputs
--------------
-
-In the code below the two input boxes are synchronized, this happens because they share
-state. The state is shared via the parent component ``SyncedInputs``. Check the ``value``
-and ``set_value`` variables.
-
-.. reactpy:: _examples/synced_inputs
-
-
-Filterable  List
-----------------
-
-In the example below the search input and the list of elements below share the
-same state, the state represents the food name.
-
-Note how the component ``Table`` gets called at each change of state. The
-component is observing the state and reacting to state changes automatically,
-just like it would do in React.
-
-.. reactpy:: _examples/filterable_list
-
-.. note::
-
-    Try typing a food name in the search bar.
diff --git a/docs/source/guides/managing-state/simplifying-updates-with-reducers/index.rst b/docs/source/guides/managing-state/simplifying-updates-with-reducers/index.rst
deleted file mode 100644
index 08fce5a69..000000000
--- a/docs/source/guides/managing-state/simplifying-updates-with-reducers/index.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Simplifying Updates with Reducers 🚧
-====================================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/managing-state/when-and-how-to-reset-state/index.rst b/docs/source/guides/managing-state/when-and-how-to-reset-state/index.rst
deleted file mode 100644
index 6a96f4b30..000000000
--- a/docs/source/guides/managing-state/when-and-how-to-reset-state/index.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _When to Reset State:
-
-When and How to Reset State 🚧
-==============================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/understanding-reactpy/_static/idom-flow-diagram.svg b/docs/source/guides/understanding-reactpy/_static/idom-flow-diagram.svg
deleted file mode 100644
index 9077913ca..000000000
--- a/docs/source/guides/understanding-reactpy/_static/idom-flow-diagram.svg
+++ /dev/null
@@ -1,383 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.1"
-   width="680"
-   height="580"
-   viewBox="-0.5 -0.5 680 580"
-   content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2020-09-07T18:34:20.858Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36&quot; etag=&quot;IvUE9xI9CxZQnD7O0sJm&quot; version=&quot;13.6.6&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;3GUrj3vU2Wc3lj3yRkW7&quot; name=&quot;Page-1&quot;&gt;7Zpdb9owFIZ/DZetkrgEuCy027R1XSWkddqdiU8Sqw5mjvnar5+d2CEhFEpbPkZBlUqO7WP7+D0PdpIG6iWzzwKP4u+cAGt4Dpk10E3D89wrz2voP4fMc0sLdXJDJCgxlRaGPv0Lxtg01jElkFYqSs6ZpKOqMeDDIQSyYsNC8Gm1WshZtdcRjqBm6AeY1a2PlMg4t7abzsL+BWgU255dx5Qk2FY2hjTGhE9LJnTbQD3Bucy/JbMeMB08G5e83adnSouBCRjKlzTAv+WFQ760viXebfT49/4J/cIXfu5lgtnYTLjh+Uz564ZcuVUBw0Fe4P8Z65F2e3wsKAhVdA/ThVlPUM5Zta72cZFma3qtKqjRzsot/Mj8zzocWMMdnvOxtGY1ocFyVWXLh2fNXqV7T/DxkICet6uKpzGV0B/lE5kqmSpbLBNmikPKWI8zLrK2iGBoh4Gyp1LwJyiV+EEbBmFRYuWAihFMQEiYPbs8brHoKluAJyDFXFUxDTzX6MQkim8upwvVFckUlxRn62Ej9KjwvNCC+mLksIU0WkcojRuajrAMYt3Jx5ZHcX0wfbSPUB+PoL46fRCTs0LQwQnSOUKF9BiF4dofl4H4iGppHpwn7iqgLEUahuRab+rUVcBwmtKgGtxqqJr1cINLmtBaFe6O30LYL4ILpLYv3BjaUujs/rAcOWsTwLCkk6r7VeE0PTxwmmXLbGml5naVllYkVUkUgGlV3hBucFRcW0cSiwhkzVG2usW037DgG/mwddJvQZQ8l7/2f9yrsge9qXhpumtp3OGBOuhUtIcZjYZamEomqkPU1flJ1Uni2hQklBDtoytAzQAPMn+Ouh7pCGcxb3YbzRtlYdp9FwdPUcaWkkw/ZZ91DDAnIeN/cf4oC3hNAj5LDOfSayNUUYz7NkEbLxduq9qEh2EKO5GcHdyZMdsxxmu9E2PQ8s/Hjhlj1/fMmNcwRg/R3JLxnJ0wZ8MuZYfMQXtjDjoz5zXMcd9rX+PteV/jXR2eOT9vfnw/s2ZVIp42a1Ztqd+bNWEIfrDyyEpanYHj/AesQWgDIl7KmmVHNWjtmDW2+8Pub1TJ7aR6W+VMnCId90+c/QEH7eNAdYLAqZ2DXguc2sls18A5igPVGTjr0vGkgbOP09QJAqd2c/e1wKndbt41cI7gNHUGzvp0PGXgXG3cYW+rpkcYpDx4gkJM2z9xzNb+gadUUq5lI3J+FPpiEMqVoEtjPNI+klmk39e6TNRAxqPLBAv9LxgLNu+KbD4VYNpXl7SICE7j7GGns/J2U/bR1ahQisqHp1ijR/Cukn35o07fvku2TLANJO5s/6RTXS5e6MoVuHgtDt3+Aw==&lt;/diagram&gt;&lt;/mxfile&gt;"
-   id="svg4818"
-   sodipodi:docname="reactpy-flow-diagram.svg"
-   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
-  <metadata
-     id="metadata4822">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1920"
-     inkscape:window-height="1016"
-     id="namedview4820"
-     showgrid="true"
-     inkscape:zoom="1.1798897"
-     inkscape:cx="295.35891"
-     inkscape:cy="286.00243"
-     inkscape:window-x="0"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:current-layer="svg4818"
-     showguides="false"
-     inkscape:snap-object-midpoints="false"
-     inkscape:snap-bbox="true"
-     inkscape:snap-center="false"
-     inkscape:snap-text-baseline="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4962"
-       spacingx="10"
-       spacingy="10" />
-  </sodipodi:namedview>
-  <defs
-     id="defs4706">
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5531"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5529"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:0.96568627"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5527"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5525"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:0.96568627"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5523"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5521"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5224"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5206"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5513"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5511"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5509"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5507"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5200"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:0.96568627"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5197"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:0.96568627"
-         transform="matrix(0.8,0,0,0.8,10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path5200-3"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:0.96568627"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-  </defs>
-  <rect
-     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.73294544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="rect1077"
-     width="680"
-     height="580"
-     x="-0.5"
-     y="-0.5" />
-  <rect
-     style="opacity:1;fill:#9fa8da;fill-opacity:0.99607843;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="rect4966"
-     width="600"
-     height="200"
-     x="39.5"
-     y="39.5"
-     ry="20" />
-  <g
-     id="g5077"
-     transform="translate(30,40)">
-    <g
-       id="g5106"
-       style="opacity:1">
-      <rect
-         style="opacity:1;fill:#4052b5;fill-opacity:1;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="rect5002-9"
-         width="200"
-         height="100"
-         x="59.5"
-         y="49.5"
-         ry="20" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-         x="109.5"
-         y="109.5"
-         id="text5072"><tspan
-           sodipodi:role="line"
-           id="tspan5070"
-           x="109.5"
-           y="109.5"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1">layout</tspan></text>
-    </g>
-  </g>
-  <g
-     transform="translate(330,40)"
-     id="g5077-0">
-    <rect
-       ry="20"
-       y="49.5"
-       x="59.5"
-       height="100"
-       width="200"
-       id="rect5002-9-9"
-       style="opacity:1;fill:#4052b5;fill-opacity:1;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <text
-       id="text5072-2"
-       y="109.5"
-       x="89.5"
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-       xml:space="preserve"><tspan
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1"
-         y="109.5"
-         x="89.5"
-         id="tspan5070-5"
-         sodipodi:role="line">component</tspan></text>
-  </g>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-     x="49.5"
-     y="69.5"
-     id="text5110"><tspan
-       sodipodi:role="line"
-       id="tspan5108"
-       x="49.5"
-       y="69.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1">server</tspan></text>
-  <rect
-     style="opacity:1;fill:#9fa8da;fill-opacity:0.99607843;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="rect4966-5"
-     width="600"
-     height="200"
-     x="39.5"
-     y="339.5"
-     ry="20" />
-  <g
-     transform="translate(180,350)"
-     id="g5077-0-2">
-    <rect
-       ry="20"
-       y="49.5"
-       x="59.5"
-       height="100"
-       width="200"
-       id="rect5002-9-9-4"
-       style="opacity:1;fill:#4052b5;fill-opacity:1;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <text
-       id="text5072-2-7"
-       y="109.5"
-       x="129.5"
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-       xml:space="preserve"><tspan
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1"
-         y="109.5"
-         x="129.5"
-         id="tspan5070-5-7"
-         sodipodi:role="line">view</tspan></text>
-  </g>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-     x="49.817509"
-     y="370.17709"
-     id="text5110-5"><tspan
-       sodipodi:role="line"
-       id="tspan5108-4"
-       x="49.817509"
-       y="370.17709"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1">client</tspan></text>
-  <path
-     style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5523)"
-     d="m 359.5,399.5 130,-210"
-     id="path5179"
-     inkscape:connector-type="polyline"
-     inkscape:connector-curvature="0" />
-  <path
-     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
-     d="m 389.5,139.5 h -100"
-     id="path5181"
-     inkscape:connector-type="polyline"
-     inkscape:connector-curvature="0" />
-  <path
-     style="display:inline;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.29999995;stroke-dasharray:none;stroke-opacity:0.96568627;marker-end:url(#marker5527)"
-     d="m 189.5,189.5 130,210"
-     id="path5183"
-     inkscape:connector-type="polyline"
-     inkscape:connector-curvature="0" />
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0.99516913;stroke:none"
-     x="439.5"
-     y="299.5"
-     id="text5535"><tspan
-       sodipodi:role="line"
-       id="tspan5533"
-       x="439.5"
-       y="299.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;fill-opacity:0.99516913">event</tspan></text>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-     x="89.5"
-     y="299.5"
-     id="text5535-8"><tspan
-       sodipodi:role="line"
-       id="tspan5533-0"
-       x="89.5"
-       y="299.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;fill-opacity:1">VDOM diff</tspan></text>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0.98067633;stroke:none"
-     x="309.5"
-     y="189.5"
-     id="text5535-8-2"><tspan
-       sodipodi:role="line"
-       id="tspan5533-0-1"
-       x="309.5"
-       y="189.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;fill-opacity:0.98067633">VDOM</tspan></text>
-</svg>
diff --git a/docs/source/guides/understanding-reactpy/_static/live-examples-in-docs.gif b/docs/source/guides/understanding-reactpy/_static/live-examples-in-docs.gif
deleted file mode 100644
index 96a04d68ba0480c5614acece7994c744b21382c2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 182779
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
F4FKDfr|$p&

diff --git a/docs/source/guides/understanding-reactpy/_static/mvc-flow-diagram.svg b/docs/source/guides/understanding-reactpy/_static/mvc-flow-diagram.svg
deleted file mode 100644
index a1acbc2cb..000000000
--- a/docs/source/guides/understanding-reactpy/_static/mvc-flow-diagram.svg
+++ /dev/null
@@ -1,425 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.1"
-   width="680"
-   height="580"
-   viewBox="-0.5 -0.5 680 580"
-   content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2020-09-07T18:34:20.858Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36&quot; etag=&quot;IvUE9xI9CxZQnD7O0sJm&quot; version=&quot;13.6.6&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;3GUrj3vU2Wc3lj3yRkW7&quot; name=&quot;Page-1&quot;&gt;7Zpdb9owFIZ/DZetkrgEuCy027R1XSWkddqdiU8Sqw5mjvnar5+d2CEhFEpbPkZBlUqO7WP7+D0PdpIG6iWzzwKP4u+cAGt4Dpk10E3D89wrz2voP4fMc0sLdXJDJCgxlRaGPv0Lxtg01jElkFYqSs6ZpKOqMeDDIQSyYsNC8Gm1WshZtdcRjqBm6AeY1a2PlMg4t7abzsL+BWgU255dx5Qk2FY2hjTGhE9LJnTbQD3Bucy/JbMeMB08G5e83adnSouBCRjKlzTAv+WFQ760viXebfT49/4J/cIXfu5lgtnYTLjh+Uz564ZcuVUBw0Fe4P8Z65F2e3wsKAhVdA/ThVlPUM5Zta72cZFma3qtKqjRzsot/Mj8zzocWMMdnvOxtGY1ocFyVWXLh2fNXqV7T/DxkICet6uKpzGV0B/lE5kqmSpbLBNmikPKWI8zLrK2iGBoh4Gyp1LwJyiV+EEbBmFRYuWAihFMQEiYPbs8brHoKluAJyDFXFUxDTzX6MQkim8upwvVFckUlxRn62Ej9KjwvNCC+mLksIU0WkcojRuajrAMYt3Jx5ZHcX0wfbSPUB+PoL46fRCTs0LQwQnSOUKF9BiF4dofl4H4iGppHpwn7iqgLEUahuRab+rUVcBwmtKgGtxqqJr1cINLmtBaFe6O30LYL4ILpLYv3BjaUujs/rAcOWsTwLCkk6r7VeE0PTxwmmXLbGml5naVllYkVUkUgGlV3hBucFRcW0cSiwhkzVG2usW037DgG/mwddJvQZQ8l7/2f9yrsge9qXhpumtp3OGBOuhUtIcZjYZamEomqkPU1flJ1Uni2hQklBDtoytAzQAPMn+Ouh7pCGcxb3YbzRtlYdp9FwdPUcaWkkw/ZZ91DDAnIeN/cf4oC3hNAj5LDOfSayNUUYz7NkEbLxduq9qEh2EKO5GcHdyZMdsxxmu9E2PQ8s/Hjhlj1/fMmNcwRg/R3JLxnJ0wZ8MuZYfMQXtjDjoz5zXMcd9rX+PteV/jXR2eOT9vfnw/s2ZVIp42a1Ztqd+bNWEIfrDyyEpanYHj/AesQWgDIl7KmmVHNWjtmDW2+8Pub1TJ7aR6W+VMnCId90+c/QEH7eNAdYLAqZ2DXguc2sls18A5igPVGTjr0vGkgbOP09QJAqd2c/e1wKndbt41cI7gNHUGzvp0PGXgXG3cYW+rpkcYpDx4gkJM2z9xzNb+gadUUq5lI3J+FPpiEMqVoEtjPNI+klmk39e6TNRAxqPLBAv9LxgLNu+KbD4VYNpXl7SICE7j7GGns/J2U/bR1ahQisqHp1ijR/Cukn35o07fvku2TLANJO5s/6RTXS5e6MoVuHgtDt3+Aw==&lt;/diagram&gt;&lt;/mxfile&gt;"
-   id="svg4818"
-   sodipodi:docname="mvc-flow-diagram.svg"
-   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
-  <metadata
-     id="metadata4822">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1920"
-     inkscape:window-height="1016"
-     id="namedview4820"
-     showgrid="true"
-     inkscape:zoom="1.1798897"
-     inkscape:cx="230.94611"
-     inkscape:cy="244.6615"
-     inkscape:window-x="0"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:current-layer="svg4818"
-     showguides="false"
-     inkscape:snap-object-midpoints="false"
-     inkscape:snap-bbox="true"
-     inkscape:snap-center="false"
-     inkscape:snap-text-baseline="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4962"
-       spacingx="10"
-       spacingy="10" />
-  </sodipodi:namedview>
-  <defs
-     id="defs4706">
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5531"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5529"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:0.96568627"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5527"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5525"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:0.96568627"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5523"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5521"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5224"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5206"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5513"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5511"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5509"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5507"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5200"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:0.96568627"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5197"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:0.96568627"
-         transform="matrix(0.8,0,0,0.8,10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path5200-3"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:0.96568627;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:0.96568627"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-  </defs>
-  <rect
-     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="rect1940"
-     width="680"
-     height="580"
-     x="-0.5"
-     y="-0.5" />
-  <rect
-     style="opacity:1;fill:#9fa8da;fill-opacity:0.99607843;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="rect4966"
-     width="600"
-     height="200"
-     x="39.5"
-     y="39.5"
-     ry="20" />
-  <g
-     id="g5077"
-     transform="translate(30,40)">
-    <g
-       id="g5106">
-      <rect
-         style="opacity:1;fill:#4052b5;fill-opacity:1;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="rect5002-9"
-         width="200"
-         height="100"
-         x="59.5"
-         y="49.5"
-         ry="20" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-         x="123.48081"
-         y="109.51302"
-         id="text5072"><tspan
-           sodipodi:role="line"
-           id="tspan5070"
-           x="123.48081"
-           y="109.51302"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1">model</tspan></text>
-    </g>
-  </g>
-  <g
-     transform="translate(330,40)"
-     id="g5077-0">
-    <rect
-       ry="20"
-       y="49.5"
-       x="59.5"
-       height="100"
-       width="200"
-       id="rect5002-9-9"
-       style="opacity:1;fill:#4052b5;fill-opacity:1;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <text
-       id="text5072-2"
-       y="109.51302"
-       x="78.464844"
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-       xml:space="preserve"><tspan
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1"
-         y="109.51302"
-         x="78.464844"
-         id="tspan5070-5"
-         sodipodi:role="line">controller</tspan></text>
-  </g>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-     x="49.5"
-     y="69.5"
-     id="text5110"><tspan
-       sodipodi:role="line"
-       id="tspan5108"
-       x="49.5"
-       y="69.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1">server</tspan></text>
-  <rect
-     style="opacity:1;fill:#9fa8da;fill-opacity:0.99607843;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="rect4966-5"
-     width="600"
-     height="200"
-     x="39.5"
-     y="339.5"
-     ry="20" />
-  <g
-     id="g5077-9"
-     transform="translate(30,340)">
-    <g
-       id="g5106-4">
-      <rect
-         style="opacity:1;fill:#4052b5;fill-opacity:1;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="rect5002-9-6"
-         width="200"
-         height="100"
-         x="59.5"
-         y="49.5"
-         ry="20" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-         x="123.48081"
-         y="109.51302"
-         id="text5072-9"><tspan
-           sodipodi:role="line"
-           id="tspan5070-2"
-           x="123.48081"
-           y="109.51302"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1">model</tspan></text>
-    </g>
-  </g>
-  <g
-     transform="translate(330,340)"
-     id="g5077-0-2">
-    <rect
-       ry="20"
-       y="49.5"
-       x="59.5"
-       height="100"
-       width="200"
-       id="rect5002-9-9-4"
-       style="opacity:1;fill:#4052b5;fill-opacity:1;stroke:none;stroke-width:13;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <text
-       id="text5072-2-7"
-       y="109.5"
-       x="129.5"
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-       xml:space="preserve"><tspan
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1"
-         y="109.5"
-         x="129.5"
-         id="tspan5070-5-7"
-         sodipodi:role="line">view</tspan></text>
-  </g>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
-     x="49.817509"
-     y="370.17709"
-     id="text5110-5"><tspan
-       sodipodi:role="line"
-       id="tspan5108-4"
-       x="49.817509"
-       y="370.17709"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24px;font-family:monospace;-inkscape-font-specification:monospace;fill:#ffffff;fill-opacity:1">client</tspan></text>
-  <path
-     style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5523)"
-     d="m 489.5,389.5 v -200"
-     id="path5179"
-     inkscape:connector-type="polyline"
-     inkscape:connector-curvature="0" />
-  <path
-     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
-     d="m 389.5,139.5 h -100"
-     id="path5181"
-     inkscape:connector-type="polyline"
-     inkscape:connector-curvature="0" />
-  <path
-     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.29999995;stroke-dasharray:none;stroke-opacity:0.96568627;marker-end:url(#marker5527)"
-     d="m 189.5,189.5 v 200"
-     id="path5183"
-     inkscape:connector-type="polyline"
-     inkscape:connector-curvature="0" />
-  <path
-     style="display:inline;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.29999995;stroke-dasharray:none;stroke-opacity:0.96568627;marker-end:url(#marker5531)"
-     d="m 289.5,439.5 h 100"
-     id="path5183-6"
-     inkscape:connector-type="polyline"
-     inkscape:connector-curvature="0" />
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-     x="499.5"
-     y="299.5"
-     id="text5535"><tspan
-       sodipodi:role="line"
-       id="tspan5533"
-       x="499.5"
-       y="299.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace">event</tspan></text>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-     x="199.5"
-     y="299.5"
-     id="text5535-8"><tspan
-       sodipodi:role="line"
-       id="tspan5533-0"
-       x="199.5"
-       y="299.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace">sync</tspan></text>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-     x="289.5"
-     y="189.5"
-     id="text5535-8-2"><tspan
-       sodipodi:role="line"
-       id="tspan5533-0-1"
-       x="289.5"
-       y="189.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace">change</tspan></text>
-  <text
-     xml:space="preserve"
-     style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-     x="289.5"
-     y="489.5"
-     id="text5535-8-2-0"><tspan
-       sodipodi:role="line"
-       id="tspan5533-0-1-5"
-       x="289.5"
-       y="489.5"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;font-family:monospace;-inkscape-font-specification:monospace">render</tspan></text>
-</svg>
diff --git a/docs/source/guides/understanding-reactpy/_static/npm-download-trends.png b/docs/source/guides/understanding-reactpy/_static/npm-download-trends.png
deleted file mode 100644
index cf5140b0dbd3f46735f02a2fad8aa6338b1f40b8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 64372
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%0Dk(^(f=Hv3bW2M}jaCF<<V0W~Eg>N(2!bF25~GH|
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
U`You4fPj~lnx1O8GVIm=0bn6BhyVZp

diff --git a/docs/source/guides/understanding-reactpy/index.rst b/docs/source/guides/understanding-reactpy/index.rst
deleted file mode 100644
index 3e0b2ab72..000000000
--- a/docs/source/guides/understanding-reactpy/index.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Understanding ReactPy
-=====================
-
-.. toctree::
-    :hidden:
-
-    representing-html
-    what-are-components
-    the-rendering-pipeline
-    why-reactpy-needs-keys
-    the-rendering-process
-    layout-render-servers
-    writing-tests
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/understanding-reactpy/layout-render-servers.rst b/docs/source/guides/understanding-reactpy/layout-render-servers.rst
deleted file mode 100644
index 9a7cceb54..000000000
--- a/docs/source/guides/understanding-reactpy/layout-render-servers.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _Layout Render Servers:
-
-Layout Render Servers 🚧
-========================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/understanding-reactpy/representing-html.rst b/docs/source/guides/understanding-reactpy/representing-html.rst
deleted file mode 100644
index c2f32ebd9..000000000
--- a/docs/source/guides/understanding-reactpy/representing-html.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-.. _Representing HTML:
-
-Representing HTML 🚧
-====================
-
-.. note::
-
-    Under construction 🚧
-
-We've already discussed how to construct HTML with ReactPy in a :ref:`previous section <HTML
-with ReactPy>`, but we skimmed over the question of the data structure we use to represent
-it. Let's reconsider the examples from before - on the top is some HTML and on the
-bottom is the corresponding code to create it in ReactPy:
-
-.. code-block:: html
-
-    <div>
-        <h1>My Todo List</h1>
-        <ul>
-            <li>Build a cool new app</li>
-            <li>Share it with the world!</li>
-        </ul>
-    </div>
-
-.. testcode::
-
-    from reactpy import html
-
-    layout = html.div(
-        html.h1("My Todo List"),
-        html.ul(
-            html.li("Build a cool new app"),
-            html.li("Share it with the world!"),
-        )
-    )
-
-Since we've captured our HTML into out the ``layout`` variable, we can inspect what it
-contains. And, as it turns out, it holds a dictionary. Printing it produces the
-following output:
-
-.. testsetup::
-
-    from pprint import pprint
-    print = lambda *args, **kwargs: pprint(*args, **kwargs, sort_dicts=False)
-
-.. testcode::
-
-    assert layout == {
-        'tagName': 'div',
-        'children': [
-            {
-                'tagName': 'h1',
-                'children': ['My Todo List']
-            },
-            {
-                'tagName': 'ul',
-                'children': [
-                    {'tagName': 'li', 'children': ['Build a cool new app']},
-                    {'tagName': 'li', 'children': ['Share it with the world!']}
-                ]
-            }
-        ]
-    }
-
-This may look complicated, but let's take a moment to consider what's going on here. We
-have a series of nested dictionaries that, in some way, represents the HTML structure
-given above. If we look at their contents we should see a common form. Each has a
-``tagName`` key which contains, as the name would suggest, the tag name of an HTML
-element. Then within the ``children`` key is a list that either contains strings or
-other dictionaries that represent HTML elements.
-
-What we're seeing here is called a "virtual document object model" or :ref:`VDOM`. This
-is just a fancy way of saying we have a representation of the document object model or
-`DOM
-<https://en.wikipedia.org/wiki/Document_Object_Model#:~:text=The%20Document%20Object%20Model%20(DOM,document%20with%20a%20logical%20tree.&text=Nodes%20can%20have%20event%20handlers%20attached%20to%20them.>`__
-that is not the actual DOM.
diff --git a/docs/source/guides/understanding-reactpy/the-rendering-pipeline.rst b/docs/source/guides/understanding-reactpy/the-rendering-pipeline.rst
deleted file mode 100644
index cdde27f08..000000000
--- a/docs/source/guides/understanding-reactpy/the-rendering-pipeline.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-.. _The Rendering Pipeline:
-
-The Rendering Pipeline 🚧
-=========================
-
-.. talk about layouts and dispatchers
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/understanding-reactpy/the-rendering-process.rst b/docs/source/guides/understanding-reactpy/the-rendering-process.rst
deleted file mode 100644
index 00215a887..000000000
--- a/docs/source/guides/understanding-reactpy/the-rendering-process.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-.. _The Rendering Process:
-
-The Rendering Process 🚧
-========================
-
-.. refer to https://beta.reactjs.org/learn/render-and-commit
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/understanding-reactpy/what-are-components.rst b/docs/source/guides/understanding-reactpy/what-are-components.rst
deleted file mode 100644
index 4c22dda13..000000000
--- a/docs/source/guides/understanding-reactpy/what-are-components.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _What Are Components:
-
-What Are Components? 🚧
-=======================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/understanding-reactpy/why-reactpy-needs-keys.rst b/docs/source/guides/understanding-reactpy/why-reactpy-needs-keys.rst
deleted file mode 100644
index e570b8f41..000000000
--- a/docs/source/guides/understanding-reactpy/why-reactpy-needs-keys.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _Why ReactPy Needs Keys:
-
-Why ReactPy Needs Keys 🚧
-=========================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/guides/understanding-reactpy/writing-tests.rst b/docs/source/guides/understanding-reactpy/writing-tests.rst
deleted file mode 100644
index ffac27df6..000000000
--- a/docs/source/guides/understanding-reactpy/writing-tests.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _Writing Tests:
-
-Writing Tests 🚧
-================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/index.rst b/docs/source/index.rst
deleted file mode 100644
index 8b21160f6..000000000
--- a/docs/source/index.rst
+++ /dev/null
@@ -1,206 +0,0 @@
-.. card::
-
-    This documentation is still under construction 🚧. We welcome your `feedback
-    <https://github.com/reactive-python/reactpy/discussions>`__!
-
-
-ReactPy
-=======
-
-.. toctree::
-    :hidden:
-    :caption: Guides
-
-    guides/getting-started/index
-    guides/creating-interfaces/index
-    guides/adding-interactivity/index
-    guides/managing-state/index
-    guides/escape-hatches/index
-    guides/understanding-reactpy/index
-
-.. toctree::
-    :hidden:
-    :caption: Reference
-
-    reference/browser-events
-    reference/html-attributes
-    reference/hooks-api
-    _auto/apis
-    reference/javascript-api
-    reference/specifications
-
-.. toctree::
-    :hidden:
-    :caption: About
-
-    about/changelog
-    about/contributor-guide
-    about/credits-and-licenses
-    Source Code <https://github.com/reactive-python/reactpy>
-    Community <https://github.com/reactive-python/reactpy/discussions>
-
-ReactPy is a library for building user interfaces in Python without Javascript. ReactPy
-interfaces are made from :ref:`components <Your First Components>` which look and behave
-similarly to those found in `ReactJS <https://reactjs.org/>`__. Designed with simplicity
-in mind, ReactPy can be used by those without web development experience while also
-being powerful enough to grow with your ambitions.
-
-
-At a Glance
------------
-
-To get a rough idea of how to write apps in ReactPy, take a look at the tiny `"hello world"
-<https://en.wikipedia.org/wiki/%22Hello,_World!%22_program>`__ application below:
-
-.. reactpy:: guides/getting-started/_examples/hello_world
-
-.. hint::
-
-    Try clicking the **🚀 result** tab to see what this displays!
-
-So what exactly does this code do? First, it imports a few tools from ``reactpy`` that will
-get used to describe and execute an application. Then, we create an ``App`` function
-which will define the content the application displays. Specifically, it displays a kind
-of HTML element called an ``h1`` `section heading
-<https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements>`__.
-Importantly though, a ``@component`` decorator has been applied to the ``App`` function
-to turn it into a :ref:`component <Your First Components>`. Finally, we :ref:`run
-<Running ReactPy>` a development web server by passing the ``App`` component to the
-``run()`` function.
-
-.. note::
-
-    See :ref:`Running ReactPy in Production` to learn how to use a production-grade server
-    to run ReactPy.
-
-
-Learning ReactPy
-----------------
-
-This documentation is broken up into chapters and sections that introduce you to
-concepts step by step with detailed explanations and lots of examples. You should feel
-free to dive into any content that seems interesting. While each chapter assumes
-knowledge from those that came before, when you encounter a concept you're unfamiliar
-with you should look for links that will help direct you to the place where it was
-originally taught.
-
-
-Chapter 1 - :ref:`Getting Started`
------------------------------------
-
-If you want to follow along with examples in the sections that follow, you'll want to
-start here so you can :ref:`install ReactPy <Installing ReactPy>`. This section also contains
-more detailed information about how to :ref:`run ReactPy <Running ReactPy>` in different
-contexts. For example, if you want to embed ReactPy into an existing application, or run
-ReactPy within a Jupyter Notebook, this is where you can learn how to do those things.
-
-.. grid:: 1 2 2 2
-
-    .. grid-item::
-
-        .. image:: _static/install-and-run-reactpy.gif
-
-    .. grid-item::
-
-        .. image:: guides/getting-started/_static/reactpy-in-jupyterlab.gif
-
-.. card::
-    :link: guides/getting-started/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Install ReactPy and run it in a variety of different ways - with different web servers
-    and frameworks. You'll even embed ReactPy into an existing app.
-
-
-Chapter 2 - :ref:`Creating Interfaces`
---------------------------------------
-
-ReactPy is a Python package for making user interfaces (UI). These interfaces are built
-from small elements of functionality like buttons text and images. ReactPy allows you to
-combine these elements into reusable :ref:`"components" <your first components>`. In the
-sections that follow you'll learn how these UI elements are created and organized into
-components. Then, you'll use this knowledge to create interfaces from raw data:
-
-.. reactpy:: guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys
-
-.. card::
-    :link: guides/creating-interfaces/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Learn to construct user interfaces from basic HTML elements and reusable components.
-
-
-Chapter 3 - :ref:`Adding Interactivity`
----------------------------------------
-
-Components often need to change what’s on the screen as a result of an interaction. For
-example, typing into the form should update the input field, clicking a “Comment” button
-should bring up a text input field, clicking “Buy” should put a product in the shopping
-cart. Components need to “remember” things like the current input value, the current
-image, the shopping cart. In ReactPy, this kind of component-specific memory is created and
-updated with a "hook" called ``use_state()`` that creates a **state variable** and
-**state setter** respectively:
-
-.. reactpy:: guides/adding-interactivity/components-with-state/_examples/adding_state_variable
-
-In ReactPy, ``use_state``, as well as any other function whose name starts with ``use``, is
-called a "hook". These are special functions that should only be called while ReactPy is
-:ref:`rendering <the rendering process>`. They let you "hook into" the different
-capabilities of ReactPy's components of which ``use_state`` is just one (well get into the
-other :ref:`later <managing state>`).
-
-.. card::
-    :link: guides/adding-interactivity/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Learn how user interfaces can be made to respond to user interaction in real-time.
-
-
-Chapter 4 - :ref:`Managing State`
----------------------------------
-
-.. card::
-    :link: guides/managing-state/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Under construction 🚧
-
-
-
-Chapter 5 - :ref:`Escape Hatches`
----------------------------------
-
-.. card::
-    :link: guides/escape-hatches/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Under construction 🚧
-
-
-Chapter 6 - :ref:`Understanding ReactPy`
-----------------------------------------
-
-.. card::
-    :link: guides/escape-hatches/index
-    :link-type: doc
-
-    :octicon:`book` Read More
-    ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-    Under construction 🚧
-
diff --git a/docs/source/reference/_examples/character_movement/main.py b/docs/source/reference/_examples/character_movement/main.py
deleted file mode 100644
index 9545b0c0a..000000000
--- a/docs/source/reference/_examples/character_movement/main.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from pathlib import Path
-from typing import NamedTuple
-
-from reactpy import component, html, run, use_state
-from reactpy.widgets import image
-
-HERE = Path(__file__)
-CHARACTER_IMAGE = (HERE.parent / "static" / "bunny.png").read_bytes()
-
-
-class Position(NamedTuple):
-    x: int
-    y: int
-    angle: int
-
-
-def rotate(degrees):
-    return lambda old_position: Position(
-        old_position.x,
-        old_position.y,
-        old_position.angle + degrees,
-    )
-
-
-def translate(x=0, y=0):
-    return lambda old_position: Position(
-        old_position.x + x,
-        old_position.y + y,
-        old_position.angle,
-    )
-
-
-@component
-def Scene():
-    position, set_position = use_state(Position(100, 100, 0))
-
-    return html.div(
-        {"style": {"width": "225px"}},
-        html.div(
-            {
-                "style": {
-                    "width": "200px",
-                    "height": "200px",
-                    "background_color": "slategray",
-                }
-            },
-            image(
-                "png",
-                CHARACTER_IMAGE,
-                {
-                    "style": {
-                        "position": "relative",
-                        "left": f"{position.x}px",
-                        "top": f"{position.y}.px",
-                        "transform": f"rotate({position.angle}deg) scale(2, 2)",
-                    }
-                },
-            ),
-        ),
-        html.button(
-            {"on_click": lambda e: set_position(translate(x=-10))}, "Move Left"
-        ),
-        html.button(
-            {"on_click": lambda e: set_position(translate(x=10))}, "Move Right"
-        ),
-        html.button({"on_click": lambda e: set_position(translate(y=-10))}, "Move Up"),
-        html.button({"on_click": lambda e: set_position(translate(y=10))}, "Move Down"),
-        html.button({"on_click": lambda e: set_position(rotate(-30))}, "Rotate Left"),
-        html.button({"on_click": lambda e: set_position(rotate(30))}, "Rotate Right"),
-    )
-
-
-run(Scene)
diff --git a/docs/source/reference/_examples/character_movement/static/bunny.png b/docs/source/reference/_examples/character_movement/static/bunny.png
deleted file mode 100644
index ce1f989c5202ffe9ddabe03fabdc933c4aca1a71..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 474
zcmV<00VV#4P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px$lu1NER9J=WmOo3wKp2Og6Dfg~LaAV(ATF*>;vkL=3gX}>h?|?Zh#x{+T)RmZ
zL2xLdjt=$%w6lYj20C0D2pO`)p-D;8w7p!ai}^v|^5^dN+`aF;7s!<9ze}im<au7~
zbJsG17s4o2)eObB<&sjb`SM)L)asZBz_m=zzX14dx3x^Q07A<Rp&6%zPy&dUFI0&_
z5S^`KIe!Kq0O459LgKCi06?Ksn0c?GM0FsX3m>mf0PG$dkBv329z^TFvKr^m{POIE
zyZdVZ9v?pG*qtauth%k{s9;6kB?>`c*r?Y=?LgCJ-fcC#T;3p;HvlGflky5o(?CjK
z6dn<31F*8Tj_iB|025NqfoLsg)N247ot`U!`VeAuV=EoN^VJ)NxBC;{*!>>Ga%JW?
zcE2|PkR${G@N~?B9TO*I06)ouYnj;n9)uD~*E|tG7{n-5nR5J!Fj&MqHr(2~AQ*ge
zdq)(@mAJ!d3}%{A{g4c#<o%@q4D-Mb%~*RNB?Bo1z~0G48oNxHGX0Kz01cP3^?LgE
Qga7~l07*qoM6N<$f>IRFIsgCw

diff --git a/docs/source/reference/_examples/click_count.py b/docs/source/reference/_examples/click_count.py
deleted file mode 100644
index 3ee2c89c5..000000000
--- a/docs/source/reference/_examples/click_count.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import reactpy
-
-
-@reactpy.component
-def ClickCount():
-    count, set_count = reactpy.hooks.use_state(0)
-
-    return reactpy.html.button(
-        {"on_click": lambda event: set_count(count + 1)}, [f"Click count: {count}"]
-    )
-
-
-reactpy.run(ClickCount)
diff --git a/docs/source/reference/_examples/material_ui_switch.py b/docs/source/reference/_examples/material_ui_switch.py
deleted file mode 100644
index 704ae3145..000000000
--- a/docs/source/reference/_examples/material_ui_switch.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import reactpy
-
-mui = reactpy.web.module_from_template("react", "@material-ui/core@^5.0", fallback="⌛")
-Switch = reactpy.web.export(mui, "Switch")
-
-
-@reactpy.component
-def DayNightSwitch():
-    checked, set_checked = reactpy.hooks.use_state(False)
-
-    return reactpy.html.div(
-        Switch(
-            {
-                "checked": checked,
-                "onChange": lambda event, checked: set_checked(checked),
-            }
-        ),
-        "🌞" if checked else "🌚",
-    )
-
-
-reactpy.run(DayNightSwitch)
diff --git a/docs/source/reference/_examples/matplotlib_plot.py b/docs/source/reference/_examples/matplotlib_plot.py
deleted file mode 100644
index 5c4d616fe..000000000
--- a/docs/source/reference/_examples/matplotlib_plot.py
+++ /dev/null
@@ -1,85 +0,0 @@
-from io import BytesIO
-
-import matplotlib.pyplot as plt
-
-import reactpy
-from reactpy.widgets import image
-
-
-@reactpy.component
-def PolynomialPlot():
-    coefficients, set_coefficients = reactpy.hooks.use_state([0])
-
-    x = list(linspace(-1, 1, 50))
-    y = [polynomial(value, coefficients) for value in x]
-
-    return reactpy.html.div(
-        plot(f"{len(coefficients)} Term Polynomial", x, y),
-        ExpandableNumberInputs(coefficients, set_coefficients),
-    )
-
-
-@reactpy.component
-def ExpandableNumberInputs(values, set_values):
-    inputs = []
-    for i in range(len(values)):
-
-        def set_value_at_index(event, index=i):
-            new_value = float(event["target"]["value"] or 0)
-            set_values(values[:index] + [new_value] + values[index + 1 :])
-
-        inputs.append(poly_coef_input(i + 1, set_value_at_index))
-
-    def add_input():
-        set_values([*values, 0])
-
-    def del_input():
-        set_values(values[:-1])
-
-    return reactpy.html.div(
-        reactpy.html.div(
-            "add/remove term:",
-            reactpy.html.button({"on_click": lambda event: add_input()}, "+"),
-            reactpy.html.button({"on_click": lambda event: del_input()}, "-"),
-        ),
-        inputs,
-    )
-
-
-def plot(title, x, y):
-    fig, axes = plt.subplots()
-    axes.plot(x, y)
-    axes.set_title(title)
-    buffer = BytesIO()
-    fig.savefig(buffer, format="png")
-    plt.close(fig)
-    return image("png", buffer.getvalue())
-
-
-def poly_coef_input(index, callback):
-    return reactpy.html.div(
-        {"style": {"margin-top": "5px"}, "key": index},
-        reactpy.html.label(
-            "C",
-            reactpy.html.sub(index),
-            " x X",
-            reactpy.html.sup(index),
-        ),
-        reactpy.html.input({"type": "number", "on_change": callback}),
-    )
-
-
-def polynomial(x, coefficients):
-    return sum(c * (x ** (i + 1)) for i, c in enumerate(coefficients))
-
-
-def linspace(start, stop, n):
-    if n == 1:
-        yield stop
-        return
-    h = (stop - start) / (n - 1)
-    for i in range(n):
-        yield start + h * i
-
-
-reactpy.run(PolynomialPlot)
diff --git a/docs/source/reference/_examples/network_graph.py b/docs/source/reference/_examples/network_graph.py
deleted file mode 100644
index 79b1092f3..000000000
--- a/docs/source/reference/_examples/network_graph.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import random
-
-import reactpy
-
-react_cytoscapejs = reactpy.web.module_from_template(
-    "react",
-    "react-cytoscapejs",
-    fallback="⌛",
-)
-Cytoscape = reactpy.web.export(react_cytoscapejs, "default")
-
-
-@reactpy.component
-def RandomNetworkGraph():
-    return Cytoscape(
-        {
-            "style": {"width": "100%", "height": "200px"},
-            "elements": random_network(20),
-            "layout": {"name": "cose"},
-        }
-    )
-
-
-def random_network(number_of_nodes):
-    conns = []
-    nodes = [{"data": {"id": 0, "label": 0}}]
-
-    for src_node_id in range(1, number_of_nodes + 1):
-        tgt_node = random.choice(nodes)
-        src_node = {"data": {"id": src_node_id, "label": src_node_id}}
-
-        new_conn = {"data": {"source": src_node_id, "target": tgt_node["data"]["id"]}}
-
-        nodes.append(src_node)
-        conns.append(new_conn)
-
-    return nodes + conns
-
-
-reactpy.run(RandomNetworkGraph)
diff --git a/docs/source/reference/_examples/pigeon_maps.py b/docs/source/reference/_examples/pigeon_maps.py
deleted file mode 100644
index 1ddf04fdc..000000000
--- a/docs/source/reference/_examples/pigeon_maps.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import reactpy
-
-pigeon_maps = reactpy.web.module_from_template("react", "pigeon-maps", fallback="⌛")
-Map, Marker = reactpy.web.export(pigeon_maps, ["Map", "Marker"])
-
-
-@reactpy.component
-def MapWithMarkers():
-    marker_anchor, add_marker_anchor, remove_marker_anchor = use_set()
-
-    markers = [
-        Marker(
-            {
-                "anchor": anchor,
-                "onClick": lambda event, a=anchor: remove_marker_anchor(a),
-            },
-            key=str(anchor),
-        )
-        for anchor in marker_anchor
-    ]
-
-    return Map(
-        {
-            "defaultCenter": (37.774, -122.419),
-            "defaultZoom": 12,
-            "height": "300px",
-            "metaWheelZoom": True,
-            "onClick": lambda event: add_marker_anchor(tuple(event["latLng"])),
-        },
-        markers,
-    )
-
-
-def use_set(initial_value=None):
-    values, set_values = reactpy.hooks.use_state(initial_value or set())
-
-    def add_value(lat_lon):
-        set_values(values.union({lat_lon}))
-
-    def remove_value(lat_lon):
-        set_values(values.difference({lat_lon}))
-
-    return values, add_value, remove_value
-
-
-reactpy.run(MapWithMarkers)
diff --git a/docs/source/reference/_examples/simple_dashboard.py b/docs/source/reference/_examples/simple_dashboard.py
deleted file mode 100644
index 66913fc84..000000000
--- a/docs/source/reference/_examples/simple_dashboard.py
+++ /dev/null
@@ -1,102 +0,0 @@
-import asyncio
-import random
-import time
-
-import reactpy
-from reactpy.widgets import Input
-
-victory = reactpy.web.module_from_template(
-    "react",
-    "victory-line",
-    fallback="⌛",
-    # not usually required (see issue #461 for more info)
-    unmount_before_update=True,
-)
-VictoryLine = reactpy.web.export(victory, "VictoryLine")
-
-
-@reactpy.component
-def RandomWalk():
-    mu = reactpy.hooks.use_ref(0)
-    sigma = reactpy.hooks.use_ref(1)
-
-    return reactpy.html.div(
-        RandomWalkGraph(mu, sigma),
-        reactpy.html.style(
-            """
-            .number-input-container {margin-bottom: 20px}
-            .number-input-container input {width: 48%;float: left}
-            .number-input-container input + input {margin-left: 4%}
-            """
-        ),
-        NumberInput(
-            "Mean",
-            mu.current,
-            mu.set_current,
-            (-1, 1, 0.01),
-        ),
-        NumberInput(
-            "Standard Deviation",
-            sigma.current,
-            sigma.set_current,
-            (0, 1, 0.01),
-        ),
-    )
-
-
-@reactpy.component
-def RandomWalkGraph(mu, sigma):
-    interval = use_interval(0.5)
-    data, set_data = reactpy.hooks.use_state([{"x": 0, "y": 0}] * 50)
-
-    @reactpy.hooks.use_effect
-    async def animate():
-        await interval
-        last_data_point = data[-1]
-        next_data_point = {
-            "x": last_data_point["x"] + 1,
-            "y": last_data_point["y"] + random.gauss(mu.current, sigma.current),
-        }
-        set_data(data[1:] + [next_data_point])
-
-    return VictoryLine(
-        {
-            "data": data,
-            "style": {
-                "parent": {"width": "100%"},
-                "data": {"stroke": "royalblue"},
-            },
-        }
-    )
-
-
-@reactpy.component
-def NumberInput(label, value, set_value_callback, domain):
-    minimum, maximum, step = domain
-    attrs = {"min": minimum, "max": maximum, "step": step}
-
-    value, set_value = reactpy.hooks.use_state(value)
-
-    def update_value(value):
-        set_value(value)
-        set_value_callback(value)
-
-    return reactpy.html.fieldset(
-        {"class_name": "number-input-container"},
-        reactpy.html.legend({"style": {"font-size": "medium"}}, label),
-        Input(update_value, "number", value, attributes=attrs, cast=float),
-        Input(update_value, "range", value, attributes=attrs, cast=float),
-    )
-
-
-def use_interval(rate):
-    usage_time = reactpy.hooks.use_ref(time.time())
-
-    async def interval() -> None:
-        await asyncio.sleep(rate - (time.time() - usage_time.current))
-        usage_time.current = time.time()
-
-    return asyncio.ensure_future(interval())
-
-
-reactpy.run(RandomWalk)
diff --git a/docs/source/reference/_examples/slideshow.py b/docs/source/reference/_examples/slideshow.py
deleted file mode 100644
index b490b3feb..000000000
--- a/docs/source/reference/_examples/slideshow.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import reactpy
-
-
-@reactpy.component
-def Slideshow():
-    index, set_index = reactpy.hooks.use_state(0)
-
-    def next_image(event):
-        set_index(index + 1)
-
-    return reactpy.html.img(
-        {
-            "src": f"https://picsum.photos/id/{index}/800/300",
-            "style": {"cursor": "pointer"},
-            "on_click": next_image,
-        }
-    )
-
-
-reactpy.run(Slideshow)
diff --git a/docs/source/reference/_examples/snake_game.py b/docs/source/reference/_examples/snake_game.py
deleted file mode 100644
index 36916410e..000000000
--- a/docs/source/reference/_examples/snake_game.py
+++ /dev/null
@@ -1,188 +0,0 @@
-import asyncio
-import enum
-import random
-import time
-
-import reactpy
-
-
-class GameState(enum.Enum):
-    init = 0
-    lost = 1
-    won = 2
-    play = 3
-
-
-@reactpy.component
-def GameView():
-    game_state, set_game_state = reactpy.hooks.use_state(GameState.init)
-
-    if game_state == GameState.play:
-        return GameLoop(grid_size=6, block_scale=50, set_game_state=set_game_state)
-
-    start_button = reactpy.html.button(
-        {"on_click": lambda event: set_game_state(GameState.play)}, "Start"
-    )
-
-    if game_state == GameState.won:
-        menu = reactpy.html.div(reactpy.html.h3("You won!"), start_button)
-    elif game_state == GameState.lost:
-        menu = reactpy.html.div(reactpy.html.h3("You lost"), start_button)
-    else:
-        menu = reactpy.html.div(reactpy.html.h3("Click to play"), start_button)
-
-    menu_style = reactpy.html.style(
-        """
-        .snake-game-menu h3 {
-            margin-top: 0px !important;
-        }
-        """
-    )
-
-    return reactpy.html.div({"class_name": "snake-game-menu"}, menu_style, menu)
-
-
-class Direction(enum.Enum):
-    ArrowUp = (0, -1)
-    ArrowLeft = (-1, 0)
-    ArrowDown = (0, 1)
-    ArrowRight = (1, 0)
-
-
-@reactpy.component
-def GameLoop(grid_size, block_scale, set_game_state):
-    # we `use_ref` here to capture the latest direction press without any delay
-    direction = reactpy.hooks.use_ref(Direction.ArrowRight.value)
-    # capture the last direction of travel that was rendered
-    last_direction = direction.current
-
-    snake, set_snake = reactpy.hooks.use_state(
-        [(grid_size // 2 - 1, grid_size // 2 - 1)]
-    )
-    food, set_food = use_snake_food(grid_size, snake)
-
-    grid = create_grid(grid_size, block_scale)
-
-    @reactpy.event(prevent_default=True)
-    def on_direction_change(event):
-        if hasattr(Direction, event["key"]):
-            maybe_new_direction = Direction[event["key"]].value
-            direction_vector_sum = tuple(
-                map(sum, zip(last_direction, maybe_new_direction))
-            )
-            if direction_vector_sum != (0, 0):
-                direction.current = maybe_new_direction
-
-    grid_wrapper = reactpy.html.div({"on_key_down": on_direction_change}, grid)
-
-    assign_grid_block_color(grid, food, "blue")
-
-    for location in snake:
-        assign_grid_block_color(grid, location, "white")
-
-    new_game_state = None
-    if snake[-1] in snake[:-1]:
-        assign_grid_block_color(grid, snake[-1], "red")
-        new_game_state = GameState.lost
-    elif len(snake) == grid_size**2:
-        assign_grid_block_color(grid, snake[-1], "yellow")
-        new_game_state = GameState.won
-
-    interval = use_interval(0.5)
-
-    @reactpy.hooks.use_effect
-    async def animate():
-        if new_game_state is not None:
-            await asyncio.sleep(1)
-            set_game_state(new_game_state)
-            return
-
-        await interval
-
-        new_snake_head = (
-            # grid wraps due to mod op here
-            (snake[-1][0] + direction.current[0]) % grid_size,
-            (snake[-1][1] + direction.current[1]) % grid_size,
-        )
-
-        if snake[-1] == food:
-            set_food()
-            new_snake = [*snake, new_snake_head]
-        else:
-            new_snake = snake[1:] + [new_snake_head]
-
-        set_snake(new_snake)
-
-    return grid_wrapper
-
-
-def use_snake_food(grid_size, current_snake):
-    grid_points = {(x, y) for x in range(grid_size) for y in range(grid_size)}
-    points_not_in_snake = grid_points.difference(current_snake)
-
-    food, _set_food = reactpy.hooks.use_state(current_snake[-1])
-
-    def set_food():
-        _set_food(random.choice(list(points_not_in_snake)))
-
-    return food, set_food
-
-
-def use_interval(rate):
-    usage_time = reactpy.hooks.use_ref(time.time())
-
-    async def interval() -> None:
-        await asyncio.sleep(rate - (time.time() - usage_time.current))
-        usage_time.current = time.time()
-
-    return asyncio.ensure_future(interval())
-
-
-def create_grid(grid_size, block_scale):
-    return reactpy.html.div(
-        {
-            "style": {
-                "height": f"{block_scale * grid_size}px",
-                "width": f"{block_scale * grid_size}px",
-                "cursor": "pointer",
-                "display": "grid",
-                "grid-gap": 0,
-                "grid-template-columns": f"repeat({grid_size}, {block_scale}px)",
-                "grid-template-rows": f"repeat({grid_size}, {block_scale}px)",
-            },
-            "tab_index": -1,
-        },
-        [
-            reactpy.html.div(
-                {"style": {"height": f"{block_scale}px"}, "key": i},
-                [
-                    create_grid_block("black", block_scale, key=i)
-                    for i in range(grid_size)
-                ],
-            )
-            for i in range(grid_size)
-        ],
-    )
-
-
-def create_grid_block(color, block_scale, key):
-    return reactpy.html.div(
-        {
-            "style": {
-                "height": f"{block_scale}px",
-                "width": f"{block_scale}px",
-                "background_color": color,
-                "outline": "1px solid grey",
-            },
-            "key": key,
-        }
-    )
-
-
-def assign_grid_block_color(grid, point, color):
-    x, y = point
-    block = grid["children"][x]["children"][y]
-    block["attributes"]["style"]["backgroundColor"] = color
-
-
-reactpy.run(GameView)
diff --git a/docs/source/reference/_examples/todo.py b/docs/source/reference/_examples/todo.py
deleted file mode 100644
index 104ea59a9..000000000
--- a/docs/source/reference/_examples/todo.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import reactpy
-
-
-@reactpy.component
-def Todo():
-    items, set_items = reactpy.hooks.use_state([])
-
-    async def add_new_task(event):
-        if event["key"] == "Enter":
-            set_items([*items, event["target"]["value"]])
-
-    tasks = []
-
-    for index, text in enumerate(items):
-
-        async def remove_task(event, index=index):
-            set_items(items[:index] + items[index + 1 :])
-
-        task_text = reactpy.html.td(reactpy.html.p(text))
-        delete_button = reactpy.html.td(
-            {"on_click": remove_task}, reactpy.html.button(["x"])
-        )
-        tasks.append(reactpy.html.tr(task_text, delete_button))
-
-    task_input = reactpy.html.input({"on_key_down": add_new_task})
-    task_table = reactpy.html.table(tasks)
-
-    return reactpy.html.div(
-        reactpy.html.p("press enter to add a task:"),
-        task_input,
-        task_table,
-    )
-
-
-reactpy.run(Todo)
diff --git a/docs/source/reference/_examples/use_reducer_counter.py b/docs/source/reference/_examples/use_reducer_counter.py
deleted file mode 100644
index 6f9581dfd..000000000
--- a/docs/source/reference/_examples/use_reducer_counter.py
+++ /dev/null
@@ -1,27 +0,0 @@
-import reactpy
-
-
-def reducer(count, action):
-    if action == "increment":
-        return count + 1
-    elif action == "decrement":
-        return count - 1
-    elif action == "reset":
-        return 0
-    else:
-        msg = f"Unknown action '{action}'"
-        raise ValueError(msg)
-
-
-@reactpy.component
-def Counter():
-    count, dispatch = reactpy.hooks.use_reducer(reducer, 0)
-    return reactpy.html.div(
-        f"Count: {count}",
-        reactpy.html.button({"on_click": lambda event: dispatch("reset")}, "Reset"),
-        reactpy.html.button({"on_click": lambda event: dispatch("increment")}, "+"),
-        reactpy.html.button({"on_click": lambda event: dispatch("decrement")}, "-"),
-    )
-
-
-reactpy.run(Counter)
diff --git a/docs/source/reference/_examples/use_state_counter.py b/docs/source/reference/_examples/use_state_counter.py
deleted file mode 100644
index b2d8c84a9..000000000
--- a/docs/source/reference/_examples/use_state_counter.py
+++ /dev/null
@@ -1,26 +0,0 @@
-import reactpy
-
-
-def increment(last_count):
-    return last_count + 1
-
-
-def decrement(last_count):
-    return last_count - 1
-
-
-@reactpy.component
-def Counter():
-    initial_count = 0
-    count, set_count = reactpy.hooks.use_state(initial_count)
-    return reactpy.html.div(
-        f"Count: {count}",
-        reactpy.html.button(
-            {"on_click": lambda event: set_count(initial_count)}, "Reset"
-        ),
-        reactpy.html.button({"on_click": lambda event: set_count(increment)}, "+"),
-        reactpy.html.button({"on_click": lambda event: set_count(decrement)}, "-"),
-    )
-
-
-reactpy.run(Counter)
diff --git a/docs/source/reference/_examples/victory_chart.py b/docs/source/reference/_examples/victory_chart.py
deleted file mode 100644
index ce37c522f..000000000
--- a/docs/source/reference/_examples/victory_chart.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import reactpy
-
-victory = reactpy.web.module_from_template("react", "victory-bar", fallback="⌛")
-VictoryBar = reactpy.web.export(victory, "VictoryBar")
-
-bar_style = {"parent": {"width": "500px"}, "data": {"fill": "royalblue"}}
-reactpy.run(reactpy.component(lambda: VictoryBar({"style": bar_style})))
diff --git a/docs/source/reference/_static/vdom-json-schema.json b/docs/source/reference/_static/vdom-json-schema.json
deleted file mode 100644
index b1005d2ed..000000000
--- a/docs/source/reference/_static/vdom-json-schema.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{
-  "$ref": "#/definitions/element",
-  "$schema": "http://json-schema.org/draft-07/schema",
-  "definitions": {
-    "element": {
-      "dependentSchemas": {
-        "error": {
-          "properties": {
-            "tagName": {
-              "maxLength": 0
-            }
-          }
-        }
-      },
-      "properties": {
-        "attributes": {
-          "type": "object"
-        },
-        "children": {
-          "$ref": "#/definitions/elementChildren"
-        },
-        "error": {
-          "type": "string"
-        },
-        "eventHandlers": {
-          "$ref": "#/definitions/elementEventHandlers"
-        },
-        "importSource": {
-          "$ref": "#/definitions/importSource"
-        },
-        "key": {
-          "type": "string"
-        },
-        "tagName": {
-          "type": "string"
-        }
-      },
-      "required": ["tagName"],
-      "type": "object"
-    },
-    "elementChildren": {
-      "items": {
-        "$ref": "#/definitions/elementOrString"
-      },
-      "type": "array"
-    },
-    "elementEventHandlers": {
-      "patternProperties": {
-        ".*": {
-          "$ref": "#/definitions/eventHander"
-        }
-      },
-      "type": "object"
-    },
-    "elementOrString": {
-      "if": {
-        "type": "object"
-      },
-      "then": {
-        "$ref": "#/definitions/element"
-      },
-      "type": ["object", "string"]
-    },
-    "eventHandler": {
-      "properties": {
-        "preventDefault": {
-          "type": "boolean"
-        },
-        "stopPropagation": {
-          "type": "boolean"
-        },
-        "target": {
-          "type": "string"
-        }
-      },
-      "required": ["target"],
-      "type": "object"
-    },
-    "importSource": {
-      "properties": {
-        "fallback": {
-          "if": {
-            "not": {
-              "type": "null"
-            }
-          },
-          "then": {
-            "$ref": "#/definitions/elementOrString"
-          },
-          "type": ["object", "string", "null"]
-        },
-        "source": {
-          "type": "string"
-        },
-        "sourceType": {
-          "enum": ["URL", "NAME"]
-        },
-        "unmountBeforeUpdate": {
-          "type": "boolean"
-        }
-      },
-      "required": ["source"],
-      "type": "object"
-    }
-  }
-}
diff --git a/docs/source/reference/browser-events.rst b/docs/source/reference/browser-events.rst
deleted file mode 100644
index 632be410a..000000000
--- a/docs/source/reference/browser-events.rst
+++ /dev/null
@@ -1,65 +0,0 @@
-.. _Browser Events:
-
-Browser Events 🚧
-=================
-
-The event types below are triggered by an event in the bubbling phase. To register an
-event handler for the capture phase, append Capture to the event name; for example,
-instead of using ``onClick``, you would use ``onClickCapture`` to handle the click event
-in the capture phase.
-
-.. note::
-
-    Under construction 🚧
-
-
-Clipboard Events
-----------------
-
-Composition Events
-------------------
-
-Keyboard Events
----------------
-
-Focus Events
-------------
-
-Form Events
------------
-
-Generic Events
---------------
-
-Mouse Events
-------------
-
-Pointer Events
---------------
-
-Selection Events
-----------------
-
-Touch Events
-------------
-
-UI Events
----------
-
-Wheel Events
-------------
-
-Media Events
-------------
-
-Image Events
-------------
-
-Animation Events
-----------------
-
-Transition Events
------------------
-
-Other Events
-------------
diff --git a/docs/source/reference/hooks-api.rst b/docs/source/reference/hooks-api.rst
deleted file mode 100644
index ca8123e85..000000000
--- a/docs/source/reference/hooks-api.rst
+++ /dev/null
@@ -1,379 +0,0 @@
-=========
-Hooks API
-=========
-
-Hooks are functions that allow you to "hook into" the life cycle events and state of
-Components. Their usage should always follow the :ref:`Rules of Hooks`. For most use
-cases the :ref:`Basic Hooks` should be enough, however the remaining
-:ref:`Supplementary Hooks` should fulfill less common scenarios.
-
-
-Basic Hooks
-===========
-
-
-Use State
----------
-
-.. code-block::
-
-    state, set_state = use_state(initial_state)
-
-Returns a stateful value and a function to update it.
-
-During the first render the ``state`` will be identical to the ``initial_state`` passed
-as the first argument. However in subsequent renders ``state`` will take on the value
-passed to ``set_state``.
-
-.. code-block::
-
-    set_state(new_state)
-
-The ``set_state`` function accepts a ``new_state`` as its only argument and schedules a
-re-render of the component where ``use_state`` was initially called. During these
-subsequent re-renders the ``state`` returned by ``use_state`` will take on the value
-of ``new_state``.
-
-.. note::
-
-    The identity of ``set_state`` is guaranteed to be preserved across renders. This
-    means it can safely be omitted from dependency lists in :ref:`Use Effect` or
-    :ref:`Use Callback`.
-
-
-Functional Updates
-..................
-
-If the new state is computed from the previous state, you can pass a function which
-accepts a single argument (the previous state) and returns the next state. Consider this
-simply use case of a counter where we've pulled out logic for increment and
-decremented the count:
-
-.. reactpy:: _examples/use_state_counter
-
-We use the functional form for the "+" and "-" buttons since the next ``count`` depends
-on the previous value, while for the "Reset" button we simple assign the
-``initial_count`` since it is independent of the prior ``count``. This is a trivial
-example, but it demonstrates how complex state logic can be factored out into well
-defined and potentially reusable functions.
-
-
-Lazy Initial State
-..................
-
-In cases where it is costly to create the initial value for ``use_state``, you can pass
-a constructor function that accepts no arguments instead - it will be called on the
-first render of a component, but will be disregarded in all following renders:
-
-.. code-block::
-
-    state, set_state = use_state(lambda: some_expensive_computation(a, b, c))
-
-
-Skipping Updates
-................
-
-If you update a State Hook to the same value as the current state then the component which
-owns that state will not be rendered again. We check ``if new_state is current_state``
-in order to determine whether there has been a change. Thus the following would not
-result in a re-render:
-
-.. code-block::
-
-    state, set_state = use_state([])
-    set_state(state)
-
-
-Use Effect
-----------
-
-.. code-block::
-
-    use_effect(did_render)
-
-The ``use_effect`` hook accepts a function which may be imperative, or mutate state. The
-function will be called immediately after the layout has fully updated.
-
-Asynchronous actions, mutations, subscriptions, and other `side effects`_ can cause
-unexpected bugs if placed in the main body of a component's render function. Thus the
-``use_effect`` hook provides a way to safely escape the purely functional world of
-component render functions.
-
-.. note::
-
-    Normally in React the ``did_render`` function is called once an update has been
-    committed to the screen. Since no such action is performed by ReactPy, and the time
-    at which the update is displayed cannot be known we are unable to achieve parity
-    with this behavior.
-
-
-Cleaning Up Effects
-...................
-
-If the effect you wish to enact creates resources, you'll probably need to clean them
-up. In such cases you may simply return a function that addresses this from the
-``did_render`` function which created the resource. Consider the case of opening and
-then closing a connection:
-
-.. code-block::
-
-    def establish_connection():
-        connection = open_connection()
-        return lambda: close_connection(connection)
-
-    use_effect(establish_connection)
-
-The clean-up function will be run before the component is unmounted or, before the next
-effect is triggered when the component re-renders. You can
-:ref:`conditionally fire events <Conditional Effects>` to avoid triggering them each
-time a component renders.
-
-
-Conditional Effects
-...................
-
-By default, effects are triggered after every successful render to ensure that all state
-referenced by the effect is up to date. However, when an effect function references
-non-global variables, the effect will only if the value of that variable changes. For
-example, imagine that we had an effect that connected to a ``url`` state variable:
-
-.. code-block::
-
-    url, set_url = use_state("https://example.com")
-
-    def establish_connection():
-        connection = open_connection(url)
-        return lambda: close_connection(connection)
-
-    use_effect(establish_connection)
-
-Here, a new connection will be established whenever a new ``url`` is set.
-
-
-Async Effects
-.............
-
-A behavior unique to ReactPy's implementation of ``use_effect`` is that it natively
-supports ``async`` functions:
-
-.. code-block::
-
-    async def non_blocking_effect():
-        resource = await do_something_asynchronously()
-        return lambda: blocking_close(resource)
-
-    use_effect(non_blocking_effect)
-
-
-There are **three important subtleties** to note about using asynchronous effects:
-
-1. The cleanup function must be a normal synchronous function.
-
-2. Asynchronous effects which do not complete before the next effect is created
-   following a re-render will be cancelled. This means an
-   :class:`~asyncio.CancelledError` will be raised somewhere in the body of the effect.
-
-3. An asynchronous effect may occur any time after the update which added this effect
-   and before the next effect following a subsequent update.
-
-
-Manual Effect Conditions
-........................
-
-In some cases, you may want to explicitly declare when an effect should be triggered.
-You can do this by passing ``dependencies`` to ``use_effect``. Each of the following
-values produce different effect behaviors:
-
-- ``use_effect(..., dependencies=None)`` - triggers and cleans up on every render.
-- ``use_effect(..., dependencies=[])`` - only triggers on the first and cleans up after
-  the last render.
-- ``use_effect(..., dependencies=[x, y])`` - triggers on the first render and on subsequent renders if
-  ``x`` or ``y`` have changed.
-
-
-Use Context
------------
-
-.. code-block::
-
-    value = use_context(MyContext)
-
-Accepts a context object (the value returned from
-:func:`reactpy.core.hooks.create_context`) and returns the current context value for that
-context. The current context value is determined by the ``value`` argument passed to the
-nearest ``MyContext`` in the tree.
-
-When the nearest <MyContext.Provider> above the component updates, this Hook will
-trigger a rerender with the latest context value passed to that MyContext provider. Even
-if an ancestor uses React.memo or shouldComponentUpdate, a rerender will still happen
-starting at the component itself using useContext.
-
-
-Supplementary Hooks
-===================
-
-
-Use Reducer
------------
-
-.. code-block::
-
-    state, dispatch_action = use_reducer(reducer, initial_state)
-
-An alternative and derivative of :ref:`Use State` the ``use_reducer`` hook, instead of
-directly assigning a new state, allows you to specify an action which will transition
-the previous state into the next state. This transition is defined by a reducer function
-of the form ``(current_state, action) -> new_state``. The ``use_reducer`` hook then
-returns the current state and a ``dispatch_action`` function that accepts an ``action``
-and causes a transition to the next state via the ``reducer``.
-
-``use_reducer`` is generally preferred to ``use_state`` if logic for transitioning from
-one state to the next is especially complex or involves nested data structures.
-``use_reducer`` can also be used to collect several ``use_state`` calls together - this
-may be slightly more performant as well as being preferable since there is only one
-``dispatch_action`` callback versus the many ``set_state`` callbacks.
-
-We can rework the :ref:`Functional Updates` counter example to use ``use_reducer``:
-
-.. reactpy:: _examples/use_reducer_counter
-
-.. note::
-
-    The identity of the ``dispatch_action`` function is guaranteed to be preserved
-    across re-renders throughout the lifetime of the component. This means it can safely
-    be omitted from dependency lists in :ref:`Use Effect` or :ref:`Use Callback`.
-
-
-Use Callback
-------------
-
-.. code-block::
-
-    memoized_callback = use_callback(lambda: do_something(a, b))
-
-A derivative of :ref:`Use Memo`, the ``use_callback`` hook returns a
-`memoized <memoization>`_ callback. This is useful when passing callbacks to child
-components which check reference equality to prevent unnecessary renders. The
-``memoized_callback`` will only change when any local variables is references do.
-
-.. note::
-
-    You may manually specify what values the callback depends on in the :ref:`same way
-    as effects <Manual Effect Conditions>` using the ``dependencies`` parameter.
-
-
-Use Memo
---------
-
-.. code-block::
-
-    memoized_value = use_memo(lambda: compute_something_expensive(a, b))
-
-Returns a `memoized <memoization>`_ value. By passing a constructor function accepting
-no arguments and an array of dependencies for that constructor, the ``use_callback``
-hook will return the value computed by the constructor. The ``memoized_value`` will only
-be recomputed if a local variable referenced by the constructor changes (e.g. ``a`` or
-``b`` here). This optimizes performance because you don't need to
-``compute_something_expensive`` on every render.
-
-Unlike ``use_effect`` the constructor function is called during each render (instead of
-after) and should not incur side effects.
-
-.. warning::
-
-    Remember that you shouldn't optimize something unless you know it's a performance
-    bottleneck. Write your code without ``use_memo`` first and then add it to targeted
-    sections that need a speed-up.
-
-.. note::
-
-    You may manually specify what values the callback depends on in the :ref:`same way
-    as effects <Manual Effect Conditions>` using the ``dependencies`` parameter.
-
-
-Use Ref
--------
-
-.. code-block::
-
-    ref_container = use_ref(initial_value)
-
-Returns a mutable :class:`~reactpy.utils.Ref` object that has a single
-:attr:`~reactpy.utils.Ref.current` attribute that at first contains the ``initial_state``.
-The identity of the ``Ref`` object will be preserved for the lifetime of the component.
-
-A ``Ref`` is most useful if you need to incur side effects since updating its
-``.current`` attribute doesn't trigger a re-render of the component. You'll often use this
-hook alongside :ref:`Use Effect` or in response to component event handlers.
-
-
-.. links
-.. =====
-
-.. _React Hooks: https://reactjs.org/docs/hooks-reference.html
-.. _side effects: https://en.wikipedia.org/wiki/Side_effect_(computer_science)
-.. _memoization: https://en.wikipedia.org/wiki/Memoization
-
-
-Rules of Hooks
-==============
-
-Hooks are just normal Python functions, but there's a bit of magic to them, and in order
-for that magic to work you've got to follow two rules. Thankfully we supply a
-:ref:`Flake8 Plugin` to help enforce them.
-
-
-Only call outside flow controls
--------------------------------
-
-**Don't call hooks inside loops, conditions, or nested functions.** Instead you must
-always call hooks at the top level of your functions. By adhering to this rule you
-ensure that hooks are always called in the exact same order. This fact is what allows
-ReactPy to preserve the state of hooks between multiple calls to ``useState`` and
-``useEffect`` calls.
-
-
-Only call in render functions
------------------------------
-
-**Don't call hooks from regular Python functions.** Instead you should:
-
-- ✅ Call Hooks from a component's render function.
-
-- ✅ Call Hooks from another custom hook
-
-Following this rule ensures stateful logic for ReactPy component is always clearly
-separated from the rest of your codebase.
-
-
-Flake8 Plugin
--------------
-
-We provide a Flake8 plugin called `flake8-reactpy-hooks <Flake8 Linter Plugin>`_ that helps
-to enforce the two rules described above. You can ``pip`` install it directly, or with
-the ``lint`` extra for ReactPy:
-
-.. code-block:: bash
-
-    pip install flake8-reactpy-hooks
-
-Once installed running, ``flake8`` on your code will start catching errors. For example:
-
-.. code-block:: bash
-
-    flake8 my_reactpy_components.py
-
-Might produce something like the following output:
-
-.. code-block:: text
-
-    ./my_reactpy_components:10:8 ROH102 hook 'use_effect' used inside if statement
-    ./my_reactpy_components:23:4 ROH102 hook 'use_state' used outside component or hook definition
-
-See the Flake8 docs for
-`more info <https://flake8.pycqa.org/en/latest/user/configuration.html>`__.
-
-.. links
-.. =====
-
-.. _Flake8 Linter Plugin: https://github.com/reactive-python/flake8-reactpy-hooks
diff --git a/docs/source/reference/html-attributes.rst b/docs/source/reference/html-attributes.rst
deleted file mode 100644
index 91813c355..000000000
--- a/docs/source/reference/html-attributes.rst
+++ /dev/null
@@ -1,197 +0,0 @@
-.. testcode::
-
-    from reactpy import html
-
-
-HTML Attributes
-===============
-
-In ReactPy, HTML attributes are specified using snake_case instead of dash-separated
-words. For example, ``tabindex`` and ``margin-left`` become ``tab_index`` and
-``margin_left`` respectively.
-
-
-Notable Attributes
--------------------
-
-Some attributes in ReactPy are renamed, have special meaning, or are used differently
-than in HTML.
-
-``style``
-.........
-
-As mentioned above, instead of using a string to specify the ``style`` attribute, we use
-a dictionary to describe the CSS properties we want to apply to an element. For example,
-the following HTML:
-
-.. code-block:: html
-
-    <div style="width: 50%; margin-left: 25%;">
-        <h1 style="margin-top: 0px;">My Todo List</h1>
-        <ul>
-            <li>Build a cool new app</li>
-            <li>Share it with the world!</li>
-        </ul>
-    </div>
-
-Would be written in ReactPy as:
-
-.. testcode::
-
-    html.div(
-        {
-            "style": {
-                "width": "50%",
-                "margin_left": "25%",
-            },
-        },
-        html.h1(
-            {
-                "style": {
-                    "margin_top": "0px",
-                },
-            },
-            "My Todo List",
-        ),
-        html.ul(
-            html.li("Build a cool new app"),
-            html.li("Share it with the world!"),
-        ),
-    )
-
-``class`` vs ``class_name``
-...........................
-
-In HTML, the ``class`` attribute is used to specify a CSS class for an element. In
-ReactPy, this attribute is renamed to ``class_name`` to avoid conflicting with the
-``class`` keyword in Python. For example, the following HTML:
-
-.. code-block:: html
-
-    <div class="container">
-        <h1 class="title">My Todo List</h1>
-        <ul class="list">
-            <li class="item">Build a cool new app</li>
-            <li class="item">Share it with the world!</li>
-        </ul>
-    </div>
-
-Would be written in ReactPy as:
-
-.. testcode::
-
-    html.div(
-        {"class_name": "container"},
-        html.h1({"class_name": "title"}, "My Todo List"),
-        html.ul(
-            {"class_name": "list"},
-            html.li({"class_name": "item"}, "Build a cool new app"),
-            html.li({"class_name": "item"}, "Share it with the world!"),
-        ),
-    )
-
-``for`` vs ``html_for``
-.......................
-
-In HTML, the ``for`` attribute is used to specify the ``id`` of the element it's
-associated with. In ReactPy, this attribute is renamed to ``html_for`` to avoid
-conflicting with the ``for`` keyword in Python. For example, the following HTML:
-
-.. code-block:: html
-
-    <div>
-        <label for="todo">Todo:</label>
-        <input id="todo" type="text" />
-    </div>
-
-Would be written in ReactPy as:
-
-.. testcode::
-
-    html.div(
-        html.label({"html_for": "todo"}, "Todo:"),
-        html.input({"id": "todo", "type": "text"}),
-    )
-
-``dangerously_set_inner_HTML``
-..............................
-
-This is used to set the ``innerHTML`` property of an element and should be provided a
-dictionary with a single key ``__html`` whose value is the HTML to be set. It should be
-used with **extreme caution** as it can lead to XSS attacks if the HTML inside isn't
-trusted (for example if it comes from user input).
-
-
-All Attributes
---------------
-
-`access_key <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey>`__
-  A string. Specifies a keyboard shortcut for the element. Not generally recommended.
-
-`aria_* <https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes>`__
-  ARIA attributes let you specify the accessibility tree information for this element.
-  See ARIA attributes for a complete reference. In ReactPy, all ARIA attribute names are
-  exactly the same as in HTML.
-
-`auto_capitalize <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize>`__
-  A string. Specifies whether and how the user input should be capitalized.
-
-`content_editable <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contenteditable>`__
-  A boolean. If true, the browser lets the user edit the rendered element directly. This
-  is used to implement rich text input libraries like Lexical. ReactPy warns if you try
-  to pass children to an element with ``content_editable = True`` because ReactPy will
-  not be able to update its content after user edits.
-
-`data_* <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/data-*>`__
-  Data attributes let you attach some string data to the element, for example
-  data-fruit="banana". In ReactPy, they are not commonly used because you would usually
-  read data from props or state instead.
-
-`dir <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir>`__
-  Either ``"ltr"`` or ``"rtl"``. Specifies the text direction of the element.
-
-`draggable <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable>`__
-  A boolean. Specifies whether the element is draggable. Part of HTML Drag and Drop API.
-
-`enter_key_hint <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/enterkeyhint>`__
-  A string. Specifies which action to present for the enter key on virtual keyboards.
-
-`hidden <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden>`__
-  A boolean or a string. Specifies whether the element should be hidden.
-
-- `id <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id>`__:
-  A string. Specifies a unique identifier for this element, which can be used to find it
-  later or connect it with other elements. Generate it with useId to avoid clashes
-  between multiple instances of the same component.
-
-`is <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-is>`__
-  A string. If specified, the component will behave like a custom element.
-
-`input_mode <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode>`__
-  A string. Specifies what kind of keyboard to display (for example, text, number, or telephone).
-
-`item_prop <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemprop>`__
-  A string. Specifies which property the element represents for structured data crawlers.
-
-`lang <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang>`__
-  A string. Specifies the language of the element.
-
-`role <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/role>`__
-  A string. Specifies the element role explicitly for assistive technologies.
-
-`slot <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot>`__
-  A string. Specifies the slot name when using shadow DOM. In ReactPy, an equivalent
-  pattern is typically achieved by passing JSX as props, for example
-  ``<Layout left={<Sidebar />} right={<Content />} />``.
-
-`spell_check <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/spellcheck>`__
-  A boolean or null. If explicitly set to true or false, enables or disables spellchecking.
-
-`tab_index <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex>`__
-  A number. Overrides the default Tab button behavior. Avoid using values other than -1 and 0.
-
-`title <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/title>`__
-  A string. Specifies the tooltip text for the element.
-
-`translate <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/translate>`__
-  Either 'yes' or 'no'. Passing 'no' excludes the element content from being translated.
diff --git a/docs/source/reference/javascript-api.rst b/docs/source/reference/javascript-api.rst
deleted file mode 100644
index 2587be82d..000000000
--- a/docs/source/reference/javascript-api.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _Javascript API:
-
-Javascript API 🚧
-=================
-
-.. note::
-
-    Under construction 🚧
diff --git a/docs/source/reference/specifications.rst b/docs/source/reference/specifications.rst
deleted file mode 100644
index 3a5c94893..000000000
--- a/docs/source/reference/specifications.rst
+++ /dev/null
@@ -1,170 +0,0 @@
-Specifications
-==============
-
-Describes various data structures and protocols used to define and communicate virtual
-document object models (:ref:`VDOM`). The definitions below follow in the footsteps of
-`a specification <https://github.com/nteract/vdom/blob/master/docs/mimetype-spec.md>`_
-created by `Nteract <https://nteract.io>`_ and which was built into
-`JupyterLab <https://jupyterlab.readthedocs.io/en/stable/>`_. While ReactPy's specification
-for VDOM is fairly well established, it should not be relied until it's been fully
-adopted by the aforementioned organizations.
-
-
-VDOM
-----
-
-A set of definitions that explain how ReactPy creates a virtual representation of
-the document object model. We'll begin by looking at a bit of HTML that we'll convert
-into its VDOM representation:
-
-.. code-block:: html
-
-    <div>
-      Put your name here:
-      <input
-        type="text"
-        minlength="4"
-        maxlength="8"
-        onchange="a_python_callback(event)"
-      />
-    </div>
-
-.. note::
-
-  For context, the following Python code would generate the HTML above:
-
-  .. code-block:: python
-
-      import reactpy
-
-      async def a_python_callback(new):
-          ...
-
-      name_input_view = reactpy.html.div(
-          reactpy.html.input(
-              {
-                  "type": "text",
-                  "minLength": 4,
-                  "maxLength": 8,
-                  "onChange": a_python_callback,
-              }
-          ),
-          ["Put your name here: "],
-      )
-
-We'll take this step by step in order to show exactly where each piece of the VDOM
-model comes from. To get started we'll convert the outer ``<div/>``:
-
-.. code-block:: python
-
-    {
-        "tagName": "div",
-        "children": [
-            "To perform an action",
-            ...
-        ],
-        "attributes": {},
-        "eventHandlers": {}
-    }
-
-.. note::
-
-    As we move though our conversation we'll be using ``...`` to fill in places that we
-    haven't converted yet.
-
-In this simple case, all we've done is take the name of the HTML element (``div`` in
-this case) and inserted it into the ``tagName`` field of a dictionary. Then we've taken
-the inner HTML and added to a list of children where the text ``"to perform an action"``
-has been made into a string, and the inner ``input`` (yet to be converted) will be
-expanded out into its own VDOM representation. Since the outer ``div`` is pretty simple
-there aren't any ``attributes`` or ``eventHandlers``.
-
-No we come to the inner ``input``. If we expand this out now we'll get the following:
-
-.. code-block:: python
-
-    {
-        "tagName": "div",
-        "children": [
-            "To perform an action",
-            {
-                "tagName": "input",
-                "children": [],
-                "attributes": {
-                    "type": "text",
-                    "minLength": 4,
-                    "maxLength": 8
-                },
-                "eventHandlers": ...
-            }
-        ],
-        "attributes": {},
-        "eventHandlers": {}
-    }
-
-Here we've had to add some attributes to our VDOM. Take note of the differing
-capitalization - instead of using all lowercase (an HTML convention) we've used
-`camelCase <https://en.wikipedia.org/wiki/Camel_case>`_ which is very common
-in JavaScript.
-
-Last, but not least we come to the ``eventHandlers`` for the ``input``:
-
-.. code-block:: python
-
-    {
-        "tagName": "div",
-        "children": [
-            "To perform an action",
-            {
-                "tagName": "input",
-                "children": [],
-                "attributes": {
-                    "type": "text",
-                    "minLength": 4,
-                    "maxLength": 8
-                },
-                "eventHandlers": {
-                    "onChange": {
-                      "target": "unique-id-of-a_python_callback",
-                      "preventDefault": False,
-                      "stopPropagation": False
-                    }
-                }
-            }
-        ],
-        "attributes": {},
-        "eventHandlers": {}
-    }
-
-Again we've changed the all lowercase ``onchange`` into a cameCase ``onChange`` event
-type name. The various properties for the ``onChange`` handler are:
-
-- ``target``: the unique ID for a Python callback that exists in the backend.
-
-- ``preventDefault``: Stop the event's default action. More info
-  `here <https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault>`__.
-
-- ``stopPropagation``: prevent the event from bubbling up through the DOM. More info
-  `here <https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation>`__.
-
-
-VDOM JSON Schema
-................
-
-To clearly describe the VDOM spec we've created a `JSON Schema <https://json-schema.org/>`_:
-
-.. literalinclude:: _static/vdom-json-schema.json
-   :language: json
-
-
-JSON Patch
-----------
-
-Updates to VDOM modules are sent using the `JSON Patch`_ specification.
-
-... this section is still Under construction 🚧
-
-
-.. Links
-.. =====
-.. _JSON Patch: http://jsonpatch.com/
diff --git a/docs/src/about/changelog.md b/docs/src/about/changelog.md
new file mode 100644
index 000000000..40c649d3e
--- /dev/null
+++ b/docs/src/about/changelog.md
@@ -0,0 +1,11 @@
+---
+title: Changelog
+hide:
+    - toc
+---
+
+!!! note "Attribution"
+
+        {% include-markdown "../../../CHANGELOG.md" start="<!--attr-start-->" end="<!--attr-end-->" %}
+
+{% include-markdown "../../../CHANGELOG.md" start="<!--changelog-start-->" %}
diff --git a/docs/src/about/code.md b/docs/src/about/code.md
new file mode 100644
index 000000000..b62ac3725
--- /dev/null
+++ b/docs/src/about/code.md
@@ -0,0 +1,3 @@
+---
+title: Contributing Code 🚧
+---
diff --git a/docs/src/about/community.md b/docs/src/about/community.md
new file mode 100644
index 000000000..a2aaf44d8
--- /dev/null
+++ b/docs/src/about/community.md
@@ -0,0 +1,3 @@
+---
+title: Community 🚧
+---
diff --git a/docs/src/about/docs.md b/docs/src/about/docs.md
new file mode 100644
index 000000000..cf935525e
--- /dev/null
+++ b/docs/src/about/docs.md
@@ -0,0 +1,3 @@
+---
+title: Contributing Documentation 🚧
+---
diff --git a/docs/src/about/running-tests.md b/docs/src/about/running-tests.md
new file mode 100644
index 000000000..714a7456c
--- /dev/null
+++ b/docs/src/about/running-tests.md
@@ -0,0 +1,3 @@
+---
+title: Running Tests 🚧
+---
diff --git a/docs/src/dictionary.txt b/docs/src/dictionary.txt
new file mode 100644
index 000000000..af891a7e5
--- /dev/null
+++ b/docs/src/dictionary.txt
@@ -0,0 +1,28 @@
+django
+nox
+websocket
+websockets
+changelog
+async
+pre
+prefetch
+prefetching
+preloader
+whitespace
+refetch
+refetched
+refetching
+html
+jupyter
+webserver
+iframe
+keyworded
+stylesheet
+stylesheets
+unstyled
+py
+idom
+reactpy
+asgi
+postfixed
+postprocessing
diff --git a/docs/src/index.md b/docs/src/index.md
new file mode 100644
index 000000000..ae43c6a82
--- /dev/null
+++ b/docs/src/index.md
@@ -0,0 +1,57 @@
+---
+hide:
+    - navigation
+    - toc
+---
+
+[ReactPy](https://reactpy.dev/) is a library for building user interfaces in Python without Javascript. ReactPy interfaces are made from components that look and behave similar to those found in [ReactJS](https://reactjs.org/). Designed with simplicity in mind, ReactPy can be used by those without web development experience while also being powerful enough to grow with your ambitions.
+
+<table align="center">
+    <thead>
+        <tr>
+            <th colspan="2" style="text-align: center">Supported Backends</th>
+        <tr>
+            <th style="text-align: center">Built-in</th>
+            <th style="text-align: center">External</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+        <td>
+            <a href="https://reactpy.dev/docs/guides/getting-started/installing-reactpy.html#officially-supported-servers">
+                Flask, FastAPI, Sanic, Tornado
+            </a>
+        </td>
+        <td>
+            <a href="https://github.com/reactive-python/reactpy-django">Django</a>,
+            <a href="https://github.com/reactive-python/reactpy-jupyter">Jupyter</a>,
+            <a href="https://github.com/idom-team/idom-dash">Plotly-Dash</a>
+        </td>
+        </tr>
+    </tbody>
+</table>
+
+# At a Glance
+
+To get a rough idea of how to write apps in ReactPy, take a look at this tiny _Hello World_ application.
+
+```python
+from reactpy import component, html, run
+
+@component
+def hello_world():
+    return html.h1("Hello, World!")
+
+run(hello_world)
+```
+
+# Resources
+
+Follow the links below to find out more about this project.
+
+-   [Try ReactPy (Jupyter Notebook)](https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb)
+-   [Documentation](https://reactpy.dev/)
+-   [GitHub Discussions](https://github.com/reactive-python/reactpy/discussions)
+-   [Discord](https://discord.gg/uNb5P4hA9X)
+-   [Contributor Guide](https://reactpy.dev/docs/about/contributor-guide.html)
+-   [Code of Conduct](https://github.com/reactive-python/reactpy/blob/main/CODE_OF_CONDUCT.md)
diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
new file mode 100644
index 000000000..73a3b0bc1
--- /dev/null
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -0,0 +1,153 @@
+---
+title: Add React to an Existing Project 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+If you want to add some interactivity to your existing project, you don't have to rewrite it in React. Add React to your existing stack, and render interactive React components anywhere.
+
+</p>
+
+<Note>
+
+**You need to install [Node.js](https://nodejs.org/en/) for local development.** Although you can [try React](/learn/installation#try-react) online or with a simple HTML page, realistically most JavaScript tooling you'll want to use for development requires Node.js.
+
+</Note>
+
+## Using React for an entire subroute of your existing website
+
+Let's say you have an existing web app at `example.com` built with another server technology (like Rails), and you want to implement all routes starting with `example.com/some-app/` fully with React.
+
+Here's how we recommend to set it up:
+
+1. **Build the React part of your app** using one of the [React-based frameworks](/learn/start-a-new-react-project).
+2. **Specify `/some-app` as the _base path_** in your framework's configuration (here's how: [Next.js](https://nextjs.org/docs/api-reference/next.config.js/basepath), [Gatsby](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting/path-prefix/)).
+3. **Configure your server or a proxy** so that all requests under `/some-app/` are handled by your React app.
+
+This ensures the React part of your app can [benefit from the best practices](/learn/start-a-new-react-project#can-i-use-react-without-a-framework) baked into those frameworks.
+
+Many React-based frameworks are full-stack and let your React app take advantage of the server. However, you can use the same approach even if you can't or don't want to run JavaScript on the server. In that case, serve the HTML/CSS/JS export ([`next export` output](https://nextjs.org/docs/advanced-features/static-html-export) for Next.js, default for Gatsby) at `/some-app/` instead.
+
+## Using React for a part of your existing page
+
+Let's say you have an existing page built with another technology (either a server one like Rails, or a client one like Backbone), and you want to render interactive React components somewhere on that page. That's a common way to integrate React--in fact, it's how most React usage looked at Meta for many years!
+
+You can do this in two steps:
+
+1. **Set up a JavaScript environment** that lets you use the [JSX syntax](/learn/writing-markup-with-jsx), split your code into modules with the [`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) / [`export`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export) syntax, and use packages (for example, React) from the [npm](https://www.npmjs.com/) package registry.
+2. **Render your React components** where you want to see them on the page.
+
+The exact approach depends on your existing page setup, so let's walk through some details.
+
+### Step 1: Set up a modular JavaScript environment
+
+A modular JavaScript environment lets you write your React components in individual files, as opposed to writing all of your code in a single file. It also lets you use all the wonderful packages published by other developers on the [npm](https://www.npmjs.com/) registry--including React itself! How you do this depends on your existing setup:
+
+-   **If your app is already split into files that use `import` statements,** try to use the setup you already have. Check whether writing `<div />` in your JS code causes a syntax error. If it causes a syntax error, you might need to [transform your JavaScript code with Babel](https://babeljs.io/setup), and enable the [Babel React preset](https://babeljs.io/docs/babel-preset-react) to use JSX.
+
+-   **If your app doesn't have an existing setup for compiling JavaScript modules,** set it up with [Vite](https://vitejs.dev/). The Vite community maintains [many integrations with backend frameworks](https://github.com/vitejs/awesome-vite#integrations-with-backends), including Rails, Django, and Laravel. If your backend framework is not listed, [follow this guide](https://vitejs.dev/guide/backend-integration.html) to manually integrate Vite builds with your backend.
+
+To check whether your setup works, run this command in your project folder:
+
+<TerminalBlock>
+npm install react react-dom
+</TerminalBlock>
+
+Then add these lines of code at the top of your main JavaScript file (it might be called `index.js` or `main.js`):
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>My app</title>
+	</head>
+	<body>
+		<!-- Your existing page content (in this example, it gets replaced) -->
+	</body>
+</html>
+```
+
+```js
+import { createRoot } from "react-dom/client";
+
+// Clear the existing HTML content
+document.body.innerHTML = '<div id="app"></div>';
+
+// Render your React component instead
+const root = createRoot(document.getElementById("app"));
+root.render(<h1>Hello, world</h1>);
+```
+
+If the entire content of your page was replaced by a "Hello, world!", everything worked! Keep reading.
+
+<Note>
+
+Integrating a modular JavaScript environment into an existing project for the first time can feel intimidating, but it's worth it! If you get stuck, try our [community resources](/community) or the [Vite Chat](https://chat.vitejs.dev/).
+
+</Note>
+
+### Step 2: Render React components anywhere on the page
+
+In the previous step, you put this code at the top of your main file:
+
+```js
+import { createRoot } from "react-dom/client";
+
+// Clear the existing HTML content
+document.body.innerHTML = '<div id="app"></div>';
+
+// Render your React component instead
+const root = createRoot(document.getElementById("app"));
+root.render(<h1>Hello, world</h1>);
+```
+
+Of course, you don't actually want to clear the existing HTML content!
+
+Delete this code.
+
+Instead, you probably want to render your React components in specific places in your HTML. Open your HTML page (or the server templates that generate it) and add a unique [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) attribute to any tag, for example:
+
+```html
+<!-- ... somewhere in your html ... -->
+<nav id="navigation"></nav>
+<!-- ... more html ... -->
+```
+
+This lets you find that HTML element with [`document.getElementById`](https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById) and pass it to [`createRoot`](/reference/react-dom/client/createRoot) so that you can render your own React component inside:
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>My app</title>
+	</head>
+	<body>
+		<p>This paragraph is a part of HTML.</p>
+		<nav id="navigation"></nav>
+		<p>This paragraph is also a part of HTML.</p>
+	</body>
+</html>
+```
+
+```js
+import { createRoot } from "react-dom/client";
+
+function NavigationBar() {
+	// TODO: Actually implement a navigation bar
+	return <h1>Hello from React!</h1>;
+}
+
+const domNode = document.getElementById("navigation");
+const root = createRoot(domNode);
+root.render(<NavigationBar />);
+```
+
+Notice how the original HTML content from `index.html` is preserved, but your own `NavigationBar` React component now appears inside the `<nav id="navigation">` from your HTML. Read the [`createRoot` usage documentation](/reference/react-dom/client/createRoot#rendering-a-page-partially-built-with-react) to learn more about rendering React components inside an existing HTML page.
+
+When you adopt React in an existing project, it's common to start with small interactive components (like buttons), and then gradually keep "moving upwards" until eventually your entire page is built with React. If you ever reach that point, we recommend migrating to [a React framework](/learn/start-a-new-react-project) right after to get the most out of React.
+
+## Using React Native in an existing native mobile app
+
+[React Native](https://reactnative.dev/) can also be integrated into existing native apps incrementally. If you have an existing native app for Android (Java or Kotlin) or iOS (Objective-C or Swift), [follow this guide](https://reactnative.dev/docs/integration-with-existing-apps) to add a React Native screen to it.
diff --git a/docs/src/learn/choosing-the-state-structure.md b/docs/src/learn/choosing-the-state-structure.md
new file mode 100644
index 000000000..2a40ef2d5
--- /dev/null
+++ b/docs/src/learn/choosing-the-state-structure.md
@@ -0,0 +1,2866 @@
+---
+title: Choosing the State Structure 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Structuring state well can make a difference between a component that is pleasant to modify and debug, and one that is a constant source of bugs. Here are some tips you should consider when structuring state.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   When to use a single vs multiple state variables
+    -   What to avoid when organizing state
+    -   How to fix common issues with the state structure
+
+## Principles for structuring state
+
+When you write a component that holds some state, you'll have to make choices about how many state variables to use and what the shape of their data should be. While it's possible to write correct programs even with a suboptimal state structure, there are a few principles that can guide you to make better choices:
+
+1. **Group related state.** If you always update two or more state variables at the same time, consider merging them into a single state variable.
+2. **Avoid contradictions in state.** When the state is structured in a way that several pieces of state may contradict and "disagree" with each other, you leave room for mistakes. Try to avoid this.
+3. **Avoid redundant state.** If you can calculate some information from the component's props or its existing state variables during rendering, you should not put that information into that component's state.
+4. **Avoid duplication in state.** When the same data is duplicated between multiple state variables, or within nested objects, it is difficult to keep them in sync. Reduce duplication when you can.
+5. **Avoid deeply nested state.** Deeply hierarchical state is not very convenient to update. When possible, prefer to structure state in a flat way.
+
+The goal behind these principles is to _make state easy to update without introducing mistakes_. Removing redundant and duplicate data from state helps ensure that all its pieces stay in sync. This is similar to how a database engineer might want to ["normalize" the database structure](https://docs.microsoft.com/en-us/office/troubleshoot/access/database-normalization-description) to reduce the chance of bugs. To paraphrase Albert Einstein, **"Make your state as simple as it can be--but no simpler."**
+
+Now let's see how these principles apply in action.
+
+## Group related state
+
+You might sometimes be unsure between using a single or multiple state variables.
+
+Should you do this?
+
+```js
+const [x, setX] = useState(0);
+const [y, setY] = useState(0);
+```
+
+Or this?
+
+```js
+const [position, setPosition] = useState({ x: 0, y: 0 });
+```
+
+Technically, you can use either of these approaches. But **if some two state variables always change together, it might be a good idea to unify them into a single state variable.** Then you won't forget to always keep them in sync, like in this example where moving the cursor updates both coordinates of the red dot:
+
+```js
+import { useState } from "react";
+
+export default function MovingDot() {
+	const [position, setPosition] = useState({
+		x: 0,
+		y: 0,
+	});
+	return (
+		<div
+			onPointerMove={(e) => {
+				setPosition({
+					x: e.clientX,
+					y: e.clientY,
+				});
+			}}
+			style={{
+				position: "relative",
+				width: "100vw",
+				height: "100vh",
+			}}
+		>
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "red",
+					borderRadius: "50%",
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					left: -10,
+					top: -10,
+					width: 20,
+					height: 20,
+				}}
+			/>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	margin: 0;
+	padding: 0;
+	height: 250px;
+}
+```
+
+Another case where you'll group data into an object or an array is when you don't know how many pieces of state you'll need. For example, it's helpful when you have a form where the user can add custom fields.
+
+<Pitfall>
+
+If your state variable is an object, remember that [you can't update only one field in it](/learn/updating-objects-in-state) without explicitly copying the other fields. For example, you can't do `setPosition({ x: 100 })` in the above example because it would not have the `y` property at all! Instead, if you wanted to set `x` alone, you would either do `setPosition({ ...position, x: 100 })`, or split them into two state variables and do `setX(100)`.
+
+</Pitfall>
+
+## Avoid contradictions in state
+
+Here is a hotel feedback form with `isSending` and `isSent` state variables:
+
+```js
+import { useState } from "react";
+
+export default function FeedbackForm() {
+	const [text, setText] = useState("");
+	const [isSending, setIsSending] = useState(false);
+	const [isSent, setIsSent] = useState(false);
+
+	async function handleSubmit(e) {
+		e.preventDefault();
+		setIsSending(true);
+		await sendMessage(text);
+		setIsSending(false);
+		setIsSent(true);
+	}
+
+	if (isSent) {
+		return <h1>Thanks for feedback!</h1>;
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<p>How was your stay at The Prancing Pony?</p>
+			<textarea
+				disabled={isSending}
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<br />
+			<button disabled={isSending} type="submit">
+				Send
+			</button>
+			{isSending && <p>Sending...</p>}
+		</form>
+	);
+}
+
+// Pretend to send a message.
+function sendMessage(text) {
+	return new Promise((resolve) => {
+		setTimeout(resolve, 2000);
+	});
+}
+```
+
+While this code works, it leaves the door open for "impossible" states. For example, if you forget to call `setIsSent` and `setIsSending` together, you may end up in a situation where both `isSending` and `isSent` are `true` at the same time. The more complex your component is, the harder it is to understand what happened.
+
+**Since `isSending` and `isSent` should never be `true` at the same time, it is better to replace them with one `status` state variable that may take one of _three_ valid states:** `'typing'` (initial), `'sending'`, and `'sent'`:
+
+```js
+import { useState } from "react";
+
+export default function FeedbackForm() {
+	const [text, setText] = useState("");
+	const [status, setStatus] = useState("typing");
+
+	async function handleSubmit(e) {
+		e.preventDefault();
+		setStatus("sending");
+		await sendMessage(text);
+		setStatus("sent");
+	}
+
+	const isSending = status === "sending";
+	const isSent = status === "sent";
+
+	if (isSent) {
+		return <h1>Thanks for feedback!</h1>;
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<p>How was your stay at The Prancing Pony?</p>
+			<textarea
+				disabled={isSending}
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<br />
+			<button disabled={isSending} type="submit">
+				Send
+			</button>
+			{isSending && <p>Sending...</p>}
+		</form>
+	);
+}
+
+// Pretend to send a message.
+function sendMessage(text) {
+	return new Promise((resolve) => {
+		setTimeout(resolve, 2000);
+	});
+}
+```
+
+You can still declare some constants for readability:
+
+```js
+const isSending = status === "sending";
+const isSent = status === "sent";
+```
+
+But they're not state variables, so you don't need to worry about them getting out of sync with each other.
+
+## Avoid redundant state
+
+If you can calculate some information from the component's props or its existing state variables during rendering, you **should not** put that information into that component's state.
+
+For example, take this form. It works, but can you find any redundant state in it?
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [firstName, setFirstName] = useState("");
+	const [lastName, setLastName] = useState("");
+	const [fullName, setFullName] = useState("");
+
+	function handleFirstNameChange(e) {
+		setFirstName(e.target.value);
+		setFullName(e.target.value + " " + lastName);
+	}
+
+	function handleLastNameChange(e) {
+		setLastName(e.target.value);
+		setFullName(firstName + " " + e.target.value);
+	}
+
+	return (
+		<>
+			<h2>Let’s check you in</h2>
+			<label>
+				First name:{" "}
+				<input value={firstName} onChange={handleFirstNameChange} />
+			</label>
+			<label>
+				Last name:{" "}
+				<input value={lastName} onChange={handleLastNameChange} />
+			</label>
+			<p>
+				Your ticket will be issued to: <b>{fullName}</b>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 5px;
+}
+```
+
+This form has three state variables: `firstName`, `lastName`, and `fullName`. However, `fullName` is redundant. **You can always calculate `fullName` from `firstName` and `lastName` during render, so remove it from state.**
+
+This is how you can do it:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [firstName, setFirstName] = useState("");
+	const [lastName, setLastName] = useState("");
+
+	const fullName = firstName + " " + lastName;
+
+	function handleFirstNameChange(e) {
+		setFirstName(e.target.value);
+	}
+
+	function handleLastNameChange(e) {
+		setLastName(e.target.value);
+	}
+
+	return (
+		<>
+			<h2>Let’s check you in</h2>
+			<label>
+				First name:{" "}
+				<input value={firstName} onChange={handleFirstNameChange} />
+			</label>
+			<label>
+				Last name:{" "}
+				<input value={lastName} onChange={handleLastNameChange} />
+			</label>
+			<p>
+				Your ticket will be issued to: <b>{fullName}</b>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 5px;
+}
+```
+
+Here, `fullName` is _not_ a state variable. Instead, it's calculated during render:
+
+```js
+const fullName = firstName + " " + lastName;
+```
+
+As a result, the change handlers don't need to do anything special to update it. When you call `setFirstName` or `setLastName`, you trigger a re-render, and then the next `fullName` will be calculated from the fresh data.
+
+<DeepDive>
+
+#### Don't mirror props in state
+
+A common example of redundant state is code like this:
+
+```js
+function Message({ messageColor }) {
+  const [color, setColor] = useState(messageColor);
+```
+
+Here, a `color` state variable is initialized to the `messageColor` prop. The problem is that **if the parent component passes a different value of `messageColor` later (for example, `'red'` instead of `'blue'`), the `color` _state variable_ would not be updated!** The state is only initialized during the first render.
+
+This is why "mirroring" some prop in a state variable can lead to confusion. Instead, use the `messageColor` prop directly in your code. If you want to give it a shorter name, use a constant:
+
+```js
+function Message({ messageColor }) {
+  const color = messageColor;
+```
+
+This way it won't get out of sync with the prop passed from the parent component.
+
+"Mirroring" props into state only makes sense when you _want_ to ignore all updates for a specific prop. By convention, start the prop name with `initial` or `default` to clarify that its new values are ignored:
+
+```js
+function Message({ initialColor }) {
+  // The `color` state variable holds the *first* value of `initialColor`.
+  // Further changes to the `initialColor` prop are ignored.
+  const [color, setColor] = useState(initialColor);
+```
+
+</DeepDive>
+
+## Avoid duplication in state
+
+This menu list component lets you choose a single travel snack out of several:
+
+```js
+import { useState } from "react";
+
+const initialItems = [
+	{ title: "pretzels", id: 0 },
+	{ title: "crispy seaweed", id: 1 },
+	{ title: "granola bar", id: 2 },
+];
+
+export default function Menu() {
+	const [items, setItems] = useState(initialItems);
+	const [selectedItem, setSelectedItem] = useState(items[0]);
+
+	return (
+		<>
+			<h2>What's your travel snack?</h2>
+			<ul>
+				{items.map((item) => (
+					<li key={item.id}>
+						{item.title}{" "}
+						<button
+							on_click={() => {
+								setSelectedItem(item);
+							}}
+						>
+							Choose
+						</button>
+					</li>
+				))}
+			</ul>
+			<p>You picked {selectedItem.title}.</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-top: 10px;
+}
+```
+
+Currently, it stores the selected item as an object in the `selectedItem` state variable. However, this is not great: **the contents of the `selectedItem` is the same object as one of the items inside the `items` list.** This means that the information about the item itself is duplicated in two places.
+
+Why is this a problem? Let's make each item editable:
+
+```js
+import { useState } from "react";
+
+const initialItems = [
+	{ title: "pretzels", id: 0 },
+	{ title: "crispy seaweed", id: 1 },
+	{ title: "granola bar", id: 2 },
+];
+
+export default function Menu() {
+	const [items, setItems] = useState(initialItems);
+	const [selectedItem, setSelectedItem] = useState(items[0]);
+
+	function handleItemChange(id, e) {
+		setItems(
+			items.map((item) => {
+				if (item.id === id) {
+					return {
+						...item,
+						title: e.target.value,
+					};
+				} else {
+					return item;
+				}
+			})
+		);
+	}
+
+	return (
+		<>
+			<h2>What's your travel snack?</h2>
+			<ul>
+				{items.map((item, index) => (
+					<li key={item.id}>
+						<input
+							value={item.title}
+							onChange={(e) => {
+								handleItemChange(item.id, e);
+							}}
+						/>{" "}
+						<button
+							on_click={() => {
+								setSelectedItem(item);
+							}}
+						>
+							Choose
+						</button>
+					</li>
+				))}
+			</ul>
+			<p>You picked {selectedItem.title}.</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-top: 10px;
+}
+```
+
+Notice how if you first click "Choose" on an item and _then_ edit it, **the input updates but the label at the bottom does not reflect the edits.** This is because you have duplicated state, and you forgot to update `selectedItem`.
+
+Although you could update `selectedItem` too, an easier fix is to remove duplication. In this example, instead of a `selectedItem` object (which creates a duplication with objects inside `items`), you hold the `selectedId` in state, and _then_ get the `selectedItem` by searching the `items` array for an item with that ID:
+
+```js
+import { useState } from "react";
+
+const initialItems = [
+	{ title: "pretzels", id: 0 },
+	{ title: "crispy seaweed", id: 1 },
+	{ title: "granola bar", id: 2 },
+];
+
+export default function Menu() {
+	const [items, setItems] = useState(initialItems);
+	const [selectedId, setSelectedId] = useState(0);
+
+	const selectedItem = items.find((item) => item.id === selectedId);
+
+	function handleItemChange(id, e) {
+		setItems(
+			items.map((item) => {
+				if (item.id === id) {
+					return {
+						...item,
+						title: e.target.value,
+					};
+				} else {
+					return item;
+				}
+			})
+		);
+	}
+
+	return (
+		<>
+			<h2>What's your travel snack?</h2>
+			<ul>
+				{items.map((item, index) => (
+					<li key={item.id}>
+						<input
+							value={item.title}
+							onChange={(e) => {
+								handleItemChange(item.id, e);
+							}}
+						/>{" "}
+						<button
+							on_click={() => {
+								setSelectedId(item.id);
+							}}
+						>
+							Choose
+						</button>
+					</li>
+				))}
+			</ul>
+			<p>You picked {selectedItem.title}.</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-top: 10px;
+}
+```
+
+(Alternatively, you may hold the selected index in state.)
+
+The state used to be duplicated like this:
+
+-   `items = [{ id: 0, title: 'pretzels'}, ...]`
+-   `selectedItem = {id: 0, title: 'pretzels'}`
+
+But after the change it's like this:
+
+-   `items = [{ id: 0, title: 'pretzels'}, ...]`
+-   `selectedId = 0`
+
+The duplication is gone, and you only keep the essential state!
+
+Now if you edit the _selected_ item, the message below will update immediately. This is because `setItems` triggers a re-render, and `items.find(...)` would find the item with the updated title. You didn't need to hold _the selected item_ in state, because only the _selected ID_ is essential. The rest could be calculated during render.
+
+## Avoid deeply nested state
+
+Imagine a travel plan consisting of planets, continents, and countries. You might be tempted to structure its state using nested objects and arrays, like in this example:
+
+```js
+import { useState } from "react";
+import { initialTravelPlan } from "./places.js";
+
+function PlaceTree({ place }) {
+	const childPlaces = place.childPlaces;
+	return (
+		<li>
+			{place.title}
+			{childPlaces.length > 0 && (
+				<ol>
+					{childPlaces.map((place) => (
+						<PlaceTree key={place.id} place={place} />
+					))}
+				</ol>
+			)}
+		</li>
+	);
+}
+
+export default function TravelPlan() {
+	const [plan, setPlan] = useState(initialTravelPlan);
+	const planets = plan.childPlaces;
+	return (
+		<>
+			<h2>Places to visit</h2>
+			<ol>
+				{planets.map((place) => (
+					<PlaceTree key={place.id} place={place} />
+				))}
+			</ol>
+		</>
+	);
+}
+```
+
+```js
+export const initialTravelPlan = {
+	id: 0,
+	title: "(Root)",
+	childPlaces: [
+		{
+			id: 1,
+			title: "Earth",
+			childPlaces: [
+				{
+					id: 2,
+					title: "Africa",
+					childPlaces: [
+						{
+							id: 3,
+							title: "Botswana",
+							childPlaces: [],
+						},
+						{
+							id: 4,
+							title: "Egypt",
+							childPlaces: [],
+						},
+						{
+							id: 5,
+							title: "Kenya",
+							childPlaces: [],
+						},
+						{
+							id: 6,
+							title: "Madagascar",
+							childPlaces: [],
+						},
+						{
+							id: 7,
+							title: "Morocco",
+							childPlaces: [],
+						},
+						{
+							id: 8,
+							title: "Nigeria",
+							childPlaces: [],
+						},
+						{
+							id: 9,
+							title: "South Africa",
+							childPlaces: [],
+						},
+					],
+				},
+				{
+					id: 10,
+					title: "Americas",
+					childPlaces: [
+						{
+							id: 11,
+							title: "Argentina",
+							childPlaces: [],
+						},
+						{
+							id: 12,
+							title: "Brazil",
+							childPlaces: [],
+						},
+						{
+							id: 13,
+							title: "Barbados",
+							childPlaces: [],
+						},
+						{
+							id: 14,
+							title: "Canada",
+							childPlaces: [],
+						},
+						{
+							id: 15,
+							title: "Jamaica",
+							childPlaces: [],
+						},
+						{
+							id: 16,
+							title: "Mexico",
+							childPlaces: [],
+						},
+						{
+							id: 17,
+							title: "Trinidad and Tobago",
+							childPlaces: [],
+						},
+						{
+							id: 18,
+							title: "Venezuela",
+							childPlaces: [],
+						},
+					],
+				},
+				{
+					id: 19,
+					title: "Asia",
+					childPlaces: [
+						{
+							id: 20,
+							title: "China",
+							childPlaces: [],
+						},
+						{
+							id: 21,
+							title: "Hong Kong",
+							childPlaces: [],
+						},
+						{
+							id: 22,
+							title: "India",
+							childPlaces: [],
+						},
+						{
+							id: 23,
+							title: "Singapore",
+							childPlaces: [],
+						},
+						{
+							id: 24,
+							title: "South Korea",
+							childPlaces: [],
+						},
+						{
+							id: 25,
+							title: "Thailand",
+							childPlaces: [],
+						},
+						{
+							id: 26,
+							title: "Vietnam",
+							childPlaces: [],
+						},
+					],
+				},
+				{
+					id: 27,
+					title: "Europe",
+					childPlaces: [
+						{
+							id: 28,
+							title: "Croatia",
+							childPlaces: [],
+						},
+						{
+							id: 29,
+							title: "France",
+							childPlaces: [],
+						},
+						{
+							id: 30,
+							title: "Germany",
+							childPlaces: [],
+						},
+						{
+							id: 31,
+							title: "Italy",
+							childPlaces: [],
+						},
+						{
+							id: 32,
+							title: "Portugal",
+							childPlaces: [],
+						},
+						{
+							id: 33,
+							title: "Spain",
+							childPlaces: [],
+						},
+						{
+							id: 34,
+							title: "Turkey",
+							childPlaces: [],
+						},
+					],
+				},
+				{
+					id: 35,
+					title: "Oceania",
+					childPlaces: [
+						{
+							id: 36,
+							title: "Australia",
+							childPlaces: [],
+						},
+						{
+							id: 37,
+							title: "Bora Bora (French Polynesia)",
+							childPlaces: [],
+						},
+						{
+							id: 38,
+							title: "Easter Island (Chile)",
+							childPlaces: [],
+						},
+						{
+							id: 39,
+							title: "Fiji",
+							childPlaces: [],
+						},
+						{
+							id: 40,
+							title: "Hawaii (the USA)",
+							childPlaces: [],
+						},
+						{
+							id: 41,
+							title: "New Zealand",
+							childPlaces: [],
+						},
+						{
+							id: 42,
+							title: "Vanuatu",
+							childPlaces: [],
+						},
+					],
+				},
+			],
+		},
+		{
+			id: 43,
+			title: "Moon",
+			childPlaces: [
+				{
+					id: 44,
+					title: "Rheita",
+					childPlaces: [],
+				},
+				{
+					id: 45,
+					title: "Piccolomini",
+					childPlaces: [],
+				},
+				{
+					id: 46,
+					title: "Tycho",
+					childPlaces: [],
+				},
+			],
+		},
+		{
+			id: 47,
+			title: "Mars",
+			childPlaces: [
+				{
+					id: 48,
+					title: "Corn Town",
+					childPlaces: [],
+				},
+				{
+					id: 49,
+					title: "Green Hill",
+					childPlaces: [],
+				},
+			],
+		},
+	],
+};
+```
+
+Now let's say you want to add a button to delete a place you've already visited. How would you go about it? [Updating nested state](/learn/updating-objects-in-state#updating-a-nested-object) involves making copies of objects all the way up from the part that changed. Deleting a deeply nested place would involve copying its entire parent place chain. Such code can be very verbose.
+
+**If the state is too nested to update easily, consider making it "flat".** Here is one way you can restructure this data. Instead of a tree-like structure where each `place` has an array of _its child places_, you can have each place hold an array of _its child place IDs_. Then store a mapping from each place ID to the corresponding place.
+
+This data restructuring might remind you of seeing a database table:
+
+```js
+import { useState } from "react";
+import { initialTravelPlan } from "./places.js";
+
+function PlaceTree({ id, placesById }) {
+	const place = placesById[id];
+	const childIds = place.childIds;
+	return (
+		<li>
+			{place.title}
+			{childIds.length > 0 && (
+				<ol>
+					{childIds.map((childId) => (
+						<PlaceTree
+							key={childId}
+							id={childId}
+							placesById={placesById}
+						/>
+					))}
+				</ol>
+			)}
+		</li>
+	);
+}
+
+export default function TravelPlan() {
+	const [plan, setPlan] = useState(initialTravelPlan);
+	const root = plan[0];
+	const planetIds = root.childIds;
+	return (
+		<>
+			<h2>Places to visit</h2>
+			<ol>
+				{planetIds.map((id) => (
+					<PlaceTree key={id} id={id} placesById={plan} />
+				))}
+			</ol>
+		</>
+	);
+}
+```
+
+```js
+export const initialTravelPlan = {
+	0: {
+		id: 0,
+		title: "(Root)",
+		childIds: [1, 43, 47],
+	},
+	1: {
+		id: 1,
+		title: "Earth",
+		childIds: [2, 10, 19, 27, 35],
+	},
+	2: {
+		id: 2,
+		title: "Africa",
+		childIds: [3, 4, 5, 6, 7, 8, 9],
+	},
+	3: {
+		id: 3,
+		title: "Botswana",
+		childIds: [],
+	},
+	4: {
+		id: 4,
+		title: "Egypt",
+		childIds: [],
+	},
+	5: {
+		id: 5,
+		title: "Kenya",
+		childIds: [],
+	},
+	6: {
+		id: 6,
+		title: "Madagascar",
+		childIds: [],
+	},
+	7: {
+		id: 7,
+		title: "Morocco",
+		childIds: [],
+	},
+	8: {
+		id: 8,
+		title: "Nigeria",
+		childIds: [],
+	},
+	9: {
+		id: 9,
+		title: "South Africa",
+		childIds: [],
+	},
+	10: {
+		id: 10,
+		title: "Americas",
+		childIds: [11, 12, 13, 14, 15, 16, 17, 18],
+	},
+	11: {
+		id: 11,
+		title: "Argentina",
+		childIds: [],
+	},
+	12: {
+		id: 12,
+		title: "Brazil",
+		childIds: [],
+	},
+	13: {
+		id: 13,
+		title: "Barbados",
+		childIds: [],
+	},
+	14: {
+		id: 14,
+		title: "Canada",
+		childIds: [],
+	},
+	15: {
+		id: 15,
+		title: "Jamaica",
+		childIds: [],
+	},
+	16: {
+		id: 16,
+		title: "Mexico",
+		childIds: [],
+	},
+	17: {
+		id: 17,
+		title: "Trinidad and Tobago",
+		childIds: [],
+	},
+	18: {
+		id: 18,
+		title: "Venezuela",
+		childIds: [],
+	},
+	19: {
+		id: 19,
+		title: "Asia",
+		childIds: [20, 21, 22, 23, 24, 25, 26],
+	},
+	20: {
+		id: 20,
+		title: "China",
+		childIds: [],
+	},
+	21: {
+		id: 21,
+		title: "Hong Kong",
+		childIds: [],
+	},
+	22: {
+		id: 22,
+		title: "India",
+		childIds: [],
+	},
+	23: {
+		id: 23,
+		title: "Singapore",
+		childIds: [],
+	},
+	24: {
+		id: 24,
+		title: "South Korea",
+		childIds: [],
+	},
+	25: {
+		id: 25,
+		title: "Thailand",
+		childIds: [],
+	},
+	26: {
+		id: 26,
+		title: "Vietnam",
+		childIds: [],
+	},
+	27: {
+		id: 27,
+		title: "Europe",
+		childIds: [28, 29, 30, 31, 32, 33, 34],
+	},
+	28: {
+		id: 28,
+		title: "Croatia",
+		childIds: [],
+	},
+	29: {
+		id: 29,
+		title: "France",
+		childIds: [],
+	},
+	30: {
+		id: 30,
+		title: "Germany",
+		childIds: [],
+	},
+	31: {
+		id: 31,
+		title: "Italy",
+		childIds: [],
+	},
+	32: {
+		id: 32,
+		title: "Portugal",
+		childIds: [],
+	},
+	33: {
+		id: 33,
+		title: "Spain",
+		childIds: [],
+	},
+	34: {
+		id: 34,
+		title: "Turkey",
+		childIds: [],
+	},
+	35: {
+		id: 35,
+		title: "Oceania",
+		childIds: [36, 37, 38, 39, 40, 41, 42],
+	},
+	36: {
+		id: 36,
+		title: "Australia",
+		childIds: [],
+	},
+	37: {
+		id: 37,
+		title: "Bora Bora (French Polynesia)",
+		childIds: [],
+	},
+	38: {
+		id: 38,
+		title: "Easter Island (Chile)",
+		childIds: [],
+	},
+	39: {
+		id: 39,
+		title: "Fiji",
+		childIds: [],
+	},
+	40: {
+		id: 40,
+		title: "Hawaii (the USA)",
+		childIds: [],
+	},
+	41: {
+		id: 41,
+		title: "New Zealand",
+		childIds: [],
+	},
+	42: {
+		id: 42,
+		title: "Vanuatu",
+		childIds: [],
+	},
+	43: {
+		id: 43,
+		title: "Moon",
+		childIds: [44, 45, 46],
+	},
+	44: {
+		id: 44,
+		title: "Rheita",
+		childIds: [],
+	},
+	45: {
+		id: 45,
+		title: "Piccolomini",
+		childIds: [],
+	},
+	46: {
+		id: 46,
+		title: "Tycho",
+		childIds: [],
+	},
+	47: {
+		id: 47,
+		title: "Mars",
+		childIds: [48, 49],
+	},
+	48: {
+		id: 48,
+		title: "Corn Town",
+		childIds: [],
+	},
+	49: {
+		id: 49,
+		title: "Green Hill",
+		childIds: [],
+	},
+};
+```
+
+**Now that the state is "flat" (also known as "normalized"), updating nested items becomes easier.**
+
+In order to remove a place now, you only need to update two levels of state:
+
+-   The updated version of its _parent_ place should exclude the removed ID from its `childIds` array.
+-   The updated version of the root "table" object should include the updated version of the parent place.
+
+Here is an example of how you could go about it:
+
+```js
+import { useState } from "react";
+import { initialTravelPlan } from "./places.js";
+
+export default function TravelPlan() {
+	const [plan, setPlan] = useState(initialTravelPlan);
+
+	function handleComplete(parentId, childId) {
+		const parent = plan[parentId];
+		// Create a new version of the parent place
+		// that doesn't include this child ID.
+		const nextParent = {
+			...parent,
+			childIds: parent.childIds.filter((id) => id !== childId),
+		};
+		// Update the root state object...
+		setPlan({
+			...plan,
+			// ...so that it has the updated parent.
+			[parentId]: nextParent,
+		});
+	}
+
+	const root = plan[0];
+	const planetIds = root.childIds;
+	return (
+		<>
+			<h2>Places to visit</h2>
+			<ol>
+				{planetIds.map((id) => (
+					<PlaceTree
+						key={id}
+						id={id}
+						parentId={0}
+						placesById={plan}
+						onComplete={handleComplete}
+					/>
+				))}
+			</ol>
+		</>
+	);
+}
+
+function PlaceTree({ id, parentId, placesById, onComplete }) {
+	const place = placesById[id];
+	const childIds = place.childIds;
+	return (
+		<li>
+			{place.title}
+			<button
+				on_click={() => {
+					onComplete(parentId, id);
+				}}
+			>
+				Complete
+			</button>
+			{childIds.length > 0 && (
+				<ol>
+					{childIds.map((childId) => (
+						<PlaceTree
+							key={childId}
+							id={childId}
+							parentId={id}
+							placesById={placesById}
+							onComplete={onComplete}
+						/>
+					))}
+				</ol>
+			)}
+		</li>
+	);
+}
+```
+
+```js
+export const initialTravelPlan = {
+	0: {
+		id: 0,
+		title: "(Root)",
+		childIds: [1, 43, 47],
+	},
+	1: {
+		id: 1,
+		title: "Earth",
+		childIds: [2, 10, 19, 27, 35],
+	},
+	2: {
+		id: 2,
+		title: "Africa",
+		childIds: [3, 4, 5, 6, 7, 8, 9],
+	},
+	3: {
+		id: 3,
+		title: "Botswana",
+		childIds: [],
+	},
+	4: {
+		id: 4,
+		title: "Egypt",
+		childIds: [],
+	},
+	5: {
+		id: 5,
+		title: "Kenya",
+		childIds: [],
+	},
+	6: {
+		id: 6,
+		title: "Madagascar",
+		childIds: [],
+	},
+	7: {
+		id: 7,
+		title: "Morocco",
+		childIds: [],
+	},
+	8: {
+		id: 8,
+		title: "Nigeria",
+		childIds: [],
+	},
+	9: {
+		id: 9,
+		title: "South Africa",
+		childIds: [],
+	},
+	10: {
+		id: 10,
+		title: "Americas",
+		childIds: [11, 12, 13, 14, 15, 16, 17, 18],
+	},
+	11: {
+		id: 11,
+		title: "Argentina",
+		childIds: [],
+	},
+	12: {
+		id: 12,
+		title: "Brazil",
+		childIds: [],
+	},
+	13: {
+		id: 13,
+		title: "Barbados",
+		childIds: [],
+	},
+	14: {
+		id: 14,
+		title: "Canada",
+		childIds: [],
+	},
+	15: {
+		id: 15,
+		title: "Jamaica",
+		childIds: [],
+	},
+	16: {
+		id: 16,
+		title: "Mexico",
+		childIds: [],
+	},
+	17: {
+		id: 17,
+		title: "Trinidad and Tobago",
+		childIds: [],
+	},
+	18: {
+		id: 18,
+		title: "Venezuela",
+		childIds: [],
+	},
+	19: {
+		id: 19,
+		title: "Asia",
+		childIds: [20, 21, 22, 23, 24, 25, 26],
+	},
+	20: {
+		id: 20,
+		title: "China",
+		childIds: [],
+	},
+	21: {
+		id: 21,
+		title: "Hong Kong",
+		childIds: [],
+	},
+	22: {
+		id: 22,
+		title: "India",
+		childIds: [],
+	},
+	23: {
+		id: 23,
+		title: "Singapore",
+		childIds: [],
+	},
+	24: {
+		id: 24,
+		title: "South Korea",
+		childIds: [],
+	},
+	25: {
+		id: 25,
+		title: "Thailand",
+		childIds: [],
+	},
+	26: {
+		id: 26,
+		title: "Vietnam",
+		childIds: [],
+	},
+	27: {
+		id: 27,
+		title: "Europe",
+		childIds: [28, 29, 30, 31, 32, 33, 34],
+	},
+	28: {
+		id: 28,
+		title: "Croatia",
+		childIds: [],
+	},
+	29: {
+		id: 29,
+		title: "France",
+		childIds: [],
+	},
+	30: {
+		id: 30,
+		title: "Germany",
+		childIds: [],
+	},
+	31: {
+		id: 31,
+		title: "Italy",
+		childIds: [],
+	},
+	32: {
+		id: 32,
+		title: "Portugal",
+		childIds: [],
+	},
+	33: {
+		id: 33,
+		title: "Spain",
+		childIds: [],
+	},
+	34: {
+		id: 34,
+		title: "Turkey",
+		childIds: [],
+	},
+	35: {
+		id: 35,
+		title: "Oceania",
+		childIds: [36, 37, 38, 39, 40, 41, , 42],
+	},
+	36: {
+		id: 36,
+		title: "Australia",
+		childIds: [],
+	},
+	37: {
+		id: 37,
+		title: "Bora Bora (French Polynesia)",
+		childIds: [],
+	},
+	38: {
+		id: 38,
+		title: "Easter Island (Chile)",
+		childIds: [],
+	},
+	39: {
+		id: 39,
+		title: "Fiji",
+		childIds: [],
+	},
+	40: {
+		id: 40,
+		title: "Hawaii (the USA)",
+		childIds: [],
+	},
+	41: {
+		id: 41,
+		title: "New Zealand",
+		childIds: [],
+	},
+	42: {
+		id: 42,
+		title: "Vanuatu",
+		childIds: [],
+	},
+	43: {
+		id: 43,
+		title: "Moon",
+		childIds: [44, 45, 46],
+	},
+	44: {
+		id: 44,
+		title: "Rheita",
+		childIds: [],
+	},
+	45: {
+		id: 45,
+		title: "Piccolomini",
+		childIds: [],
+	},
+	46: {
+		id: 46,
+		title: "Tycho",
+		childIds: [],
+	},
+	47: {
+		id: 47,
+		title: "Mars",
+		childIds: [48, 49],
+	},
+	48: {
+		id: 48,
+		title: "Corn Town",
+		childIds: [],
+	},
+	49: {
+		id: 49,
+		title: "Green Hill",
+		childIds: [],
+	},
+};
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+You can nest state as much as you like, but making it "flat" can solve numerous problems. It makes state easier to update, and it helps ensure you don't have duplication in different parts of a nested object.
+
+<DeepDive>
+
+#### Improving memory usage
+
+Ideally, you would also remove the deleted items (and their children!) from the "table" object to improve memory usage. This version does that. It also [uses Immer](/learn/updating-objects-in-state#write-concise-update-logic-with-immer) to make the update logic more concise.
+
+```js
+import { useImmer } from "use-immer";
+import { initialTravelPlan } from "./places.js";
+
+export default function TravelPlan() {
+	const [plan, updatePlan] = useImmer(initialTravelPlan);
+
+	function handleComplete(parentId, childId) {
+		updatePlan((draft) => {
+			// Remove from the parent place's child IDs.
+			const parent = draft[parentId];
+			parent.childIds = parent.childIds.filter((id) => id !== childId);
+
+			// Forget this place and all its subtree.
+			deleteAllChildren(childId);
+			function deleteAllChildren(id) {
+				const place = draft[id];
+				place.childIds.forEach(deleteAllChildren);
+				delete draft[id];
+			}
+		});
+	}
+
+	const root = plan[0];
+	const planetIds = root.childIds;
+	return (
+		<>
+			<h2>Places to visit</h2>
+			<ol>
+				{planetIds.map((id) => (
+					<PlaceTree
+						key={id}
+						id={id}
+						parentId={0}
+						placesById={plan}
+						onComplete={handleComplete}
+					/>
+				))}
+			</ol>
+		</>
+	);
+}
+
+function PlaceTree({ id, parentId, placesById, onComplete }) {
+	const place = placesById[id];
+	const childIds = place.childIds;
+	return (
+		<li>
+			{place.title}
+			<button
+				on_click={() => {
+					onComplete(parentId, id);
+				}}
+			>
+				Complete
+			</button>
+			{childIds.length > 0 && (
+				<ol>
+					{childIds.map((childId) => (
+						<PlaceTree
+							key={childId}
+							id={childId}
+							parentId={id}
+							placesById={placesById}
+							onComplete={onComplete}
+						/>
+					))}
+				</ol>
+			)}
+		</li>
+	);
+}
+```
+
+```js
+export const initialTravelPlan = {
+	0: {
+		id: 0,
+		title: "(Root)",
+		childIds: [1, 43, 47],
+	},
+	1: {
+		id: 1,
+		title: "Earth",
+		childIds: [2, 10, 19, 27, 35],
+	},
+	2: {
+		id: 2,
+		title: "Africa",
+		childIds: [3, 4, 5, 6, 7, 8, 9],
+	},
+	3: {
+		id: 3,
+		title: "Botswana",
+		childIds: [],
+	},
+	4: {
+		id: 4,
+		title: "Egypt",
+		childIds: [],
+	},
+	5: {
+		id: 5,
+		title: "Kenya",
+		childIds: [],
+	},
+	6: {
+		id: 6,
+		title: "Madagascar",
+		childIds: [],
+	},
+	7: {
+		id: 7,
+		title: "Morocco",
+		childIds: [],
+	},
+	8: {
+		id: 8,
+		title: "Nigeria",
+		childIds: [],
+	},
+	9: {
+		id: 9,
+		title: "South Africa",
+		childIds: [],
+	},
+	10: {
+		id: 10,
+		title: "Americas",
+		childIds: [11, 12, 13, 14, 15, 16, 17, 18],
+	},
+	11: {
+		id: 11,
+		title: "Argentina",
+		childIds: [],
+	},
+	12: {
+		id: 12,
+		title: "Brazil",
+		childIds: [],
+	},
+	13: {
+		id: 13,
+		title: "Barbados",
+		childIds: [],
+	},
+	14: {
+		id: 14,
+		title: "Canada",
+		childIds: [],
+	},
+	15: {
+		id: 15,
+		title: "Jamaica",
+		childIds: [],
+	},
+	16: {
+		id: 16,
+		title: "Mexico",
+		childIds: [],
+	},
+	17: {
+		id: 17,
+		title: "Trinidad and Tobago",
+		childIds: [],
+	},
+	18: {
+		id: 18,
+		title: "Venezuela",
+		childIds: [],
+	},
+	19: {
+		id: 19,
+		title: "Asia",
+		childIds: [20, 21, 22, 23, 24, 25, 26],
+	},
+	20: {
+		id: 20,
+		title: "China",
+		childIds: [],
+	},
+	21: {
+		id: 21,
+		title: "Hong Kong",
+		childIds: [],
+	},
+	22: {
+		id: 22,
+		title: "India",
+		childIds: [],
+	},
+	23: {
+		id: 23,
+		title: "Singapore",
+		childIds: [],
+	},
+	24: {
+		id: 24,
+		title: "South Korea",
+		childIds: [],
+	},
+	25: {
+		id: 25,
+		title: "Thailand",
+		childIds: [],
+	},
+	26: {
+		id: 26,
+		title: "Vietnam",
+		childIds: [],
+	},
+	27: {
+		id: 27,
+		title: "Europe",
+		childIds: [28, 29, 30, 31, 32, 33, 34],
+	},
+	28: {
+		id: 28,
+		title: "Croatia",
+		childIds: [],
+	},
+	29: {
+		id: 29,
+		title: "France",
+		childIds: [],
+	},
+	30: {
+		id: 30,
+		title: "Germany",
+		childIds: [],
+	},
+	31: {
+		id: 31,
+		title: "Italy",
+		childIds: [],
+	},
+	32: {
+		id: 32,
+		title: "Portugal",
+		childIds: [],
+	},
+	33: {
+		id: 33,
+		title: "Spain",
+		childIds: [],
+	},
+	34: {
+		id: 34,
+		title: "Turkey",
+		childIds: [],
+	},
+	35: {
+		id: 35,
+		title: "Oceania",
+		childIds: [36, 37, 38, 39, 40, 41, , 42],
+	},
+	36: {
+		id: 36,
+		title: "Australia",
+		childIds: [],
+	},
+	37: {
+		id: 37,
+		title: "Bora Bora (French Polynesia)",
+		childIds: [],
+	},
+	38: {
+		id: 38,
+		title: "Easter Island (Chile)",
+		childIds: [],
+	},
+	39: {
+		id: 39,
+		title: "Fiji",
+		childIds: [],
+	},
+	40: {
+		id: 40,
+		title: "Hawaii (the USA)",
+		childIds: [],
+	},
+	41: {
+		id: 41,
+		title: "New Zealand",
+		childIds: [],
+	},
+	42: {
+		id: 42,
+		title: "Vanuatu",
+		childIds: [],
+	},
+	43: {
+		id: 43,
+		title: "Moon",
+		childIds: [44, 45, 46],
+	},
+	44: {
+		id: 44,
+		title: "Rheita",
+		childIds: [],
+	},
+	45: {
+		id: 45,
+		title: "Piccolomini",
+		childIds: [],
+	},
+	46: {
+		id: 46,
+		title: "Tycho",
+		childIds: [],
+	},
+	47: {
+		id: 47,
+		title: "Mars",
+		childIds: [48, 49],
+	},
+	48: {
+		id: 48,
+		title: "Corn Town",
+		childIds: [],
+	},
+	49: {
+		id: 49,
+		title: "Green Hill",
+		childIds: [],
+	},
+};
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+</DeepDive>
+
+Sometimes, you can also reduce state nesting by moving some of the nested state into the child components. This works well for ephemeral UI state that doesn't need to be stored, like whether an item is hovered.
+
+<Recap>
+
+-   If two state variables always update together, consider merging them into one.
+-   Choose your state variables carefully to avoid creating "impossible" states.
+-   Structure your state in a way that reduces the chances that you'll make a mistake updating it.
+-   Avoid redundant and duplicate state so that you don't need to keep it in sync.
+-   Don't put props _into_ state unless you specifically want to prevent updates.
+-   For UI patterns like selection, keep ID or index in state instead of the object itself.
+-   If updating deeply nested state is complicated, try flattening it.
+
+</Recap>
+
+<Challenges>
+
+#### Fix a component that's not updating
+
+This `Clock` component receives two props: `color` and `time`. When you select a different color in the select box, the `Clock` component receives a different `color` prop from its parent component. However, for some reason, the displayed color doesn't update. Why? Fix the problem.
+
+```js
+import { useState } from "react";
+
+export default function Clock(props) {
+	const [color, setColor] = useState(props.color);
+	return <h1 style={{ color: color }}>{props.time}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import Clock from "./Clock.js";
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+
+export default function App() {
+	const time = useTime();
+	const [color, setColor] = useState("lightcoral");
+	return (
+		<div>
+			<p>
+				Pick a color:{" "}
+				<select
+					value={color}
+					onChange={(e) => setColor(e.target.value)}
+				>
+					<option value="lightcoral">lightcoral</option>
+					<option value="midnightblue">midnightblue</option>
+					<option value="rebeccapurple">rebeccapurple</option>
+				</select>
+			</p>
+			<Clock color={color} time={time.toLocaleTimeString()} />
+		</div>
+	);
+}
+```
+
+<Solution>
+
+The issue is that this component has `color` state initialized with the initial value of the `color` prop. But when the `color` prop changes, this does not affect the state variable! So they get out of sync. To fix this issue, remove the state variable altogether, and use the `color` prop directly.
+
+```js
+import { useState } from "react";
+
+export default function Clock(props) {
+	return <h1 style={{ color: props.color }}>{props.time}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import Clock from "./Clock.js";
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+
+export default function App() {
+	const time = useTime();
+	const [color, setColor] = useState("lightcoral");
+	return (
+		<div>
+			<p>
+				Pick a color:{" "}
+				<select
+					value={color}
+					onChange={(e) => setColor(e.target.value)}
+				>
+					<option value="lightcoral">lightcoral</option>
+					<option value="midnightblue">midnightblue</option>
+					<option value="rebeccapurple">rebeccapurple</option>
+				</select>
+			</p>
+			<Clock color={color} time={time.toLocaleTimeString()} />
+		</div>
+	);
+}
+```
+
+Or, using the destructuring syntax:
+
+```js
+import { useState } from "react";
+
+export default function Clock({ color, time }) {
+	return <h1 style={{ color: color }}>{time}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import Clock from "./Clock.js";
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+
+export default function App() {
+	const time = useTime();
+	const [color, setColor] = useState("lightcoral");
+	return (
+		<div>
+			<p>
+				Pick a color:{" "}
+				<select
+					value={color}
+					onChange={(e) => setColor(e.target.value)}
+				>
+					<option value="lightcoral">lightcoral</option>
+					<option value="midnightblue">midnightblue</option>
+					<option value="rebeccapurple">rebeccapurple</option>
+				</select>
+			</p>
+			<Clock color={color} time={time.toLocaleTimeString()} />
+		</div>
+	);
+}
+```
+
+</Solution>
+
+#### Fix a broken packing list
+
+This packing list has a footer that shows how many items are packed, and how many items there are overall. It seems to work at first, but it is buggy. For example, if you mark an item as packed and then delete it, the counter will not be updated correctly. Fix the counter so that it's always correct.
+
+<Hint>
+
+Is any state in this example redundant?
+
+</Hint>
+
+```js
+import { useState } from "react";
+import AddItem from "./AddItem.js";
+import PackingList from "./PackingList.js";
+
+let nextId = 3;
+const initialItems = [
+	{ id: 0, title: "Warm socks", packed: true },
+	{ id: 1, title: "Travel journal", packed: false },
+	{ id: 2, title: "Watercolors", packed: false },
+];
+
+export default function TravelPlan() {
+	const [items, setItems] = useState(initialItems);
+	const [total, setTotal] = useState(3);
+	const [packed, setPacked] = useState(1);
+
+	function handleAddItem(title) {
+		setTotal(total + 1);
+		setItems([
+			...items,
+			{
+				id: nextId++,
+				title: title,
+				packed: false,
+			},
+		]);
+	}
+
+	function handleChangeItem(nextItem) {
+		if (nextItem.packed) {
+			setPacked(packed + 1);
+		} else {
+			setPacked(packed - 1);
+		}
+		setItems(
+			items.map((item) => {
+				if (item.id === nextItem.id) {
+					return nextItem;
+				} else {
+					return item;
+				}
+			})
+		);
+	}
+
+	function handleDeleteItem(itemId) {
+		setTotal(total - 1);
+		setItems(items.filter((item) => item.id !== itemId));
+	}
+
+	return (
+		<>
+			<AddItem onAddItem={handleAddItem} />
+			<PackingList
+				items={items}
+				onChangeItem={handleChangeItem}
+				onDeleteItem={handleDeleteItem}
+			/>
+			<hr />
+			<b>
+				{packed} out of {total} packed!
+			</b>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddItem({ onAddItem }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add item"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setTitle("");
+					onAddItem(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function PackingList({ items, onChangeItem, onDeleteItem }) {
+	return (
+		<ul>
+			{items.map((item) => (
+				<li key={item.id}>
+					<label>
+						<input
+							type="checkbox"
+							checked={item.packed}
+							onChange={(e) => {
+								onChangeItem({
+									...item,
+									packed: e.target.checked,
+								});
+							}}
+						/>{" "}
+						{item.title}
+					</label>
+					<button on_click={() => onDeleteItem(item.id)}>
+						Delete
+					</button>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+<Solution>
+
+Although you could carefully change each event handler to update the `total` and `packed` counters correctly, the root problem is that these state variables exist at all. They are redundant because you can always calculate the number of items (packed or total) from the `items` array itself. Remove the redundant state to fix the bug:
+
+```js
+import { useState } from "react";
+import AddItem from "./AddItem.js";
+import PackingList from "./PackingList.js";
+
+let nextId = 3;
+const initialItems = [
+	{ id: 0, title: "Warm socks", packed: true },
+	{ id: 1, title: "Travel journal", packed: false },
+	{ id: 2, title: "Watercolors", packed: false },
+];
+
+export default function TravelPlan() {
+	const [items, setItems] = useState(initialItems);
+
+	const total = items.length;
+	const packed = items.filter((item) => item.packed).length;
+
+	function handleAddItem(title) {
+		setItems([
+			...items,
+			{
+				id: nextId++,
+				title: title,
+				packed: false,
+			},
+		]);
+	}
+
+	function handleChangeItem(nextItem) {
+		setItems(
+			items.map((item) => {
+				if (item.id === nextItem.id) {
+					return nextItem;
+				} else {
+					return item;
+				}
+			})
+		);
+	}
+
+	function handleDeleteItem(itemId) {
+		setItems(items.filter((item) => item.id !== itemId));
+	}
+
+	return (
+		<>
+			<AddItem onAddItem={handleAddItem} />
+			<PackingList
+				items={items}
+				onChangeItem={handleChangeItem}
+				onDeleteItem={handleDeleteItem}
+			/>
+			<hr />
+			<b>
+				{packed} out of {total} packed!
+			</b>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddItem({ onAddItem }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add item"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setTitle("");
+					onAddItem(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function PackingList({ items, onChangeItem, onDeleteItem }) {
+	return (
+		<ul>
+			{items.map((item) => (
+				<li key={item.id}>
+					<label>
+						<input
+							type="checkbox"
+							checked={item.packed}
+							onChange={(e) => {
+								onChangeItem({
+									...item,
+									packed: e.target.checked,
+								});
+							}}
+						/>{" "}
+						{item.title}
+					</label>
+					<button on_click={() => onDeleteItem(item.id)}>
+						Delete
+					</button>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+Notice how the event handlers are only concerned with calling `setItems` after this change. The item counts are now calculated during the next render from `items`, so they are always up-to-date.
+
+</Solution>
+
+#### Fix the disappearing selection
+
+There is a list of `letters` in state. When you hover or focus a particular letter, it gets highlighted. The currently highlighted letter is stored in the `highlightedLetter` state variable. You can "star" and "unstar" individual letters, which updates the `letters` array in state.
+
+This code works, but there is a minor UI glitch. When you press "Star" or "Unstar", the highlighting disappears for a moment. However, it reappears as soon as you move your pointer or switch to another letter with keyboard. Why is this happening? Fix it so that the highlighting doesn't disappear after the button click.
+
+```js
+import { useState } from "react";
+import { initialLetters } from "./data.js";
+import Letter from "./Letter.js";
+
+export default function MailClient() {
+	const [letters, setLetters] = useState(initialLetters);
+	const [highlightedLetter, setHighlightedLetter] = useState(null);
+
+	function handleHover(letter) {
+		setHighlightedLetter(letter);
+	}
+
+	function handleStar(starred) {
+		setLetters(
+			letters.map((letter) => {
+				if (letter.id === starred.id) {
+					return {
+						...letter,
+						isStarred: !letter.isStarred,
+					};
+				} else {
+					return letter;
+				}
+			})
+		);
+	}
+
+	return (
+		<>
+			<h2>Inbox</h2>
+			<ul>
+				{letters.map((letter) => (
+					<Letter
+						key={letter.id}
+						letter={letter}
+						isHighlighted={letter === highlightedLetter}
+						onHover={handleHover}
+						onToggleStar={handleStar}
+					/>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+export default function Letter({
+	letter,
+	isHighlighted,
+	onHover,
+	onToggleStar,
+}) {
+	return (
+		<li
+			className={isHighlighted ? "highlighted" : ""}
+			onFocus={() => {
+				onHover(letter);
+			}}
+			onPointerMove={() => {
+				onHover(letter);
+			}}
+		>
+			<button
+				on_click={() => {
+					onToggleStar(letter);
+				}}
+			>
+				{letter.isStarred ? "Unstar" : "Star"}
+			</button>
+			{letter.subject}
+		</li>
+	);
+}
+```
+
+```js
+export const initialLetters = [
+	{
+		id: 0,
+		subject: "Ready for adventure?",
+		isStarred: true,
+	},
+	{
+		id: 1,
+		subject: "Time to check in!",
+		isStarred: false,
+	},
+	{
+		id: 2,
+		subject: "Festival Begins in Just SEVEN Days!",
+		isStarred: false,
+	},
+];
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	border-radius: 5px;
+}
+.highlighted {
+	background: #d2eaff;
+}
+```
+
+<Solution>
+
+The problem is that you're holding the letter object in `highlightedLetter`. But you're also holding the same information in the `letters` array. So your state has duplication! When you update the `letters` array after the button click, you create a new letter object which is different from `highlightedLetter`. This is why `highlightedLetter === letter` check becomes `false`, and the highlight disappears. It reappears the next time you call `setHighlightedLetter` when the pointer moves.
+
+To fix the issue, remove the duplication from state. Instead of storing _the letter itself_ in two places, store the `highlightedId` instead. Then you can check `isHighlighted` for each letter with `letter.id === highlightedId`, which will work even if the `letter` object has changed since the last render.
+
+```js
+import { useState } from "react";
+import { initialLetters } from "./data.js";
+import Letter from "./Letter.js";
+
+export default function MailClient() {
+	const [letters, setLetters] = useState(initialLetters);
+	const [highlightedId, setHighlightedId] = useState(null);
+
+	function handleHover(letterId) {
+		setHighlightedId(letterId);
+	}
+
+	function handleStar(starredId) {
+		setLetters(
+			letters.map((letter) => {
+				if (letter.id === starredId) {
+					return {
+						...letter,
+						isStarred: !letter.isStarred,
+					};
+				} else {
+					return letter;
+				}
+			})
+		);
+	}
+
+	return (
+		<>
+			<h2>Inbox</h2>
+			<ul>
+				{letters.map((letter) => (
+					<Letter
+						key={letter.id}
+						letter={letter}
+						isHighlighted={letter.id === highlightedId}
+						onHover={handleHover}
+						onToggleStar={handleStar}
+					/>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+export default function Letter({
+	letter,
+	isHighlighted,
+	onHover,
+	onToggleStar,
+}) {
+	return (
+		<li
+			className={isHighlighted ? "highlighted" : ""}
+			onFocus={() => {
+				onHover(letter.id);
+			}}
+			onPointerMove={() => {
+				onHover(letter.id);
+			}}
+		>
+			<button
+				on_click={() => {
+					onToggleStar(letter.id);
+				}}
+			>
+				{letter.isStarred ? "Unstar" : "Star"}
+			</button>
+			{letter.subject}
+		</li>
+	);
+}
+```
+
+```js
+export const initialLetters = [
+	{
+		id: 0,
+		subject: "Ready for adventure?",
+		isStarred: true,
+	},
+	{
+		id: 1,
+		subject: "Time to check in!",
+		isStarred: false,
+	},
+	{
+		id: 2,
+		subject: "Festival Begins in Just SEVEN Days!",
+		isStarred: false,
+	},
+];
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	border-radius: 5px;
+}
+.highlighted {
+	background: #d2eaff;
+}
+```
+
+</Solution>
+
+#### Implement multiple selection
+
+In this example, each `Letter` has an `isSelected` prop and an `onToggle` handler that marks it as selected. This works, but the state is stored as a `selectedId` (either `null` or an ID), so only one letter can get selected at any given time.
+
+Change the state structure to support multiple selection. (How would you structure it? Think about this before writing the code.) Each checkbox should become independent from the others. Clicking a selected letter should uncheck it. Finally, the footer should show the correct number of the selected items.
+
+<Hint>
+
+Instead of a single selected ID, you might want to hold an array or a [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) of selected IDs in state.
+
+</Hint>
+
+```js
+import { useState } from "react";
+import { letters } from "./data.js";
+import Letter from "./Letter.js";
+
+export default function MailClient() {
+	const [selectedId, setSelectedId] = useState(null);
+
+	// TODO: allow multiple selection
+	const selectedCount = 1;
+
+	function handleToggle(toggledId) {
+		// TODO: allow multiple selection
+		setSelectedId(toggledId);
+	}
+
+	return (
+		<>
+			<h2>Inbox</h2>
+			<ul>
+				{letters.map((letter) => (
+					<Letter
+						key={letter.id}
+						letter={letter}
+						isSelected={
+							// TODO: allow multiple selection
+							letter.id === selectedId
+						}
+						onToggle={handleToggle}
+					/>
+				))}
+				<hr />
+				<p>
+					<b>You selected {selectedCount} letters</b>
+				</p>
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+export default function Letter({ letter, onToggle, isSelected }) {
+	return (
+		<li className={isSelected ? "selected" : ""}>
+			<label>
+				<input
+					type="checkbox"
+					checked={isSelected}
+					onChange={() => {
+						onToggle(letter.id);
+					}}
+				/>
+				{letter.subject}
+			</label>
+		</li>
+	);
+}
+```
+
+```js
+export const letters = [
+	{
+		id: 0,
+		subject: "Ready for adventure?",
+		isStarred: true,
+	},
+	{
+		id: 1,
+		subject: "Time to check in!",
+		isStarred: false,
+	},
+	{
+		id: 2,
+		subject: "Festival Begins in Just SEVEN Days!",
+		isStarred: false,
+	},
+];
+```
+
+```css
+input {
+	margin: 5px;
+}
+li {
+	border-radius: 5px;
+}
+label {
+	width: 100%;
+	padding: 5px;
+	display: inline-block;
+}
+.selected {
+	background: #d2eaff;
+}
+```
+
+<Solution>
+
+Instead of a single `selectedId`, keep a `selectedIds` _array_ in state. For example, if you select the first and the last letter, it would contain `[0, 2]`. When nothing is selected, it would be an empty `[]` array:
+
+```js
+import { useState } from "react";
+import { letters } from "./data.js";
+import Letter from "./Letter.js";
+
+export default function MailClient() {
+	const [selectedIds, setSelectedIds] = useState([]);
+
+	const selectedCount = selectedIds.length;
+
+	function handleToggle(toggledId) {
+		// Was it previously selected?
+		if (selectedIds.includes(toggledId)) {
+			// Then remove this ID from the array.
+			setSelectedIds(selectedIds.filter((id) => id !== toggledId));
+		} else {
+			// Otherwise, add this ID to the array.
+			setSelectedIds([...selectedIds, toggledId]);
+		}
+	}
+
+	return (
+		<>
+			<h2>Inbox</h2>
+			<ul>
+				{letters.map((letter) => (
+					<Letter
+						key={letter.id}
+						letter={letter}
+						isSelected={selectedIds.includes(letter.id)}
+						onToggle={handleToggle}
+					/>
+				))}
+				<hr />
+				<p>
+					<b>You selected {selectedCount} letters</b>
+				</p>
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+export default function Letter({ letter, onToggle, isSelected }) {
+	return (
+		<li className={isSelected ? "selected" : ""}>
+			<label>
+				<input
+					type="checkbox"
+					checked={isSelected}
+					onChange={() => {
+						onToggle(letter.id);
+					}}
+				/>
+				{letter.subject}
+			</label>
+		</li>
+	);
+}
+```
+
+```js
+export const letters = [
+	{
+		id: 0,
+		subject: "Ready for adventure?",
+		isStarred: true,
+	},
+	{
+		id: 1,
+		subject: "Time to check in!",
+		isStarred: false,
+	},
+	{
+		id: 2,
+		subject: "Festival Begins in Just SEVEN Days!",
+		isStarred: false,
+	},
+];
+```
+
+```css
+input {
+	margin: 5px;
+}
+li {
+	border-radius: 5px;
+}
+label {
+	width: 100%;
+	padding: 5px;
+	display: inline-block;
+}
+.selected {
+	background: #d2eaff;
+}
+```
+
+One minor downside of using an array is that for each item, you're calling `selectedIds.includes(letter.id)` to check whether it's selected. If the array is very large, this can become a performance problem because array search with [`includes()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) takes linear time, and you're doing this search for each individual item.
+
+To fix this, you can hold a [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) in state instead, which provides a fast [`has()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has) operation:
+
+```js
+import { useState } from "react";
+import { letters } from "./data.js";
+import Letter from "./Letter.js";
+
+export default function MailClient() {
+	const [selectedIds, setSelectedIds] = useState(new Set());
+
+	const selectedCount = selectedIds.size;
+
+	function handleToggle(toggledId) {
+		// Create a copy (to avoid mutation).
+		const nextIds = new Set(selectedIds);
+		if (nextIds.has(toggledId)) {
+			nextIds.delete(toggledId);
+		} else {
+			nextIds.add(toggledId);
+		}
+		setSelectedIds(nextIds);
+	}
+
+	return (
+		<>
+			<h2>Inbox</h2>
+			<ul>
+				{letters.map((letter) => (
+					<Letter
+						key={letter.id}
+						letter={letter}
+						isSelected={selectedIds.has(letter.id)}
+						onToggle={handleToggle}
+					/>
+				))}
+				<hr />
+				<p>
+					<b>You selected {selectedCount} letters</b>
+				</p>
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+export default function Letter({ letter, onToggle, isSelected }) {
+	return (
+		<li className={isSelected ? "selected" : ""}>
+			<label>
+				<input
+					type="checkbox"
+					checked={isSelected}
+					onChange={() => {
+						onToggle(letter.id);
+					}}
+				/>
+				{letter.subject}
+			</label>
+		</li>
+	);
+}
+```
+
+```js
+export const letters = [
+	{
+		id: 0,
+		subject: "Ready for adventure?",
+		isStarred: true,
+	},
+	{
+		id: 1,
+		subject: "Time to check in!",
+		isStarred: false,
+	},
+	{
+		id: 2,
+		subject: "Festival Begins in Just SEVEN Days!",
+		isStarred: false,
+	},
+];
+```
+
+```css
+input {
+	margin: 5px;
+}
+li {
+	border-radius: 5px;
+}
+label {
+	width: 100%;
+	padding: 5px;
+	display: inline-block;
+}
+.selected {
+	background: #d2eaff;
+}
+```
+
+Now each item does a `selectedIds.has(letter.id)` check, which is very fast.
+
+Keep in mind that you [should not mutate objects in state](/learn/updating-objects-in-state), and that includes Sets, too. This is why the `handleToggle` function creates a _copy_ of the Set first, and then updates that copy.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/communicate-data-between-server-and-client.md b/docs/src/learn/communicate-data-between-server-and-client.md
new file mode 100644
index 000000000..01736cacd
--- /dev/null
+++ b/docs/src/learn/communicate-data-between-server-and-client.md
@@ -0,0 +1,3 @@
+---
+title: Communicating Data Between Server and Client 🚧
+---
diff --git a/docs/src/learn/conditional-rendering.md b/docs/src/learn/conditional-rendering.md
new file mode 100644
index 000000000..87d031613
--- /dev/null
+++ b/docs/src/learn/conditional-rendering.md
@@ -0,0 +1,576 @@
+---
+title: Conditional Rendering 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Your components will often need to display different things depending on different conditions. In React, you can conditionally render JSX using JavaScript syntax like `if` statements, `&&`, and `? :` operators.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to return different JSX depending on a condition
+    -   How to conditionally include or exclude a piece of JSX
+    -   Common conditional syntax shortcuts you’ll encounter in React codebases
+
+## Conditionally returning JSX
+
+Let’s say you have a `PackingList` component rendering several `Item`s, which can be marked as packed or not:
+
+```js
+function Item({ name, isPacked }) {
+	return <li className="item">{name}</li>;
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+Notice that some of the `Item` components have their `isPacked` prop set to `true` instead of `false`. You want to add a checkmark (✔) to packed items if `isPacked={true}`.
+
+You can write this as an [`if`/`else` statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else) like so:
+
+```js
+if (isPacked) {
+	return <li className="item">{name} ✔</li>;
+}
+return <li className="item">{name}</li>;
+```
+
+If the `isPacked` prop is `true`, this code **returns a different JSX tree.** With this change, some of the items get a checkmark at the end:
+
+```js
+function Item({ name, isPacked }) {
+	if (isPacked) {
+		return <li className="item">{name} ✔</li>;
+	}
+	return <li className="item">{name}</li>;
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+Try editing what gets returned in either case, and see how the result changes!
+
+Notice how you're creating branching logic with JavaScript's `if` and `return` statements. In React, control flow (like conditions) is handled by JavaScript.
+
+### Conditionally returning nothing with `null`
+
+In some situations, you won't want to render anything at all. For example, say you don't want to show packed items at all. A component must return something. In this case, you can return `null`:
+
+```js
+if (isPacked) {
+	return null;
+}
+return <li className="item">{name}</li>;
+```
+
+If `isPacked` is true, the component will return nothing, `null`. Otherwise, it will return JSX to render.
+
+```js
+function Item({ name, isPacked }) {
+	if (isPacked) {
+		return null;
+	}
+	return <li className="item">{name}</li>;
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+In practice, returning `null` from a component isn't common because it might surprise a developer trying to render it. More often, you would conditionally include or exclude the component in the parent component's JSX. Here's how to do that!
+
+## Conditionally including JSX
+
+In the previous example, you controlled which (if any!) JSX tree would be returned by the component. You may already have noticed some duplication in the render output:
+
+```js
+<li className="item">{name} ✔</li>
+```
+
+is very similar to
+
+```js
+<li className="item">{name}</li>
+```
+
+Both of the conditional branches return `<li className="item">...</li>`:
+
+```js
+if (isPacked) {
+	return <li className="item">{name} ✔</li>;
+}
+return <li className="item">{name}</li>;
+```
+
+While this duplication isn't harmful, it could make your code harder to maintain. What if you want to change the `className`? You'd have to do it in two places in your code! In such a situation, you could conditionally include a little JSX to make your code more [DRY.](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)
+
+### Conditional (ternary) operator (`? :`)
+
+JavaScript has a compact syntax for writing a conditional expression -- the [conditional operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator) or "ternary operator".
+
+Instead of this:
+
+```js
+if (isPacked) {
+	return <li className="item">{name} ✔</li>;
+}
+return <li className="item">{name}</li>;
+```
+
+You can write this:
+
+```js
+return <li className="item">{isPacked ? name + " ✔" : name}</li>;
+```
+
+You can read it as _"if `isPacked` is true, then (`?`) render `name + ' ✔'`, otherwise (`:`) render `name`"_.
+
+<DeepDive>
+
+#### Are these two examples fully equivalent?
+
+If you're coming from an object-oriented programming background, you might assume that the two examples above are subtly different because one of them may create two different "instances" of `<li>`. But JSX elements aren't "instances" because they don't hold any internal state and aren't real DOM nodes. They're lightweight descriptions, like blueprints. So these two examples, in fact, _are_ completely equivalent. [Preserving and Resetting State](/learn/preserving-and-resetting-state) goes into detail about how this works.
+
+</DeepDive>
+
+Now let's say you want to wrap the completed item's text into another HTML tag, like `<del>` to strike it out. You can add even more newlines and parentheses so that it's easier to nest more JSX in each of the cases:
+
+```js
+function Item({ name, isPacked }) {
+	return (
+		<li className="item">{isPacked ? <del>{name + " ✔"}</del> : name}</li>
+	);
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+This style works well for simple conditions, but use it in moderation. If your components get messy with too much nested conditional markup, consider extracting child components to clean things up. In React, markup is a part of your code, so you can use tools like variables and functions to tidy up complex expressions.
+
+### Logical AND operator (`&&`)
+
+Another common shortcut you'll encounter is the [JavaScript logical AND (`&&`) operator.](<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND#:~:text=The%20logical%20AND%20(%20%26%26%20)%20operator,it%20returns%20a%20Boolean%20value.>) Inside React components, it often comes up when you want to render some JSX when the condition is true, **or render nothing otherwise.** With `&&`, you could conditionally render the checkmark only if `isPacked` is `true`:
+
+```js
+return (
+	<li className="item">
+		{name} {isPacked && "✔"}
+	</li>
+);
+```
+
+You can read this as _"if `isPacked`, then (`&&`) render the checkmark, otherwise, render nothing"_.
+
+Here it is in action:
+
+```js
+function Item({ name, isPacked }) {
+	return (
+		<li className="item">
+			{name} {isPacked && "✔"}
+		</li>
+	);
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+A [JavaScript && expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND) returns the value of its right side (in our case, the checkmark) if the left side (our condition) is `true`. But if the condition is `false`, the whole expression becomes `false`. React considers `false` as a "hole" in the JSX tree, just like `null` or `undefined`, and doesn't render anything in its place.
+
+<Pitfall>
+
+**Don't put numbers on the left side of `&&`.**
+
+To test the condition, JavaScript converts the left side to a boolean automatically. However, if the left side is `0`, then the whole expression gets that value (`0`), and React will happily render `0` rather than nothing.
+
+For example, a common mistake is to write code like `messageCount && <p>New messages</p>`. It's easy to assume that it renders nothing when `messageCount` is `0`, but it really renders the `0` itself!
+
+To fix it, make the left side a boolean: `messageCount > 0 && <p>New messages</p>`.
+
+</Pitfall>
+
+### Conditionally assigning JSX to a variable
+
+When the shortcuts get in the way of writing plain code, try using an `if` statement and a variable. You can reassign variables defined with [`let`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let), so start by providing the default content you want to display, the name:
+
+```js
+let itemContent = name;
+```
+
+Use an `if` statement to reassign a JSX expression to `itemContent` if `isPacked` is `true`:
+
+```js
+if (isPacked) {
+	itemContent = name + " ✔";
+}
+```
+
+[Curly braces open the "window into JavaScript".](/learn/javascript-in-jsx-with-curly-braces#using-curly-braces-a-window-into-the-javascript-world) Embed the variable with curly braces in the returned JSX tree, nesting the previously calculated expression inside of JSX:
+
+```js
+<li className="item">{itemContent}</li>
+```
+
+This style is the most verbose, but it's also the most flexible. Here it is in action:
+
+```js
+function Item({ name, isPacked }) {
+	let itemContent = name;
+	if (isPacked) {
+		itemContent = name + " ✔";
+	}
+	return <li className="item">{itemContent}</li>;
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+Like before, this works not only for text, but for arbitrary JSX too:
+
+```js
+function Item({ name, isPacked }) {
+	let itemContent = name;
+	if (isPacked) {
+		itemContent = <del>{name + " ✔"}</del>;
+	}
+	return <li className="item">{itemContent}</li>;
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+If you're not familiar with JavaScript, this variety of styles might seem overwhelming at first. However, learning them will help you read and write any JavaScript code -- and not just React components! Pick the one you prefer for a start, and then consult this reference again if you forget how the other ones work.
+
+<Recap>
+
+-   In React, you control branching logic with JavaScript.
+-   You can return a JSX expression conditionally with an `if` statement.
+-   You can conditionally save some JSX to a variable and then include it inside other JSX by using the curly braces.
+-   In JSX, `{cond ? <A /> : <B />}` means _"if `cond`, render `<A />`, otherwise `<B />`"_.
+-   In JSX, `{cond && <A />}` means _"if `cond`, render `<A />`, otherwise nothing"_.
+-   The shortcuts are common, but you don't have to use them if you prefer plain `if`.
+
+</Recap>
+
+<Challenges>
+
+#### Show an icon for incomplete items with `? :`
+
+Use the conditional operator (`cond ? a : b`) to render a ❌ if `isPacked` isn’t `true`.
+
+```js
+function Item({ name, isPacked }) {
+	return (
+		<li className="item">
+			{name} {isPacked && "✔"}
+		</li>
+	);
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+<Solution>
+
+```js
+function Item({ name, isPacked }) {
+	return (
+		<li className="item">
+			{name} {isPacked ? "✔" : "❌"}
+		</li>
+	);
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item isPacked={true} name="Space suit" />
+				<Item isPacked={true} name="Helmet with a golden leaf" />
+				<Item isPacked={false} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+</Solution>
+
+#### Show the item importance with `&&`
+
+In this example, each `Item` receives a numerical `importance` prop. Use the `&&` operator to render "_(Importance: X)_" in italics, but only for items that have non-zero importance. Your item list should end up looking like this:
+
+-   Space suit _(Importance: 9)_
+-   Helmet with a golden leaf
+-   Photo of Tam _(Importance: 6)_
+
+Don't forget to add a space between the two labels!
+
+```js
+function Item({ name, importance }) {
+	return <li className="item">{name}</li>;
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item importance={9} name="Space suit" />
+				<Item importance={0} name="Helmet with a golden leaf" />
+				<Item importance={6} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+<Solution>
+
+This should do the trick:
+
+```js
+function Item({ name, importance }) {
+	return (
+		<li className="item">
+			{name}
+			{importance > 0 && " "}
+			{importance > 0 && <i>(Importance: {importance})</i>}
+		</li>
+	);
+}
+
+export default function PackingList() {
+	return (
+		<section>
+			<h1>Sally Ride's Packing List</h1>
+			<ul>
+				<Item importance={9} name="Space suit" />
+				<Item importance={0} name="Helmet with a golden leaf" />
+				<Item importance={6} name="Photo of Tam" />
+			</ul>
+		</section>
+	);
+}
+```
+
+Note that you must write `importance > 0 && ...` rather than `importance && ...` so that if the `importance` is `0`, `0` isn't rendered as the result!
+
+In this solution, two separate conditions are used to insert a space between the name and the importance label. Alternatively, you could use a fragment with a leading space: `importance > 0 && <> <i>...</i></>` or add a space immediately inside the `<i>`: `importance > 0 && <i> ...</i>`.
+
+</Solution>
+
+#### Refactor a series of `? :` to `if` and variables
+
+This `Drink` component uses a series of `? :` conditions to show different information depending on whether the `name` prop is `"tea"` or `"coffee"`. The problem is that the information about each drink is spread across multiple conditions. Refactor this code to use a single `if` statement instead of three `? :` conditions.
+
+```js
+function Drink({ name }) {
+	return (
+		<section>
+			<h1>{name}</h1>
+			<dl>
+				<dt>Part of plant</dt>
+				<dd>{name === "tea" ? "leaf" : "bean"}</dd>
+				<dt>Caffeine content</dt>
+				<dd>{name === "tea" ? "15–70 mg/cup" : "80–185 mg/cup"}</dd>
+				<dt>Age</dt>
+				<dd>{name === "tea" ? "4,000+ years" : "1,000+ years"}</dd>
+			</dl>
+		</section>
+	);
+}
+
+export default function DrinkList() {
+	return (
+		<div>
+			<Drink name="tea" />
+			<Drink name="coffee" />
+		</div>
+	);
+}
+```
+
+Once you've refactored the code to use `if`, do you have further ideas on how to simplify it?
+
+<Solution>
+
+There are multiple ways you could go about this, but here is one starting point:
+
+```js
+function Drink({ name }) {
+	let part, caffeine, age;
+	if (name === "tea") {
+		part = "leaf";
+		caffeine = "15–70 mg/cup";
+		age = "4,000+ years";
+	} else if (name === "coffee") {
+		part = "bean";
+		caffeine = "80–185 mg/cup";
+		age = "1,000+ years";
+	}
+	return (
+		<section>
+			<h1>{name}</h1>
+			<dl>
+				<dt>Part of plant</dt>
+				<dd>{part}</dd>
+				<dt>Caffeine content</dt>
+				<dd>{caffeine}</dd>
+				<dt>Age</dt>
+				<dd>{age}</dd>
+			</dl>
+		</section>
+	);
+}
+
+export default function DrinkList() {
+	return (
+		<div>
+			<Drink name="tea" />
+			<Drink name="coffee" />
+		</div>
+	);
+}
+```
+
+Here the information about each drink is grouped together instead of being spread across multiple conditions. This makes it easier to add more drinks in the future.
+
+Another solution would be to remove the condition altogether by moving the information into objects:
+
+```js
+const drinks = {
+	tea: {
+		part: "leaf",
+		caffeine: "15–70 mg/cup",
+		age: "4,000+ years",
+	},
+	coffee: {
+		part: "bean",
+		caffeine: "80–185 mg/cup",
+		age: "1,000+ years",
+	},
+};
+
+function Drink({ name }) {
+	const info = drinks[name];
+	return (
+		<section>
+			<h1>{name}</h1>
+			<dl>
+				<dt>Part of plant</dt>
+				<dd>{info.part}</dd>
+				<dt>Caffeine content</dt>
+				<dd>{info.caffeine}</dd>
+				<dt>Age</dt>
+				<dd>{info.age}</dd>
+			</dl>
+		</section>
+	);
+}
+
+export default function DrinkList() {
+	return (
+		<div>
+			<Drink name="tea" />
+			<Drink name="coffee" />
+		</div>
+	);
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/convert-between-vdom-and-html.md b/docs/src/learn/convert-between-vdom-and-html.md
new file mode 100644
index 000000000..6f3c2dba3
--- /dev/null
+++ b/docs/src/learn/convert-between-vdom-and-html.md
@@ -0,0 +1,3 @@
+---
+title: Convert Between VDOM and HTML 🚧
+---
diff --git a/docs/src/learn/creating-backends.md b/docs/src/learn/creating-backends.md
new file mode 100644
index 000000000..75bf0be65
--- /dev/null
+++ b/docs/src/learn/creating-backends.md
@@ -0,0 +1,3 @@
+---
+title: Creating Backends 🚧
+---
diff --git a/docs/src/learn/creating-html-tags.md b/docs/src/learn/creating-html-tags.md
new file mode 100644
index 000000000..4742655e1
--- /dev/null
+++ b/docs/src/learn/creating-html-tags.md
@@ -0,0 +1,3 @@
+---
+title: Creating HTML Tags 🚧
+---
diff --git a/docs/src/learn/creating-vdom-event-handlers.md b/docs/src/learn/creating-vdom-event-handlers.md
new file mode 100644
index 000000000..f82b1f16d
--- /dev/null
+++ b/docs/src/learn/creating-vdom-event-handlers.md
@@ -0,0 +1,3 @@
+---
+title: Creating VDOM Event Handlers 🚧
+---
diff --git a/docs/src/learn/editor-setup.md b/docs/src/learn/editor-setup.md
new file mode 100644
index 000000000..25ebbed3e
--- /dev/null
+++ b/docs/src/learn/editor-setup.md
@@ -0,0 +1,62 @@
+---
+title: Editor Setup 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+A properly configured editor can make code clearer to read and faster to write. It can even help you catch bugs as you write them! If this is your first time setting up an editor or you're looking to tune up your current editor, we have a few recommendations.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What the most popular editors are
+    -   How to format your code automatically
+
+## Your editor
+
+[VS Code](https://code.visualstudio.com/) is one of the most popular editors in use today. It has a large marketplace of extensions and integrates well with popular services like GitHub. Most of the features listed below can be added to VS Code as extensions as well, making it highly configurable!
+
+Other popular text editors used in the React community include:
+
+-   [WebStorm](https://www.jetbrains.com/webstorm/) is an integrated development environment designed specifically for JavaScript.
+-   [Sublime Text](https://www.sublimetext.com/) has support for JSX and TypeScript, [syntax highlighting](https://stackoverflow.com/a/70960574/458193) and autocomplete built in.
+-   [Vim](https://www.vim.org/) is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is included as "vi" with most UNIX systems and with Apple OS X.
+
+## Recommended text editor features
+
+Some editors come with these features built in, but others might require adding an extension. Check to see what support your editor of choice provides to be sure!
+
+### Linting
+
+Code linters find problems in your code as you write, helping you fix them early. [ESLint](https://eslint.org/) is a popular, open source linter for JavaScript.
+
+-   [Install ESLint with the recommended configuration for React](https://www.npmjs.com/package/eslint-config-react-app) (be sure you have [Node installed!](https://nodejs.org/en/download/current/))
+-   [Integrate ESLint in VSCode with the official extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
+
+**Make sure that you've enabled all the [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) rules for your project.** They are essential and catch the most severe bugs early. The recommended [`eslint-config-react-app`](https://www.npmjs.com/package/eslint-config-react-app) preset already includes them.
+
+### Formatting
+
+The last thing you want to do when sharing your code with another contributor is get into an discussion about [tabs vs spaces](https://www.google.com/search?q=tabs+vs+spaces)! Fortunately, [Prettier](https://prettier.io/) will clean up your code by reformatting it to conform to preset, configurable rules. Run Prettier, and all your tabs will be converted to spaces—and your indentation, quotes, etc will also all be changed to conform to the configuration. In the ideal setup, Prettier will run when you save your file, quickly making these edits for you.
+
+You can install the [Prettier extension in VSCode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) by following these steps:
+
+1. Launch VS Code
+2. Use Quick Open (press Ctrl/Cmd+P)
+3. Paste in `ext install esbenp.prettier-vscode`
+4. Press Enter
+
+#### Formatting on save
+
+Ideally, you should format your code on every save. VS Code has settings for this!
+
+1. In VS Code, press `CTRL/CMD + SHIFT + P`.
+2. Type "settings"
+3. Hit Enter
+4. In the search bar, type "format on save"
+5. Be sure the "format on save" option is ticked!
+
+> If your ESLint preset has formatting rules, they may conflict with Prettier. We recommend disabling all formatting rules in your ESLint preset using [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) so that ESLint is _only_ used for catching logical mistakes. If you want to enforce that files are formatted before a pull request is merged, use [`prettier --check`](https://prettier.io/docs/en/cli.html#--check) for your continuous integration.
diff --git a/docs/src/learn/extracting-state-logic-into-a-reducer.md b/docs/src/learn/extracting-state-logic-into-a-reducer.md
new file mode 100644
index 000000000..d3368f238
--- /dev/null
+++ b/docs/src/learn/extracting-state-logic-into-a-reducer.md
@@ -0,0 +1,2644 @@
+---
+title: Extracting State Logic into a Reducer 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Components with many state updates spread across many event handlers can get overwhelming. For these cases, you can consolidate all the state update logic outside your component in a single function, called a _reducer._
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What a reducer function is
+    -   How to refactor `useState` to `useReducer`
+    -   When to use a reducer
+    -   How to write one well
+
+## Consolidate state logic with a reducer
+
+As your components grow in complexity, it can get harder to see at a glance all the different ways in which a component's state gets updated. For example, the `TaskApp` component below holds an array of `tasks` in state and uses three different event handlers to add, remove, and edit tasks:
+
+```js
+import { useState } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+
+export default function TaskApp() {
+	const [tasks, setTasks] = useState(initialTasks);
+
+	function handleAddTask(text) {
+		setTasks([
+			...tasks,
+			{
+				id: nextId++,
+				text: text,
+				done: false,
+			},
+		]);
+	}
+
+	function handleChangeTask(task) {
+		setTasks(
+			tasks.map((t) => {
+				if (t.id === task.id) {
+					return task;
+				} else {
+					return t;
+				}
+			})
+		);
+	}
+
+	function handleDeleteTask(taskId) {
+		setTasks(tasks.filter((t) => t.id !== taskId));
+	}
+
+	return (
+		<>
+			<h1>Prague itinerary</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Visit Kafka Museum", done: true },
+	{ id: 1, text: "Watch a puppet show", done: false },
+	{ id: 2, text: "Lennon Wall pic", done: false },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button on_click={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+Each of its event handlers calls `setTasks` in order to update the state. As this component grows, so does the amount of state logic sprinkled throughout it. To reduce this complexity and keep all your logic in one easy-to-access place, you can move that state logic into a single function outside your component, **called a "reducer".**
+
+Reducers are a different way to handle state. You can migrate from `useState` to `useReducer` in three steps:
+
+1. **Move** from setting state to dispatching actions.
+2. **Write** a reducer function.
+3. **Use** the reducer from your component.
+
+### Step 1: Move from setting state to dispatching actions
+
+Your event handlers currently specify _what to do_ by setting state:
+
+```js
+function handleAddTask(text) {
+	setTasks([
+		...tasks,
+		{
+			id: nextId++,
+			text: text,
+			done: false,
+		},
+	]);
+}
+
+function handleChangeTask(task) {
+	setTasks(
+		tasks.map((t) => {
+			if (t.id === task.id) {
+				return task;
+			} else {
+				return t;
+			}
+		})
+	);
+}
+
+function handleDeleteTask(taskId) {
+	setTasks(tasks.filter((t) => t.id !== taskId));
+}
+```
+
+Remove all the state setting logic. What you are left with are three event handlers:
+
+-   `handleAddTask(text)` is called when the user presses "Add".
+-   `handleChangeTask(task)` is called when the user toggles a task or presses "Save".
+-   `handleDeleteTask(taskId)` is called when the user presses "Delete".
+
+Managing state with reducers is slightly different from directly setting state. Instead of telling React "what to do" by setting state, you specify "what the user just did" by dispatching "actions" from your event handlers. (The state update logic will live elsewhere!) So instead of "setting `tasks`" via an event handler, you're dispatching an "added/changed/deleted a task" action. This is more descriptive of the user's intent.
+
+```js
+function handleAddTask(text) {
+	dispatch({
+		type: "added",
+		id: nextId++,
+		text: text,
+	});
+}
+
+function handleChangeTask(task) {
+	dispatch({
+		type: "changed",
+		task: task,
+	});
+}
+
+function handleDeleteTask(taskId) {
+	dispatch({
+		type: "deleted",
+		id: taskId,
+	});
+}
+```
+
+The object you pass to `dispatch` is called an "action":
+
+```js
+function handleDeleteTask(taskId) {
+	dispatch(
+		// "action" object:
+		{
+			type: "deleted",
+			id: taskId,
+		}
+	);
+}
+```
+
+It is a regular JavaScript object. You decide what to put in it, but generally it should contain the minimal information about _what happened_. (You will add the `dispatch` function itself in a later step.)
+
+<Note>
+
+An action object can have any shape.
+
+By convention, it is common to give it a string `type` that describes what happened, and pass any additional information in other fields. The `type` is specific to a component, so in this example either `'added'` or `'added_task'` would be fine. Choose a name that says what happened!
+
+```js
+dispatch({
+	// specific to component
+	type: "what_happened",
+	// other fields go here
+});
+```
+
+</Note>
+
+### Step 2: Write a reducer function
+
+A reducer function is where you will put your state logic. It takes two arguments, the current state and the action object, and it returns the next state:
+
+```js
+function yourReducer(state, action) {
+	// return next state for React to set
+}
+```
+
+React will set the state to what you return from the reducer.
+
+To move your state setting logic from your event handlers to a reducer function in this example, you will:
+
+1. Declare the current state (`tasks`) as the first argument.
+2. Declare the `action` object as the second argument.
+3. Return the _next_ state from the reducer (which React will set the state to).
+
+Here is all the state setting logic migrated to a reducer function:
+
+```js
+function tasksReducer(tasks, action) {
+	if (action.type === "added") {
+		return [
+			...tasks,
+			{
+				id: action.id,
+				text: action.text,
+				done: false,
+			},
+		];
+	} else if (action.type === "changed") {
+		return tasks.map((t) => {
+			if (t.id === action.task.id) {
+				return action.task;
+			} else {
+				return t;
+			}
+		});
+	} else if (action.type === "deleted") {
+		return tasks.filter((t) => t.id !== action.id);
+	} else {
+		throw Error("Unknown action: " + action.type);
+	}
+}
+```
+
+Because the reducer function takes state (`tasks`) as an argument, you can **declare it outside of your component.** This decreases the indentation level and can make your code easier to read.
+
+<Note>
+
+The code above uses if/else statements, but it's a convention to use [switch statements](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/switch) inside reducers. The result is the same, but it can be easier to read switch statements at a glance.
+
+We'll be using them throughout the rest of this documentation like so:
+
+```js
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+We recommend wrapping each `case` block into the `{` and `}` curly braces so that variables declared inside of different `case`s don't clash with each other. Also, a `case` should usually end with a `return`. If you forget to `return`, the code will "fall through" to the next `case`, which can lead to mistakes!
+
+If you're not yet comfortable with switch statements, using if/else is completely fine.
+
+</Note>
+
+<DeepDive>
+
+#### Why are reducers called this way?
+
+Although reducers can "reduce" the amount of code inside your component, they are actually named after the [`reduce()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce) operation that you can perform on arrays.
+
+The `reduce()` operation lets you take an array and "accumulate" a single value out of many:
+
+```
+const arr = [1, 2, 3, 4, 5];
+const sum = arr.reduce(
+  (result, number) => result + number
+); // 1 + 2 + 3 + 4 + 5
+```
+
+The function you pass to `reduce` is known as a "reducer". It takes the _result so far_ and the _current item,_ then it returns the _next result._ React reducers are an example of the same idea: they take the _state so far_ and the _action_, and return the _next state._ In this way, they accumulate actions over time into state.
+
+You could even use the `reduce()` method with an `initialState` and an array of `actions` to calculate the final state by passing your reducer function to it:
+
+```js
+import tasksReducer from "./tasksReducer.js";
+
+let initialState = [];
+let actions = [
+	{ type: "added", id: 1, text: "Visit Kafka Museum" },
+	{ type: "added", id: 2, text: "Watch a puppet show" },
+	{ type: "deleted", id: 1 },
+	{ type: "added", id: 3, text: "Lennon Wall pic" },
+];
+
+let finalState = actions.reduce(tasksReducer, initialState);
+
+const output = document.getElementById("output");
+output.textContent = JSON.stringify(finalState, null, 2);
+```
+
+```js
+export default function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```html
+<pre id="output"></pre>
+```
+
+You probably won't need to do this yourself, but this is similar to what React does!
+
+</DeepDive>
+
+### Step 3: Use the reducer from your component
+
+Finally, you need to hook up the `tasksReducer` to your component. Import the `useReducer` Hook from React:
+
+```js
+import { useReducer } from "react";
+```
+
+Then you can replace `useState`:
+
+```js
+const [tasks, setTasks] = useState(initialTasks);
+```
+
+with `useReducer` like so:
+
+```js
+const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+```
+
+The `useReducer` Hook is similar to `useState`—you must pass it an initial state and it returns a stateful value and a way to set state (in this case, the dispatch function). But it's a little different.
+
+The `useReducer` Hook takes two arguments:
+
+1. A reducer function
+2. An initial state
+
+And it returns:
+
+1. A stateful value
+2. A dispatch function (to "dispatch" user actions to the reducer)
+
+Now it's fully wired up! Here, the reducer is declared at the bottom of the component file:
+
+```js
+import { useReducer } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<>
+			<h1>Prague itinerary</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Visit Kafka Museum", done: true },
+	{ id: 1, text: "Watch a puppet show", done: false },
+	{ id: 2, text: "Lennon Wall pic", done: false },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button on_click={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+If you want, you can even move the reducer to a different file:
+
+```js
+import { useReducer } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+import tasksReducer from "./tasksReducer.js";
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<>
+			<h1>Prague itinerary</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Visit Kafka Museum", done: true },
+	{ id: 1, text: "Watch a puppet show", done: false },
+	{ id: 2, text: "Lennon Wall pic", done: false },
+];
+```
+
+```js
+export default function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button on_click={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+Component logic can be easier to read when you separate concerns like this. Now the event handlers only specify _what happened_ by dispatching actions, and the reducer function determines _how the state updates_ in response to them.
+
+## Comparing `useState` and `useReducer`
+
+Reducers are not without downsides! Here's a few ways you can compare them:
+
+-   **Code size:** Generally, with `useState` you have to write less code upfront. With `useReducer`, you have to write both a reducer function _and_ dispatch actions. However, `useReducer` can help cut down on the code if many event handlers modify state in a similar way.
+-   **Readability:** `useState` is very easy to read when the state updates are simple. When they get more complex, they can bloat your component's code and make it difficult to scan. In this case, `useReducer` lets you cleanly separate the _how_ of update logic from the _what happened_ of event handlers.
+-   **Debugging:** When you have a bug with `useState`, it can be difficult to tell _where_ the state was set incorrectly, and _why_. With `useReducer`, you can add a console log into your reducer to see every state update, and _why_ it happened (due to which `action`). If each `action` is correct, you'll know that the mistake is in the reducer logic itself. However, you have to step through more code than with `useState`.
+-   **Testing:** A reducer is a pure function that doesn't depend on your component. This means that you can export and test it separately in isolation. While generally it's best to test components in a more realistic environment, for complex state update logic it can be useful to assert that your reducer returns a particular state for a particular initial state and action.
+-   **Personal preference:** Some people like reducers, others don't. That's okay. It's a matter of preference. You can always convert between `useState` and `useReducer` back and forth: they are equivalent!
+
+We recommend using a reducer if you often encounter bugs due to incorrect state updates in some component, and want to introduce more structure to its code. You don't have to use reducers for everything: feel free to mix and match! You can even `useState` and `useReducer` in the same component.
+
+## Writing reducers well
+
+Keep these two tips in mind when writing reducers:
+
+-   **Reducers must be pure.** Similar to [state updater functions](/learn/queueing-a-series-of-state-updates), reducers run during rendering! (Actions are queued until the next render.) This means that reducers [must be pure](/learn/keeping-components-pure)—same inputs always result in the same output. They should not send requests, schedule timeouts, or perform any side effects (operations that impact things outside the component). They should update [objects](/learn/updating-objects-in-state) and [arrays](/learn/updating-arrays-in-state) without mutations.
+-   **Each action describes a single user interaction, even if that leads to multiple changes in the data.** For example, if a user presses "Reset" on a form with five fields managed by a reducer, it makes more sense to dispatch one `reset_form` action rather than five separate `set_field` actions. If you log every action in a reducer, that log should be clear enough for you to reconstruct what interactions or responses happened in what order. This helps with debugging!
+
+## Writing concise reducers with Immer
+
+Just like with [updating objects](/learn/updating-objects-in-state#write-concise-update-logic-with-immer) and [arrays](/learn/updating-arrays-in-state#write-concise-update-logic-with-immer) in regular state, you can use the Immer library to make reducers more concise. Here, [`useImmerReducer`](https://github.com/immerjs/use-immer#useimmerreducer) lets you mutate the state with `push` or `arr[i] =` assignment:
+
+```js
+import { useImmerReducer } from "use-immer";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+
+function tasksReducer(draft, action) {
+	switch (action.type) {
+		case "added": {
+			draft.push({
+				id: action.id,
+				text: action.text,
+				done: false,
+			});
+			break;
+		}
+		case "changed": {
+			const index = draft.findIndex((t) => t.id === action.task.id);
+			draft[index] = action.task;
+			break;
+		}
+		case "deleted": {
+			return draft.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useImmerReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<>
+			<h1>Prague itinerary</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Visit Kafka Museum", done: true },
+	{ id: 1, text: "Watch a puppet show", done: false },
+	{ id: 2, text: "Lennon Wall pic", done: false },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button on_click={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+Reducers must be pure, so they shouldn't mutate state. But Immer provides you with a special `draft` object which is safe to mutate. Under the hood, Immer will create a copy of your state with the changes you made to the `draft`. This is why reducers managed by `useImmerReducer` can mutate their first argument and don't need to return state.
+
+<Recap>
+
+-   To convert from `useState` to `useReducer`:
+    1. Dispatch actions from event handlers.
+    2. Write a reducer function that returns the next state for a given state and action.
+    3. Replace `useState` with `useReducer`.
+-   Reducers require you to write a bit more code, but they help with debugging and testing.
+-   Reducers must be pure.
+-   Each action describes a single user interaction.
+-   Use Immer if you want to write reducers in a mutating style.
+
+</Recap>
+
+<Challenges>
+
+#### Dispatch actions from event handlers
+
+Currently, the event handlers in `ContactList.js` and `Chat.js` have `// TODO` comments. This is why typing into the input doesn't work, and clicking on the buttons doesn't change the selected recipient.
+
+Replace these two `// TODO`s with the code to `dispatch` the corresponding actions. To see the expected shape and the type of the actions, check the reducer in `messengerReducer.js`. The reducer is already written so you won't need to change it. You only need to dispatch the actions in `ContactList.js` and `Chat.js`.
+
+<Hint>
+
+The `dispatch` function is already available in both of these components because it was passed as a prop. So you need to call `dispatch` with the corresponding action object.
+
+To check the action object shape, you can look at the reducer and see which `action` fields it expects to see. For example, the `changed_selection` case in the reducer looks like this:
+
+```js
+case 'changed_selection': {
+  return {
+    ...state,
+    selectedId: action.contactId
+  };
+}
+```
+
+This means that your action object should have a `type: 'changed_selection'`. You also see the `action.contactId` being used, so you need to include a `contactId` property into your action.
+
+</Hint>
+
+```js
+import { useReducer } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.message;
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	message: "Hello",
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+				message: "",
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				message: action.message,
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								// TODO: dispatch changed_selection
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					// TODO: dispatch edited_message
+					// (Read the input value from e.target.value)
+				}}
+			/>
+			<br />
+			<button>Send to {contact.email}</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+<Solution>
+
+From the reducer code, you can infer that actions need to look like this:
+
+```js
+// When the user presses "Alice"
+dispatch({
+	type: "changed_selection",
+	contactId: 1,
+});
+
+// When user types "Hello!"
+dispatch({
+	type: "edited_message",
+	message: "Hello!",
+});
+```
+
+Here is the example updated to dispatch the corresponding messages:
+
+```js
+import { useReducer } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.message;
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	message: "Hello",
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+				message: "",
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				message: action.message,
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button>Send to {contact.email}</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+</Solution>
+
+#### Clear the input on sending a message
+
+Currently, pressing "Send" doesn't do anything. Add an event handler to the "Send" button that will:
+
+1. Show an `alert` with the recipient's email and the message.
+2. Clear the message input.
+
+```js
+import { useReducer } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.message;
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	message: "Hello",
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+				message: "",
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				message: action.message,
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button>Send to {contact.email}</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+<Solution>
+
+There are a couple of ways you could do it in the "Send" button event handler. One approach is to show an alert and then dispatch an `edited_message` action with an empty `message`:
+
+```js
+import { useReducer } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.message;
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	message: "Hello",
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+				message: "",
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				message: action.message,
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button
+				on_click={() => {
+					alert(`Sending "${message}" to ${contact.email}`);
+					dispatch({
+						type: "edited_message",
+						message: "",
+					});
+				}}
+			>
+				Send to {contact.email}
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+This works and clears the input when you hit "Send".
+
+However, _from the user's perspective_, sending a message is a different action than editing the field. To reflect that, you could instead create a _new_ action called `sent_message`, and handle it separately in the reducer:
+
+```js
+import { useReducer } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.message;
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	message: "Hello",
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+				message: "",
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				message: action.message,
+			};
+		}
+		case "sent_message": {
+			return {
+				...state,
+				message: "",
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button
+				on_click={() => {
+					alert(`Sending "${message}" to ${contact.email}`);
+					dispatch({
+						type: "sent_message",
+					});
+				}}
+			>
+				Send to {contact.email}
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+The resulting behavior is the same. But keep in mind that action types should ideally describe "what the user did" rather than "how you want the state to change". This makes it easier to later add more features.
+
+With either solution, it's important that you **don't** place the `alert` inside a reducer. The reducer should be a pure function--it should only calculate the next state. It should not "do" anything, including displaying messages to the user. That should happen in the event handler. (To help catch mistakes like this, React will call your reducers multiple times in Strict Mode. This is why, if you put an alert in a reducer, it fires twice.)
+
+</Solution>
+
+#### Restore input values when switching between tabs
+
+In this example, switching between different recipients always clears the text input:
+
+```js
+case 'changed_selection': {
+  return {
+    ...state,
+    selectedId: action.contactId,
+    message: '' // Clears the input
+  };
+```
+
+This is because you don't want to share a single message draft between several recipients. But it would be better if your app "remembered" a draft for each contact separately, restoring them when you switch contacts.
+
+Your task is to change the way the state is structured so that you remember a separate message draft _per contact_. You would need to make a few changes to the reducer, the initial state, and the components.
+
+<Hint>
+
+You can structure your state like this:
+
+```js
+export const initialState = {
+	selectedId: 0,
+	messages: {
+		0: "Hello, Taylor", // Draft for contactId = 0
+		1: "Hello, Alice", // Draft for contactId = 1
+	},
+};
+```
+
+The `[key]: value` [computed property](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#computed_property_names) syntax can help you update the `messages` object:
+
+```js
+{
+  ...state.messages,
+  [id]: message
+}
+```
+
+</Hint>
+
+```js
+import { useReducer } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.message;
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	message: "Hello",
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+				message: "",
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				message: action.message,
+			};
+		}
+		case "sent_message": {
+			return {
+				...state,
+				message: "",
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button
+				on_click={() => {
+					alert(`Sending "${message}" to ${contact.email}`);
+					dispatch({
+						type: "sent_message",
+					});
+				}}
+			>
+				Send to {contact.email}
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+<Solution>
+
+You'll need to update the reducer to store and update a separate message draft per contact:
+
+```js
+// When the input is edited
+case 'edited_message': {
+  return {
+    // Keep other state like selection
+    ...state,
+    messages: {
+      // Keep messages for other contacts
+      ...state.messages,
+      // But change the selected contact's message
+      [state.selectedId]: action.message
+    }
+  };
+}
+```
+
+You would also update the `Messenger` component to read the message for the currently selected contact:
+
+```js
+const message = state.messages[state.selectedId];
+```
+
+Here is the complete solution:
+
+```js
+import { useReducer } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.messages[state.selectedId];
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	messages: {
+		0: "Hello, Taylor",
+		1: "Hello, Alice",
+		2: "Hello, Bob",
+	},
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				messages: {
+					...state.messages,
+					[state.selectedId]: action.message,
+				},
+			};
+		}
+		case "sent_message": {
+			return {
+				...state,
+				messages: {
+					...state.messages,
+					[state.selectedId]: "",
+				},
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button
+				on_click={() => {
+					alert(`Sending "${message}" to ${contact.email}`);
+					dispatch({
+						type: "sent_message",
+					});
+				}}
+			>
+				Send to {contact.email}
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+Notably, you didn't need to change any of the event handlers to implement this different behavior. Without a reducer, you would have to change every event handler that updates the state.
+
+</Solution>
+
+#### Implement `useReducer` from scratch
+
+In the earlier examples, you imported the `useReducer` Hook from React. This time, you will implement _the `useReducer` Hook itself!_ Here is a stub to get you started. It shouldn't take more than 10 lines of code.
+
+To test your changes, try typing into the input or select a contact.
+
+<Hint>
+
+Here is a more detailed sketch of the implementation:
+
+```js
+export function useReducer(reducer, initialState) {
+	const [state, setState] = useState(initialState);
+
+	function dispatch(action) {
+		// ???
+	}
+
+	return [state, dispatch];
+}
+```
+
+Recall that a reducer function takes two arguments--the current state and the action object--and it returns the next state. What should your `dispatch` implementation do with it?
+
+</Hint>
+
+```js
+import { useReducer } from "./MyReact.js";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.messages[state.selectedId];
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	messages: {
+		0: "Hello, Taylor",
+		1: "Hello, Alice",
+		2: "Hello, Bob",
+	},
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				messages: {
+					...state.messages,
+					[state.selectedId]: action.message,
+				},
+			};
+		}
+		case "sent_message": {
+			return {
+				...state,
+				messages: {
+					...state.messages,
+					[state.selectedId]: "",
+				},
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+import { useState } from "react";
+
+export function useReducer(reducer, initialState) {
+	const [state, setState] = useState(initialState);
+
+	// ???
+
+	return [state, dispatch];
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button
+				on_click={() => {
+					alert(`Sending "${message}" to ${contact.email}`);
+					dispatch({
+						type: "sent_message",
+					});
+				}}
+			>
+				Send to {contact.email}
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+<Solution>
+
+Dispatching an action calls a reducer with the current state and the action, and stores the result as the next state. This is what it looks like in code:
+
+```js
+import { useReducer } from "./MyReact.js";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+import { initialState, messengerReducer } from "./messengerReducer";
+
+export default function Messenger() {
+	const [state, dispatch] = useReducer(messengerReducer, initialState);
+	const message = state.messages[state.selectedId];
+	const contact = contacts.find((c) => c.id === state.selectedId);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={state.selectedId}
+				dispatch={dispatch}
+			/>
+			<Chat
+				key={contact.id}
+				message={message}
+				contact={contact}
+				dispatch={dispatch}
+			/>
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export const initialState = {
+	selectedId: 0,
+	messages: {
+		0: "Hello, Taylor",
+		1: "Hello, Alice",
+		2: "Hello, Bob",
+	},
+};
+
+export function messengerReducer(state, action) {
+	switch (action.type) {
+		case "changed_selection": {
+			return {
+				...state,
+				selectedId: action.contactId,
+			};
+		}
+		case "edited_message": {
+			return {
+				...state,
+				messages: {
+					...state.messages,
+					[state.selectedId]: action.message,
+				},
+			};
+		}
+		case "sent_message": {
+			return {
+				...state,
+				messages: {
+					...state.messages,
+					[state.selectedId]: "",
+				},
+			};
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+```
+
+```js
+import { useState } from "react";
+
+export function useReducer(reducer, initialState) {
+	const [state, setState] = useState(initialState);
+
+	function dispatch(action) {
+		const nextState = reducer(state, action);
+		setState(nextState);
+	}
+
+	return [state, dispatch];
+}
+```
+
+```js
+export default function ContactList({ contacts, selectedId, dispatch }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								dispatch({
+									type: "changed_selection",
+									contactId: contact.id,
+								});
+							}}
+						>
+							{selectedId === contact.id ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact, message, dispatch }) {
+	return (
+		<section className="chat">
+			<textarea
+				value={message}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => {
+					dispatch({
+						type: "edited_message",
+						message: e.target.value,
+					});
+				}}
+			/>
+			<br />
+			<button
+				on_click={() => {
+					alert(`Sending "${message}" to ${contact.email}`);
+					dispatch({
+						type: "sent_message",
+					});
+				}}
+			>
+				Send to {contact.email}
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+Though it doesn't matter in most cases, a slightly more accurate implementation looks like this:
+
+```js
+function dispatch(action) {
+	setState((s) => reducer(s, action));
+}
+```
+
+This is because the dispatched actions are queued until the next render, [similar to the updater functions.](/learn/queueing-a-series-of-state-updates)
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/get-started.md b/docs/src/learn/get-started.md
new file mode 100644
index 000000000..20e52dd3b
--- /dev/null
+++ b/docs/src/learn/get-started.md
@@ -0,0 +1,303 @@
+---
+title: "Get Started"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Welcome to the ReactPy documentation! This page will give you an introduction to the 80% of React concepts that you will use on a daily basis.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to create and nest components
+    -   How to add markup and styles
+    -   How to display data
+    -   How to render conditions and lists
+    -   How to respond to events and update the screen
+    -   How to share data between components
+
+## Creating and nesting components
+
+React apps are made out of _components_. A component is a piece of the UI (user interface) that has its own logic and appearance. A component can be as small as a button, or as large as an entire page.
+
+React components are Python functions that return markup:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/my_button.py" start="# start" %}
+```
+
+Now that you've declared `my_button`, you can nest it into another component:
+
+```python linenums="0" hl_lines="5"
+{% include "../../examples/python/quick_start/my_app.py" start="# start" %}
+```
+
+Have a look at the result:
+
+=== "app.py"
+
+    ```python
+    {% include "../../examples/python/quick_start/creating_and_nesting_components.py" end="# end" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
+
+<!-- ## Writing markup with JSX
+
+The markup syntax you've seen above is called _JSX_. It is optional, but most React projects use JSX for its convenience. All of the [tools we recommend for local development](/learn/installation) support JSX out of the box.
+
+JSX is stricter than HTML. You have to close tags like `<br />`. Your component also can't return multiple JSX tags. You have to wrap them into a shared parent, like a `<div>...</div>` or an empty `<>...</>` wrapper:
+
+```js
+function AboutPage() {
+	return (
+		<>
+			<h1>About</h1>
+			<p>
+				Hello there.
+				<br />
+				How do you do?
+			</p>
+		</>
+	);
+}
+```
+
+If you have a lot of HTML to port to JSX, you can use an [online converter.](https://transform.tools/html-to-jsx) -->
+
+## Adding styles
+
+In React, you specify a CSS class with `class_name`. It works the same way as the HTML [`class`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class) attribute:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/adding_styles.py" start="# start" %}
+```
+
+Then you write the CSS rules for it in a separate CSS file:
+
+```css linenums="0"
+{% include "../../examples/css/quick_start/adding_styles.css" %}
+```
+
+React does not prescribe how you add CSS files. In the simplest case, you'll add a [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) tag to your HTML. If you use a build tool or web framework, consult its documentation to learn how to add a CSS file to your project.
+
+## Displaying data
+
+<!-- JSX lets you put markup into JavaScript. Curly braces let you "escape back" into JavaScript so that you can embed some variable from your code and display it to the user. For example, this will display `user.name`:
+
+```js
+return <h1>{user.name}</h1>;
+```
+
+You can also "escape into JavaScript" from JSX attributes, but you have to use curly braces _instead of_ quotes. For example, `className="avatar"` passes the `"avatar"` string as the CSS class, but `src={user.imageUrl}` reads the JavaScript `user.imageUrl` variable value, and then passes that value as the `src` attribute:
+
+```js
+return <img className="avatar" src={user.imageUrl} />;
+```
+
+You can put more complex expressions inside the JSX curly braces too, for example, [string concatenation](https://javascript.info/operators#string-concatenation-with-binary): -->
+
+You can fetch data from a variety of sources and directly embed it into your components. You can also use the `style` attribute when your styles depend on JavaScript variables.
+
+=== "app.py"
+
+    ```python
+    {% include "../../examples/python/quick_start/displaying_data.py" end="# end" %}
+    ```
+
+=== "stylesheet.css"
+
+    ```css
+    {% include "../../examples/css/quick_start/displaying_data.css" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
+
+## Conditional rendering
+
+In React, there is no special syntax for writing conditions. Instead, you'll use the same techniques as you use when writing regular Python code. For example, you can use an `if` statement to conditionally include components:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/conditional_rendering.py" start="# start"%}
+```
+
+If you prefer more compact code, you can use the [ternary operator.](https://www.geeksforgeeks.org/ternary-operator-in-python/):
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/conditional_rendering_ternary.py" start="# start"%}
+```
+
+When you don't need the `else` branch, you can also use a shorter [logical `and` syntax](https://www.geeksforgeeks.org/short-circuiting-techniques-python/):
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/conditional_rendering_logical_and.py" start="# start" %}
+```
+
+All of these approaches also work for conditionally specifying attributes. If you're unfamiliar with some of this Python syntax, you can start by always using `if...else`.
+
+## Rendering lists
+
+You will rely on Python features like [`for` loop](https://www.w3schools.com/python/quick_start/python_for_loops.asp) and [list comprehension](https://www.w3schools.com/python/quick_start/python_lists_comprehension.asp) to render lists of components.
+
+For example, let's say you have an array of products:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/rendering_lists_products.py" %}
+```
+
+Inside your component, use the `map()` function to transform an array of products into an array of `<li>` items:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/rendering_lists_list_items.py" start="# start" %}
+```
+
+Notice how `<li>` has a `key` attribute. For each item in a list, you should pass a string or a number that uniquely identifies that item among its siblings. Usually, a key should be coming from your data, such as a database ID. React uses your keys to know what happened if you later insert, delete, or reorder the items.
+
+=== "app.py"
+
+    ```python
+    {% include "../../examples/python/quick_start/rendering_lists.py" end="# end" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
+
+## Responding to events
+
+You can respond to events by declaring _event handler_ functions inside your components:
+
+```python linenums="0"  hl_lines="3-4 7"
+{% include "../../examples/python/quick_start/responding_to_events.py" start="# start" %}
+```
+
+Notice how `"on_click": handle_click` has no parentheses at the end! Do not _call_ the event handler function: you only need to _pass it down_. React will call your event handler when the user clicks the button.
+
+## Updating the screen
+
+Often, you'll want your component to "remember" some information and display it. For example, maybe you want to count the number of times a button is clicked. To do this, add _state_ to your component.
+
+First, import [`use_state`](../reference/use-state.md) from React:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/updating_the_screen_use_state.py" end="# end" %}
+```
+
+Now you can declare a _state variable_ inside your component:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/updating_the_screen_use_state_button.py" start="# start" %}
+```
+
+You’ll get two things from `use_state`: the current state (`count`), and the function that lets you update it (`set_sount`). You can give them any names, but the convention is to write `something, set_something = ...`.
+
+The first time the button is displayed, `count` will be `0` because you passed `0` to `use_state()`. When you want to change state, call `set_count()` and pass the new value to it. Clicking this button will increment the counter:
+
+```python linenums="0" hl_lines="6"
+{% include "../../examples/python/quick_start/updating_the_screen_event.py" start="# start" %}
+```
+
+React will call your component function again. This time, `count` will be `1`. Then it will be `2`. And so on.
+
+If you render the same component multiple times, each will get its own state. Click each button separately:
+
+=== "app.py"
+
+    ```python
+    {% include "../../examples/python/quick_start/updating_the_screen.py"  end="# end" %}
+    ```
+
+=== "stylesheet.css"
+
+    ```css
+    {% include "../../examples/css/quick_start/updating_the_screen.css" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
+
+Notice how each button "remembers" its own `count` state and doesn't affect other buttons.
+
+## Using Hooks
+
+Functions starting with `use` are called _Hooks_. `use_state` is a built-in Hook provided by React. You can find other built-in Hooks in the [API reference.](../reference/use-state.md) You can also write your own Hooks by combining the existing ones.
+
+Hooks are more restrictive than other functions. You can only call Hooks _at the top_ of your components (or other Hooks). If you want to use `useState` in a condition or a loop, extract a new component and put it there.
+
+## Sharing data between components
+
+In the previous example, each `my_button` had its own independent `count`, and when each button was clicked, only the `count` for the button clicked changed:
+
+<!-- TODO: Diagram -->
+
+However, often you'll need components to _share data and always update together_.
+
+To make both `my_button` components display the same `count` and update together, you need to move the state from the individual buttons "upwards" to the closest component containing all of them.
+
+In this example, it is `my_app`.
+
+<!-- TODO: Diagram -->
+
+Now when you click either button, the `count` in `my_app` will change, which will change both of the counts in `my_button`. Here's how you can express this in code.
+
+First, _move the state up_ from `my_button` into `my_app`:
+
+```python linenums="0" hl_lines="3-6 17"
+{% include "../../examples/python/quick_start/sharing_data_between_components_move_state.py" start="# start" %}
+```
+
+Then, _pass the state down_ from `my_app` to each `my_button`, together with the shared click handler. You can pass information to `my_button` using props:
+
+```python linenums="0" hl_lines="10-11"
+{% include "../../examples/python/quick_start/sharing_data_between_components_props.py" start="# start" end="# end" %}
+```
+
+The information you pass down like this is called _props_. Now the `my_app` component contains the `count` state and the `handle_click` event handler, and _passes both of them down as props_ to each of the buttons.
+
+Finally, change `my_button` to _read_ the props you have passed from its parent component:
+
+```python linenums="0"
+{% include "../../examples/python/quick_start/sharing_data_between_components_button.py" start="# start" %}
+```
+
+When you click the button, the `on_click` handler fires. Each button's `on_click` prop was set to the `handle_click` function inside `my_app`, so the code inside of it runs. That code calls `set_count(count + 1)`, incrementing the `count` state variable. The new `count` value is passed as a prop to each button, so they all show the new value. This is called "lifting state up". By moving state up, you've shared it between components.
+
+=== "app.py"
+
+    ```python
+    {% include "../../examples/python/quick_start/sharing_data_between_components.py" end="# end" %}
+    ```
+
+=== "stylesheet.css"
+
+    ```css
+    {% include "../../examples/css/quick_start/sharing_data_between_components.css" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
+
+## Next Steps
+
+By now, you know the basics of how to write React code!
+
+Check out the [Tutorial](./tutorial-tic-tac-toe.md) to put them into practice and build your first mini-app with React.
diff --git a/docs/src/learn/importing-and-exporting-components.md b/docs/src/learn/importing-and-exporting-components.md
new file mode 100644
index 000000000..6e677d51d
--- /dev/null
+++ b/docs/src/learn/importing-and-exporting-components.md
@@ -0,0 +1,382 @@
+---
+title: Importing and Exporting Components 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+The magic of components lies in their reusability: you can create components that are composed of other components. But as you nest more and more components, it often makes sense to start splitting them into different files. This lets you keep your files easy to scan and reuse components in more places.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What a root component file is
+    -   How to import and export a component
+    -   When to use default and named imports and exports
+    -   How to import and export multiple components from one file
+    -   How to split components into multiple files
+
+## The root component file
+
+In [Your First Component](/learn/your-first-component), you made a `Profile` component and a `Gallery` component that renders it:
+
+```js
+function Profile() {
+	return (
+		<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
+	);
+}
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+These currently live in a **root component file,** named `App.js` in this example. In [Create React App](https://create-react-app.dev/), your app lives in `src/App.js`. Depending on your setup, your root component could be in another file, though. If you use a framework with file-based routing, such as Next.js, your root component will be different for every page.
+
+## Exporting and importing a component
+
+What if you want to change the landing screen in the future and put a list of science books there? Or place all the profiles somewhere else? It makes sense to move `Gallery` and `Profile` out of the root component file. This will make them more modular and reusable in other files. You can move a component in three steps:
+
+1. **Make** a new JS file to put the components in.
+2. **Export** your function component from that file (using either [default](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/export#using_the_default_export) or [named](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/export#using_named_exports) exports).
+3. **Import** it in the file where you’ll use the component (using the corresponding technique for importing [default](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/import#importing_defaults) or [named](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/import#import_a_single_export_from_a_module) exports).
+
+Here both `Profile` and `Gallery` have been moved out of `App.js` into a new file called `Gallery.js`. Now you can change `App.js` to import `Gallery` from `Gallery.js`:
+
+```js
+import Gallery from "./Gallery.js";
+
+export default function App() {
+	return <Gallery />;
+}
+```
+
+```js
+function Profile() {
+	return <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" />;
+}
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+Notice how this example is broken down into two component files now:
+
+1. `Gallery.js`:
+    - Defines the `Profile` component which is only used within the same file and is not exported.
+    - Exports the `Gallery` component as a **default export.**
+2. `App.js`:
+    - Imports `Gallery` as a **default import** from `Gallery.js`.
+    - Exports the root `App` component as a **default export.**
+
+<Note>
+
+You may encounter files that leave off the `.js` file extension like so:
+
+```js
+import Gallery from "./Gallery";
+```
+
+Either `'./Gallery.js'` or `'./Gallery'` will work with React, though the former is closer to how [native ES Modules](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Modules) work.
+
+</Note>
+
+<DeepDive>
+
+#### Default vs named exports
+
+There are two primary ways to export values with JavaScript: default exports and named exports. So far, our examples have only used default exports. But you can use one or both of them in the same file. **A file can have no more than one _default_ export, but it can have as many _named_ exports as you like.**
+
+![Default and named exports](/images/docs/illustrations/i_import-export.svg)
+
+How you export your component dictates how you must import it. You will get an error if you try to import a default export the same way you would a named export! This chart can help you keep track:
+
+| Syntax | Export statement | Import statement |
+| --- | --- | --- |
+| Default | `export default function Button() {}` | `import Button from './Button.js';` |
+| Named | `export function Button() {}` | `import { Button } from './Button.js';` |
+
+When you write a _default_ import, you can put any name you want after `import`. For example, you could write `import Banana from './Button.js'` instead and it would still provide you with the same default export. In contrast, with named imports, the name has to match on both sides. That's why they are called _named_ imports!
+
+**People often use default exports if the file exports only one component, and use named exports if it exports multiple components and values.** Regardless of which coding style you prefer, always give meaningful names to your component functions and the files that contain them. Components without names, like `export default () => {}`, are discouraged because they make debugging harder.
+
+</DeepDive>
+
+## Exporting and importing multiple components from the same file
+
+What if you want to show just one `Profile` instead of a gallery? You can export the `Profile` component, too. But `Gallery.js` already has a _default_ export, and you can't have _two_ default exports. You could create a new file with a default export, or you could add a _named_ export for `Profile`. **A file can only have one default export, but it can have numerous named exports!**
+
+<Note>
+
+To reduce the potential confusion between default and named exports, some teams choose to only stick to one style (default or named), or avoid mixing them in a single file. Do what works best for you!
+
+</Note>
+
+First, **export** `Profile` from `Gallery.js` using a named export (no `default` keyword):
+
+```js
+export function Profile() {
+	// ...
+}
+```
+
+Then, **import** `Profile` from `Gallery.js` to `App.js` using a named import (with the curly braces):
+
+```js
+import { Profile } from "./Gallery.js";
+```
+
+Finally, **render** `<Profile />` from the `App` component:
+
+```js
+export default function App() {
+	return <Profile />;
+}
+```
+
+Now `Gallery.js` contains two exports: a default `Gallery` export, and a named `Profile` export. `App.js` imports both of them. Try editing `<Profile />` to `<Gallery />` and back in this example:
+
+```js
+import Gallery from "./Gallery.js";
+import { Profile } from "./Gallery.js";
+
+export default function App() {
+	return <Profile />;
+}
+```
+
+```js
+export function Profile() {
+	return <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" />;
+}
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+Now you're using a mix of default and named exports:
+
+-   `Gallery.js`:
+    -   Exports the `Profile` component as a **named export called `Profile`.**
+    -   Exports the `Gallery` component as a **default export.**
+-   `App.js`:
+    -   Imports `Profile` as a **named import called `Profile`** from `Gallery.js`.
+    -   Imports `Gallery` as a **default import** from `Gallery.js`.
+    -   Exports the root `App` component as a **default export.**
+
+<Recap>
+
+On this page you learned:
+
+-   What a root component file is
+-   How to import and export a component
+-   When and how to use default and named imports and exports
+-   How to export multiple components from the same file
+
+</Recap>
+
+<Challenges>
+
+#### Split the components further
+
+Currently, `Gallery.js` exports both `Profile` and `Gallery`, which is a bit confusing.
+
+Move the `Profile` component to its own `Profile.js`, and then change the `App` component to render both `<Profile />` and `<Gallery />` one after another.
+
+You may use either a default or a named export for `Profile`, but make sure that you use the corresponding import syntax in both `App.js` and `Gallery.js`! You can refer to the table from the deep dive above:
+
+| Syntax | Export statement | Import statement |
+| --- | --- | --- |
+| Default | `export default function Button() {}` | `import Button from './Button.js';` |
+| Named | `export function Button() {}` | `import { Button } from './Button.js';` |
+
+<Hint>
+
+Don't forget to import your components where they are called. Doesn't `Gallery` use `Profile`, too?
+
+</Hint>
+
+```js
+import Gallery from "./Gallery.js";
+import { Profile } from "./Gallery.js";
+
+export default function App() {
+	return (
+		<div>
+			<Profile />
+		</div>
+	);
+}
+```
+
+```js
+// Move me to Profile.js!
+export function Profile() {
+	return <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" />;
+}
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```js
+
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+After you get it working with one kind of exports, make it work with the other kind.
+
+<Solution>
+
+This is the solution with named exports:
+
+```js
+import Gallery from "./Gallery.js";
+import { Profile } from "./Profile.js";
+
+export default function App() {
+	return (
+		<div>
+			<Profile />
+			<Gallery />
+		</div>
+	);
+}
+```
+
+```js
+import { Profile } from "./Profile.js";
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```js
+export function Profile() {
+	return <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" />;
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+This is the solution with default exports:
+
+```js
+import Gallery from "./Gallery.js";
+import Profile from "./Profile.js";
+
+export default function App() {
+	return (
+		<div>
+			<Profile />
+			<Gallery />
+		</div>
+	);
+}
+```
+
+```js
+import Profile from "./Profile.js";
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```js
+export default function Profile() {
+	return <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" />;
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/keeping-components-pure.md b/docs/src/learn/keeping-components-pure.md
new file mode 100644
index 000000000..c1a9bc92d
--- /dev/null
+++ b/docs/src/learn/keeping-components-pure.md
@@ -0,0 +1,815 @@
+---
+title: Keeping Components Pure 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Some JavaScript functions are _pure._ Pure functions only perform a calculation and nothing more. By strictly only writing your components as pure functions, you can avoid an entire class of baffling bugs and unpredictable behavior as your codebase grows. To get these benefits, though, there are a few rules you must follow.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What purity is and how it helps you avoid bugs
+    -   How to keep components pure by keeping changes out of the render phase
+    -   How to use Strict Mode to find mistakes in your components
+
+## Purity: Components as formulas
+
+In computer science (and especially the world of functional programming), [a pure function](https://wikipedia.org/wiki/Pure_function) is a function with the following characteristics:
+
+-   **It minds its own business.** It does not change any objects or variables that existed before it was called.
+-   **Same inputs, same output.** Given the same inputs, a pure function should always return the same result.
+
+You might already be familiar with one example of pure functions: formulas in math.
+
+Consider this math formula: <Math><MathI>y</MathI> = 2<MathI>x</MathI></Math>.
+
+If <Math><MathI>x</MathI> = 2</Math> then <Math><MathI>y</MathI> = 4</Math>. Always.
+
+If <Math><MathI>x</MathI> = 3</Math> then <Math><MathI>y</MathI> = 6</Math>. Always.
+
+If <Math><MathI>x</MathI> = 3</Math>, <MathI>y</MathI> won't sometimes be <Math>9</Math> or <Math>–1</Math> or <Math>2.5</Math> depending on the time of day or the state of the stock market.
+
+If <Math><MathI>y</MathI> = 2<MathI>x</MathI></Math> and <Math><MathI>x</MathI> = 3</Math>, <MathI>y</MathI> will _always_ be <Math>6</Math>.
+
+If we made this into a JavaScript function, it would look like this:
+
+```js
+function double(number) {
+	return 2 * number;
+}
+```
+
+In the above example, `double` is a **pure function.** If you pass it `3`, it will return `6`. Always.
+
+React is designed around this concept. **React assumes that every component you write is a pure function.** This means that React components you write must always return the same JSX given the same inputs:
+
+```js
+function Recipe({ drinkers }) {
+	return (
+		<ol>
+			<li>Boil {drinkers} cups of water.</li>
+			<li>
+				Add {drinkers} spoons of tea and {0.5 * drinkers} spoons of
+				spice.
+			</li>
+			<li>
+				Add {0.5 * drinkers} cups of milk to boil and sugar to taste.
+			</li>
+		</ol>
+	);
+}
+
+export default function App() {
+	return (
+		<section>
+			<h1>Spiced Chai Recipe</h1>
+			<h2>For two</h2>
+			<Recipe drinkers={2} />
+			<h2>For a gathering</h2>
+			<Recipe drinkers={4} />
+		</section>
+	);
+}
+```
+
+When you pass `drinkers={2}` to `Recipe`, it will return JSX containing `2 cups of water`. Always.
+
+If you pass `drinkers={4}`, it will return JSX containing `4 cups of water`. Always.
+
+Just like a math formula.
+
+You could think of your components as recipes: if you follow them and don't introduce new ingredients during the cooking process, you will get the same dish every time. That "dish" is the JSX that the component serves to React to [render.](/learn/render-and-commit)
+
+<Illustration src="/images/docs/illustrations/i_puritea-recipe.png" alt="A tea recipe for x people: take x cups of water, add x spoons of tea and 0.5x spoons of spices, and 0.5x cups of milk" />
+
+## Side Effects: (un)intended consequences
+
+React's rendering process must always be pure. Components should only _return_ their JSX, and not _change_ any objects or variables that existed before rendering—that would make them impure!
+
+Here is a component that breaks this rule:
+
+```js
+let guest = 0;
+
+function Cup() {
+	// Bad: changing a preexisting variable!
+	guest = guest + 1;
+	return <h2>Tea cup for guest #{guest}</h2>;
+}
+
+export default function TeaSet() {
+	return (
+		<>
+			<Cup />
+			<Cup />
+			<Cup />
+		</>
+	);
+}
+```
+
+This component is reading and writing a `guest` variable declared outside of it. This means that **calling this component multiple times will produce different JSX!** And what's more, if _other_ components read `guest`, they will produce different JSX, too, depending on when they were rendered! That's not predictable.
+
+Going back to our formula <Math><MathI>y</MathI> = 2<MathI>x</MathI></Math>, now even if <Math><MathI>x</MathI> = 2</Math>, we cannot trust that <Math><MathI>y</MathI> = 4</Math>. Our tests could fail, our users would be baffled, planes would fall out of the sky—you can see how this would lead to confusing bugs!
+
+You can fix this component by [passing `guest` as a prop instead](/learn/passing-props-to-a-component):
+
+```js
+function Cup({ guest }) {
+	return <h2>Tea cup for guest #{guest}</h2>;
+}
+
+export default function TeaSet() {
+	return (
+		<>
+			<Cup guest={1} />
+			<Cup guest={2} />
+			<Cup guest={3} />
+		</>
+	);
+}
+```
+
+Now your component is pure, as the JSX it returns only depends on the `guest` prop.
+
+In general, you should not expect your components to be rendered in any particular order. It doesn't matter if you call <Math><MathI>y</MathI> = 2<MathI>x</MathI></Math> before or after <Math><MathI>y</MathI> = 5<MathI>x</MathI></Math>: both formulas will resolve independently of each other. In the same way, each component should only "think for itself", and not attempt to coordinate with or depend upon others during rendering. Rendering is like a school exam: each component should calculate JSX on their own!
+
+<DeepDive>
+
+#### Detecting impure calculations with StrictMode
+
+Although you might not have used them all yet, in React there are three kinds of inputs that you can read while rendering: [props](/learn/passing-props-to-a-component), [state](/learn/state-a-components-memory), and [context.](/learn/passing-data-deeply-with-context) You should always treat these inputs as read-only.
+
+When you want to _change_ something in response to user input, you should [set state](/learn/state-a-components-memory) instead of writing to a variable. You should never change preexisting variables or objects while your component is rendering.
+
+React offers a "Strict Mode" in which it calls each component's function twice during development. **By calling the component functions twice, Strict Mode helps find components that break these rules.**
+
+Notice how the original example displayed "Guest #2", "Guest #4", and "Guest #6" instead of "Guest #1", "Guest #2", and "Guest #3". The original function was impure, so calling it twice broke it. But the fixed pure version works even if the function is called twice every time. **Pure functions only calculate, so calling them twice won't change anything**--just like calling `double(2)` twice doesn't change what's returned, and solving <Math><MathI>y</MathI> = 2<MathI>x</MathI></Math> twice doesn't change what <MathI>y</MathI> is. Same inputs, same outputs. Always.
+
+Strict Mode has no effect in production, so it won't slow down the app for your users. To opt into Strict Mode, you can wrap your root component into `<React.StrictMode>`. Some frameworks do this by default.
+
+</DeepDive>
+
+### Local mutation: Your component's little secret
+
+In the above example, the problem was that the component changed a _preexisting_ variable while rendering. This is often called a **"mutation"** to make it sound a bit scarier. Pure functions don't mutate variables outside of the function's scope or objects that were created before the call—that makes them impure!
+
+However, **it's completely fine to change variables and objects that you've _just_ created while rendering.** In this example, you create an `[]` array, assign it to a `cups` variable, and then `push` a dozen cups into it:
+
+```js
+function Cup({ guest }) {
+	return <h2>Tea cup for guest #{guest}</h2>;
+}
+
+export default function TeaGathering() {
+	let cups = [];
+	for (let i = 1; i <= 12; i++) {
+		cups.push(<Cup key={i} guest={i} />);
+	}
+	return cups;
+}
+```
+
+If the `cups` variable or the `[]` array were created outside the `TeaGathering` function, this would be a huge problem! You would be changing a _preexisting_ object by pushing items into that array.
+
+However, it's fine because you've created them _during the same render_, inside `TeaGathering`. No code outside of `TeaGathering` will ever know that this happened. This is called **"local mutation"**—it's like your component's little secret.
+
+## Where you _can_ cause side effects
+
+While functional programming relies heavily on purity, at some point, somewhere, _something_ has to change. That's kind of the point of programming! These changes—updating the screen, starting an animation, changing the data—are called **side effects.** They're things that happen _"on the side"_, not during rendering.
+
+In React, **side effects usually belong inside [event handlers.](/learn/responding-to-events)** Event handlers are functions that React runs when you perform some action—for example, when you click a button. Even though event handlers are defined _inside_ your component, they don't run _during_ rendering! **So event handlers don't need to be pure.**
+
+If you've exhausted all other options and can't find the right event handler for your side effect, you can still attach it to your returned JSX with a [`useEffect`](/reference/react/useEffect) call in your component. This tells React to execute it later, after rendering, when side effects are allowed. **However, this approach should be your last resort.**
+
+When possible, try to express your logic with rendering alone. You'll be surprised how far this can take you!
+
+<DeepDive>
+
+#### Why does React care about purity?
+
+Writing pure functions takes some habit and discipline. But it also unlocks marvelous opportunities:
+
+-   Your components could run in a different environment—for example, on the server! Since they return the same result for the same inputs, one component can serve many user requests.
+-   You can improve performance by [skipping rendering](/reference/react/memo) components whose inputs have not changed. This is safe because pure functions always return the same results, so they are safe to cache.
+-   If some data changes in the middle of rendering a deep component tree, React can restart rendering without wasting time to finish the outdated render. Purity makes it safe to stop calculating at any time.
+
+Every new React feature we're building takes advantage of purity. From data fetching to animations to performance, keeping components pure unlocks the power of the React paradigm.
+
+</DeepDive>
+
+<Recap>
+
+-   A component must be pure, meaning:
+    -   **It minds its own business.** It should not change any objects or variables that existed before rendering.
+    -   **Same inputs, same output.** Given the same inputs, a component should always return the same JSX.
+-   Rendering can happen at any time, so components should not depend on each others' rendering sequence.
+-   You should not mutate any of the inputs that your components use for rendering. That includes props, state, and context. To update the screen, ["set" state](/learn/state-a-components-memory) instead of mutating preexisting objects.
+-   Strive to express your component's logic in the JSX you return. When you need to "change things", you'll usually want to do it in an event handler. As a last resort, you can `useEffect`.
+-   Writing pure functions takes a bit of practice, but it unlocks the power of React's paradigm.
+
+</Recap>
+
+<Challenges>
+
+#### Fix a broken clock
+
+This component tries to set the `<h1>`'s CSS class to `"night"` during the time from midnight to six hours in the morning, and `"day"` at all other times. However, it doesn't work. Can you fix this component?
+
+You can verify whether your solution works by temporarily changing the computer's timezone. When the current time is between midnight and six in the morning, the clock should have inverted colors!
+
+<Hint>
+
+Rendering is a _calculation_, it shouldn't try to "do" things. Can you express the same idea differently?
+
+</Hint>
+
+```js
+export default function Clock({ time }) {
+	let hours = time.getHours();
+	if (hours >= 0 && hours <= 6) {
+		document.getElementById("time").className = "night";
+	} else {
+		document.getElementById("time").className = "day";
+	}
+	return <h1 id="time">{time.toLocaleTimeString()}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import Clock from "./Clock.js";
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+
+export default function App() {
+	const time = useTime();
+	return <Clock time={time} />;
+}
+```
+
+```css
+body > * {
+	width: 100%;
+	height: 100%;
+}
+.day {
+	background: #fff;
+	color: #222;
+}
+.night {
+	background: #222;
+	color: #fff;
+}
+```
+
+<Solution>
+
+You can fix this component by calculating the `className` and including it in the render output:
+
+```js
+export default function Clock({ time }) {
+	let hours = time.getHours();
+	let className;
+	if (hours >= 0 && hours <= 6) {
+		className = "night";
+	} else {
+		className = "day";
+	}
+	return <h1 className={className}>{time.toLocaleTimeString()}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import Clock from "./Clock.js";
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+
+export default function App() {
+	const time = useTime();
+	return <Clock time={time} />;
+}
+```
+
+```css
+body > * {
+	width: 100%;
+	height: 100%;
+}
+.day {
+	background: #fff;
+	color: #222;
+}
+.night {
+	background: #222;
+	color: #fff;
+}
+```
+
+In this example, the side effect (modifying the DOM) was not necessary at all. You only needed to return JSX.
+
+</Solution>
+
+#### Fix a broken profile
+
+Two `Profile` components are rendered side by side with different data. Press "Collapse" on the first profile, and then "Expand" it. You'll notice that both profiles now show the same person. This is a bug.
+
+Find the cause of the bug and fix it.
+
+<Hint>
+
+The buggy code is in `Profile.js`. Make sure you read it all from top to bottom!
+
+</Hint>
+
+```js
+import Panel from "./Panel.js";
+import { getImageUrl } from "./utils.js";
+
+let currentPerson;
+
+export default function Profile({ person }) {
+	currentPerson = person;
+	return (
+		<Panel>
+			<Header />
+			<Avatar />
+		</Panel>
+	);
+}
+
+function Header() {
+	return <h1>{currentPerson.name}</h1>;
+}
+
+function Avatar() {
+	return (
+		<img
+			className="avatar"
+			src={getImageUrl(currentPerson)}
+			alt={currentPerson.name}
+			width={50}
+			height={50}
+		/>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Panel({ children }) {
+	const [open, setOpen] = useState(true);
+	return (
+		<section className="panel">
+			<button on_click={() => setOpen(!open)}>
+				{open ? "Collapse" : "Expand"}
+			</button>
+			{open && children}
+		</section>
+	);
+}
+```
+
+```js
+import Profile from "./Profile.js";
+
+export default function App() {
+	return (
+		<>
+			<Profile
+				person={{
+					imageId: "lrWQx8l",
+					name: "Subrahmanyan Chandrasekhar",
+				}}
+			/>
+			<Profile
+				person={{
+					imageId: "MK3eW3A",
+					name: "Creola Katherine Johnson",
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size = "s") {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 5px;
+	border-radius: 50%;
+}
+.panel {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	margin-top: 20px;
+	padding: 10px;
+	width: 200px;
+}
+h1 {
+	margin: 5px;
+	font-size: 18px;
+}
+```
+
+<Solution>
+
+The problem is that the `Profile` component writes to a preexisting variable called `currentPerson`, and the `Header` and `Avatar` components read from it. This makes _all three of them_ impure and difficult to predict.
+
+To fix the bug, remove the `currentPerson` variable. Instead, pass all information from `Profile` to `Header` and `Avatar` via props. You'll need to add a `person` prop to both components and pass it all the way down.
+
+```js
+import Panel from "./Panel.js";
+import { getImageUrl } from "./utils.js";
+
+export default function Profile({ person }) {
+	return (
+		<Panel>
+			<Header person={person} />
+			<Avatar person={person} />
+		</Panel>
+	);
+}
+
+function Header({ person }) {
+	return <h1>{person.name}</h1>;
+}
+
+function Avatar({ person }) {
+	return (
+		<img
+			className="avatar"
+			src={getImageUrl(person)}
+			alt={person.name}
+			width={50}
+			height={50}
+		/>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Panel({ children }) {
+	const [open, setOpen] = useState(true);
+	return (
+		<section className="panel">
+			<button on_click={() => setOpen(!open)}>
+				{open ? "Collapse" : "Expand"}
+			</button>
+			{open && children}
+		</section>
+	);
+}
+```
+
+```js
+import Profile from "./Profile.js";
+
+export default function App() {
+	return (
+		<>
+			<Profile
+				person={{
+					imageId: "lrWQx8l",
+					name: "Subrahmanyan Chandrasekhar",
+				}}
+			/>
+			<Profile
+				person={{
+					imageId: "MK3eW3A",
+					name: "Creola Katherine Johnson",
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size = "s") {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 5px;
+	border-radius: 50%;
+}
+.panel {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	margin-top: 20px;
+	padding: 10px;
+	width: 200px;
+}
+h1 {
+	margin: 5px;
+	font-size: 18px;
+}
+```
+
+Remember that React does not guarantee that component functions will execute in any particular order, so you can't communicate between them by setting variables. All communication must happen through props.
+
+</Solution>
+
+#### Fix a broken story tray
+
+The CEO of your company is asking you to add "stories" to your online clock app, and you can't say no. You've written a `StoryTray` component that accepts a list of `stories`, followed by a "Create Story" placeholder.
+
+You implemented the "Create Story" placeholder by pushing one more fake story at the end of the `stories` array that you receive as a prop. But for some reason, "Create Story" appears more than once. Fix the issue.
+
+```js
+export default function StoryTray({ stories }) {
+	stories.push({
+		id: "create",
+		label: "Create Story",
+	});
+
+	return (
+		<ul>
+			{stories.map((story) => (
+				<li key={story.id}>{story.label}</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import StoryTray from "./StoryTray.js";
+
+let initialStories = [
+	{ id: 0, label: "Ankit's Story" },
+	{ id: 1, label: "Taylor's Story" },
+];
+
+export default function App() {
+	let [stories, setStories] = useState([...initialStories]);
+	let time = useTime();
+
+	// HACK: Prevent the memory from growing forever while you read docs.
+	// We're breaking our own rules here.
+	if (stories.length > 100) {
+		stories.length = 100;
+	}
+
+	return (
+		<div
+			style={{
+				width: "100%",
+				height: "100%",
+				textAlign: "center",
+			}}
+		>
+			<h2>It is {time.toLocaleTimeString()} now.</h2>
+			<StoryTray stories={stories} />
+		</div>
+	);
+}
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+```
+
+```css
+ul {
+	margin: 0;
+	list-style-type: none;
+}
+
+li {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	float: left;
+	margin: 5px;
+	margin-bottom: 20px;
+	padding: 5px;
+	width: 70px;
+	height: 100px;
+}
+```
+
+```js
+{
+  "hardReloadOnChange": true
+}
+```
+
+<Solution>
+
+Notice how whenever the clock updates, "Create Story" is added _twice_. This serves as a hint that we have a mutation during rendering--Strict Mode calls components twice to make these issues more noticeable.
+
+`StoryTray` function is not pure. By calling `push` on the received `stories` array (a prop!), it is mutating an object that was created _before_ `StoryTray` started rendering. This makes it buggy and very difficult to predict.
+
+The simplest fix is to not touch the array at all, and render "Create Story" separately:
+
+```js
+export default function StoryTray({ stories }) {
+	return (
+		<ul>
+			{stories.map((story) => (
+				<li key={story.id}>{story.label}</li>
+			))}
+			<li>Create Story</li>
+		</ul>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import StoryTray from "./StoryTray.js";
+
+let initialStories = [
+	{ id: 0, label: "Ankit's Story" },
+	{ id: 1, label: "Taylor's Story" },
+];
+
+export default function App() {
+	let [stories, setStories] = useState([...initialStories]);
+	let time = useTime();
+
+	// HACK: Prevent the memory from growing forever while you read docs.
+	// We're breaking our own rules here.
+	if (stories.length > 100) {
+		stories.length = 100;
+	}
+
+	return (
+		<div
+			style={{
+				width: "100%",
+				height: "100%",
+				textAlign: "center",
+			}}
+		>
+			<h2>It is {time.toLocaleTimeString()} now.</h2>
+			<StoryTray stories={stories} />
+		</div>
+	);
+}
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+```
+
+```css
+ul {
+	margin: 0;
+	list-style-type: none;
+}
+
+li {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	float: left;
+	margin: 5px;
+	margin-bottom: 20px;
+	padding: 5px;
+	width: 70px;
+	height: 100px;
+}
+```
+
+Alternatively, you could create a _new_ array (by copying the existing one) before you push an item into it:
+
+```js
+export default function StoryTray({ stories }) {
+	// Copy the array!
+	let storiesToDisplay = stories.slice();
+
+	// Does not affect the original array:
+	storiesToDisplay.push({
+		id: "create",
+		label: "Create Story",
+	});
+
+	return (
+		<ul>
+			{storiesToDisplay.map((story) => (
+				<li key={story.id}>{story.label}</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import StoryTray from "./StoryTray.js";
+
+let initialStories = [
+	{ id: 0, label: "Ankit's Story" },
+	{ id: 1, label: "Taylor's Story" },
+];
+
+export default function App() {
+	let [stories, setStories] = useState([...initialStories]);
+	let time = useTime();
+
+	// HACK: Prevent the memory from growing forever while you read docs.
+	// We're breaking our own rules here.
+	if (stories.length > 100) {
+		stories.length = 100;
+	}
+
+	return (
+		<div
+			style={{
+				width: "100%",
+				height: "100%",
+				textAlign: "center",
+			}}
+		>
+			<h2>It is {time.toLocaleTimeString()} now.</h2>
+			<StoryTray stories={stories} />
+		</div>
+	);
+}
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+```
+
+```css
+ul {
+	margin: 0;
+	list-style-type: none;
+}
+
+li {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	float: left;
+	margin: 5px;
+	margin-bottom: 20px;
+	padding: 5px;
+	width: 70px;
+	height: 100px;
+}
+```
+
+This keeps your mutation local and your rendering function pure. However, you still need to be careful: for example, if you tried to change any of the array's existing items, you'd have to clone those items too.
+
+It is useful to remember which operations on arrays mutate them, and which don't. For example, `push`, `pop`, `reverse`, and `sort` will mutate the original array, but `slice`, `filter`, and `map` will create a new one.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/lifecycle-of-reactive-effects.md b/docs/src/learn/lifecycle-of-reactive-effects.md
new file mode 100644
index 000000000..705158615
--- /dev/null
+++ b/docs/src/learn/lifecycle-of-reactive-effects.md
@@ -0,0 +1,2252 @@
+---
+title: "Lifecycle of Reactive Effects 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Effects have a different lifecycle from components. Components may mount, update, or unmount. An Effect can only do two things: to start synchronizing something, and later to stop synchronizing it. This cycle can happen multiple times if your Effect depends on props and state that change over time. React provides a linter rule to check that you've specified your Effect's dependencies correctly. This keeps your Effect synchronized to the latest props and state.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How an Effect's lifecycle is different from a component's lifecycle
+    -   How to think about each individual Effect in isolation
+    -   When your Effect needs to re-synchronize, and why
+    -   How your Effect's dependencies are determined
+    -   What it means for a value to be reactive
+    -   What an empty dependency array means
+    -   How React verifies your dependencies are correct with a linter
+    -   What to do when you disagree with the linter
+
+## The lifecycle of an Effect
+
+Every React component goes through the same lifecycle:
+
+-   A component _mounts_ when it's added to the screen.
+-   A component _updates_ when it receives new props or state, usually in response to an interaction.
+-   A component _unmounts_ when it's removed from the screen.
+
+**It's a good way to think about components, but _not_ about Effects.** Instead, try to think about each Effect independently from your component's lifecycle. An Effect describes how to [synchronize an external system](/learn/synchronizing-with-effects) to the current props and state. As your code changes, synchronization will need to happen more or less often.
+
+To illustrate this point, consider this Effect connecting your component to a chat server:
+
+```js
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId]);
+	// ...
+}
+```
+
+Your Effect's body specifies how to **start synchronizing:**
+
+```js
+// ...
+const connection = createConnection(serverUrl, roomId);
+connection.connect();
+return () => {
+	connection.disconnect();
+};
+// ...
+```
+
+The cleanup function returned by your Effect specifies how to **stop synchronizing:**
+
+```js
+// ...
+const connection = createConnection(serverUrl, roomId);
+connection.connect();
+return () => {
+	connection.disconnect();
+};
+// ...
+```
+
+Intuitively, you might think that React would **start synchronizing** when your component mounts and **stop synchronizing** when your component unmounts. However, this is not the end of the story! Sometimes, it may also be necessary to **start and stop synchronizing multiple times** while the component remains mounted.
+
+Let's look at _why_ this is necessary, _when_ it happens, and _how_ you can control this behavior.
+
+<Note>
+
+Some Effects don't return a cleanup function at all. [More often than not,](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development) you'll want to return one--but if you don't, React will behave as if you returned an empty cleanup function.
+
+</Note>
+
+### Why synchronization may need to happen more than once
+
+Imagine this `ChatRoom` component receives a `roomId` prop that the user picks in a dropdown. Let's say that initially the user picks the `"general"` room as the `roomId`. Your app displays the `"general"` chat room:
+
+```js
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId /* "general" */ }) {
+	// ...
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+After the UI is displayed, React will run your Effect to **start synchronizing.** It connects to the `"general"` room:
+
+```js
+function ChatRoom({ roomId /* "general" */ }) {
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId); // Connects to the "general" room
+    connection.connect();
+    return () => {
+      connection.disconnect(); // Disconnects from the "general" room
+    };
+  }, [roomId]);
+  // ...
+```
+
+So far, so good.
+
+Later, the user picks a different room in the dropdown (for example, `"travel"`). First, React will update the UI:
+
+```js
+function ChatRoom({ roomId /* "travel" */ }) {
+	// ...
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+Think about what should happen next. The user sees that `"travel"` is the selected chat room in the UI. However, the Effect that ran the last time is still connected to the `"general"` room. **The `roomId` prop has changed, so what your Effect did back then (connecting to the `"general"` room) no longer matches the UI.**
+
+At this point, you want React to do two things:
+
+1. Stop synchronizing with the old `roomId` (disconnect from the `"general"` room)
+2. Start synchronizing with the new `roomId` (connect to the `"travel"` room)
+
+**Luckily, you've already taught React how to do both of these things!** Your Effect's body specifies how to start synchronizing, and your cleanup function specifies how to stop synchronizing. All that React needs to do now is to call them in the correct order and with the correct props and state. Let's see how exactly that happens.
+
+### How React re-synchronizes your Effect
+
+Recall that your `ChatRoom` component has received a new value for its `roomId` prop. It used to be `"general"`, and now it is `"travel"`. React needs to re-synchronize your Effect to re-connect you to a different room.
+
+To **stop synchronizing,** React will call the cleanup function that your Effect returned after connecting to the `"general"` room. Since `roomId` was `"general"`, the cleanup function disconnects from the `"general"` room:
+
+```js
+function ChatRoom({ roomId /* "general" */ }) {
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId); // Connects to the "general" room
+    connection.connect();
+    return () => {
+      connection.disconnect(); // Disconnects from the "general" room
+    };
+    // ...
+```
+
+Then React will run the Effect that you've provided during this render. This time, `roomId` is `"travel"` so it will **start synchronizing** to the `"travel"` chat room (until its cleanup function is eventually called too):
+
+```js
+function ChatRoom({ roomId /* "travel" */ }) {
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId); // Connects to the "travel" room
+    connection.connect();
+    // ...
+```
+
+Thanks to this, you're now connected to the same room that the user chose in the UI. Disaster averted!
+
+Every time after your component re-renders with a different `roomId`, your Effect will re-synchronize. For example, let's say the user changes `roomId` from `"travel"` to `"music"`. React will again **stop synchronizing** your Effect by calling its cleanup function (disconnecting you from the `"travel"` room). Then it will **start synchronizing** again by running its body with the new `roomId` prop (connecting you to the `"music"` room).
+
+Finally, when the user goes to a different screen, `ChatRoom` unmounts. Now there is no need to stay connected at all. React will **stop synchronizing** your Effect one last time and disconnect you from the `"music"` chat room.
+
+### Thinking from the Effect's perspective
+
+Let's recap everything that's happened from the `ChatRoom` component's perspective:
+
+1. `ChatRoom` mounted with `roomId` set to `"general"`
+1. `ChatRoom` updated with `roomId` set to `"travel"`
+1. `ChatRoom` updated with `roomId` set to `"music"`
+1. `ChatRoom` unmounted
+
+During each of these points in the component's lifecycle, your Effect did different things:
+
+1. Your Effect connected to the `"general"` room
+1. Your Effect disconnected from the `"general"` room and connected to the `"travel"` room
+1. Your Effect disconnected from the `"travel"` room and connected to the `"music"` room
+1. Your Effect disconnected from the `"music"` room
+
+Now let's think about what happened from the perspective of the Effect itself:
+
+```js
+useEffect(() => {
+	// Your Effect connected to the room specified with roomId...
+	const connection = createConnection(serverUrl, roomId);
+	connection.connect();
+	return () => {
+		// ...until it disconnected
+		connection.disconnect();
+	};
+}, [roomId]);
+```
+
+This code's structure might inspire you to see what happened as a sequence of non-overlapping time periods:
+
+1. Your Effect connected to the `"general"` room (until it disconnected)
+1. Your Effect connected to the `"travel"` room (until it disconnected)
+1. Your Effect connected to the `"music"` room (until it disconnected)
+
+Previously, you were thinking from the component's perspective. When you looked from the component's perspective, it was tempting to think of Effects as "callbacks" or "lifecycle events" that fire at a specific time like "after a render" or "before unmount". This way of thinking gets complicated very fast, so it's best to avoid.
+
+**Instead, always focus on a single start/stop cycle at a time. It shouldn't matter whether a component is mounting, updating, or unmounting. All you need to do is to describe how to start synchronization and how to stop it. If you do it well, your Effect will be resilient to being started and stopped as many times as it's needed.**
+
+This might remind you how you don't think whether a component is mounting or updating when you write the rendering logic that creates JSX. You describe what should be on the screen, and React [figures out the rest.](/learn/reacting-to-input-with-state)
+
+### How React verifies that your Effect can re-synchronize
+
+Here is a live example that you can play with. Press "Open chat" to mount the `ChatRoom` component:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Notice that when the component mounts for the first time, you see three logs:
+
+1. `✅ Connecting to "general" room at https://localhost:1234...` _(development-only)_
+1. `❌ Disconnected from "general" room at https://localhost:1234.` _(development-only)_
+1. `✅ Connecting to "general" room at https://localhost:1234...`
+
+The first two logs are development-only. In development, React always remounts each component once.
+
+**React verifies that your Effect can re-synchronize by forcing it to do that immediately in development.** This might remind you of opening a door and closing it an extra time to check if the door lock works. React starts and stops your Effect one extra time in development to check [you've implemented its cleanup well.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+The main reason your Effect will re-synchronize in practice is if some data it uses has changed. In the sandbox above, change the selected chat room. Notice how, when the `roomId` changes, your Effect re-synchronizes.
+
+However, there are also more unusual cases in which re-synchronization is necessary. For example, try editing the `serverUrl` in the sandbox above while the chat is open. Notice how the Effect re-synchronizes in response to your edits to the code. In the future, React may add more features that rely on re-synchronization.
+
+### How React knows that it needs to re-synchronize the Effect
+
+You might be wondering how React knew that your Effect needed to re-synchronize after `roomId` changes. It's because _you told React_ that its code depends on `roomId` by including it in the [list of dependencies:](/learn/synchronizing-with-effects#step-2-specify-the-effect-dependencies)
+
+```js
+function ChatRoom({ roomId }) { // The roomId prop may change over time
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId); // This Effect reads roomId
+    connection.connect();
+    return () => {
+      connection.disconnect();
+    };
+  }, [roomId]); // So you tell React that this Effect "depends on" roomId
+  // ...
+```
+
+Here's how this works:
+
+1. You knew `roomId` is a prop, which means it can change over time.
+2. You knew that your Effect reads `roomId` (so its logic depends on a value that may change later).
+3. This is why you specified it as your Effect's dependency (so that it re-synchronizes when `roomId` changes).
+
+Every time after your component re-renders, React will look at the array of dependencies that you have passed. If any of the values in the array is different from the value at the same spot that you passed during the previous render, React will re-synchronize your Effect.
+
+For example, if you passed `["general"]` during the initial render, and later you passed `["travel"]` during the next render, React will compare `"general"` and `"travel"`. These are different values (compared with [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)), so React will re-synchronize your Effect. On the other hand, if your component re-renders but `roomId` has not changed, your Effect will remain connected to the same room.
+
+### Each Effect represents a separate synchronization process
+
+Resist adding unrelated logic to your Effect only because this logic needs to run at the same time as an Effect you already wrote. For example, let's say you want to send an analytics event when the user visits the room. You already have an Effect that depends on `roomId`, so you might feel tempted to add the analytics call there:
+
+```js
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		logVisit(roomId);
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId]);
+	// ...
+}
+```
+
+But imagine you later add another dependency to this Effect that needs to re-establish the connection. If this Effect re-synchronizes, it will also call `logVisit(roomId)` for the same room, which you did not intend. Logging the visit **is a separate process** from connecting. Write them as two separate Effects:
+
+```js
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		logVisit(roomId);
+	}, [roomId]);
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		// ...
+	}, [roomId]);
+	// ...
+}
+```
+
+**Each Effect in your code should represent a separate and independent synchronization process.**
+
+In the above example, deleting one Effect wouldn’t break the other Effect's logic. This is a good indication that they synchronize different things, and so it made sense to split them up. On the other hand, if you split up a cohesive piece of logic into separate Effects, the code may look "cleaner" but will be [more difficult to maintain.](/learn/you-might-not-need-an-effect#chains-of-computations) This is why you should think whether the processes are same or separate, not whether the code looks cleaner.
+
+## Effects "react" to reactive values
+
+Your Effect reads two variables (`serverUrl` and `roomId`), but you only specified `roomId` as a dependency:
+
+```js
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId]);
+	// ...
+}
+```
+
+Why doesn't `serverUrl` need to be a dependency?
+
+This is because the `serverUrl` never changes due to a re-render. It's always the same no matter how many times the component re-renders and why. Since `serverUrl` never changes, it wouldn't make sense to specify it as a dependency. After all, dependencies only do something when they change over time!
+
+On the other hand, `roomId` may be different on a re-render. **Props, state, and other values declared inside the component are _reactive_ because they're calculated during rendering and participate in the React data flow.**
+
+If `serverUrl` was a state variable, it would be reactive. Reactive values must be included in dependencies:
+
+```js
+function ChatRoom({ roomId }) {
+	// Props change over time
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234"); // State may change over time
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId); // Your Effect reads props and state
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId, serverUrl]); // So you tell React that this Effect "depends on" on props and state
+	// ...
+}
+```
+
+By including `serverUrl` as a dependency, you ensure that the Effect re-synchronizes after it changes.
+
+Try changing the selected chat room or edit the server URL in this sandbox:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Whenever you change a reactive value like `roomId` or `serverUrl`, the Effect re-connects to the chat server.
+
+### What an Effect with empty dependencies means
+
+What happens if you move both `serverUrl` and `roomId` outside the component?
+
+```js
+const serverUrl = "https://localhost:1234";
+const roomId = "general";
+
+function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, []); // ✅ All dependencies declared
+	// ...
+}
+```
+
+Now your Effect's code does not use _any_ reactive values, so its dependencies can be empty (`[]`).
+
+Thinking from the component's perspective, the empty `[]` dependency array means this Effect connects to the chat room only when the component mounts, and disconnects only when the component unmounts. (Keep in mind that React would still [re-synchronize it an extra time](#how-react-verifies-that-your-effect-can-re-synchronize) in development to stress-test your logic.)
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+const roomId = "general";
+
+function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []);
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+However, if you [think from the Effect's perspective,](#thinking-from-the-effects-perspective) you don't need to think about mounting and unmounting at all. What's important is you've specified what your Effect does to start and stop synchronizing. Today, it has no reactive dependencies. But if you ever want the user to change `roomId` or `serverUrl` over time (and they would become reactive), your Effect's code won't change. You will only need to add them to the dependencies.
+
+### All variables declared in the component body are reactive
+
+Props and state aren't the only reactive values. Values that you calculate from them are also reactive. If the props or state change, your component will re-render, and the values calculated from them will also change. This is why all variables from the component body used by the Effect should be in the Effect dependency list.
+
+Let's say that the user can pick a chat server in the dropdown, but they can also configure a default server in settings. Suppose you've already put the settings state in a [context](/learn/scaling-up-with-reducer-and-context) so you read the `settings` from that context. Now you calculate the `serverUrl` based on the selected server from props and the default server:
+
+```js
+function ChatRoom({ roomId, selectedServerUrl }) {
+	// roomId is reactive
+	const settings = useContext(SettingsContext); // settings is reactive
+	const serverUrl = selectedServerUrl ?? settings.defaultServerUrl; // serverUrl is reactive
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId); // Your Effect reads roomId and serverUrl
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId, serverUrl]); // So it needs to re-synchronize when either of them changes!
+	// ...
+}
+```
+
+In this example, `serverUrl` is not a prop or a state variable. It's a regular variable that you calculate during rendering. But it's calculated during rendering, so it can change due to a re-render. This is why it's reactive.
+
+**All values inside the component (including props, state, and variables in your component's body) are reactive. Any reactive value can change on a re-render, so you need to include reactive values as Effect's dependencies.**
+
+In other words, Effects "react" to all values from the component body.
+
+<DeepDive>
+
+#### Can global or mutable values be dependencies?
+
+Mutable values (including global variables) aren't reactive.
+
+**A mutable value like [`location.pathname`](https://developer.mozilla.org/en-US/docs/Web/API/Location/pathname) can't be a dependency.** It's mutable, so it can change at any time completely outside of the React rendering data flow. Changing it wouldn't trigger a re-render of your component. Therefore, even if you specified it in the dependencies, React _wouldn't know_ to re-synchronize the Effect when it changes. This also breaks the rules of React because reading mutable data during rendering (which is when you calculate the dependencies) breaks [purity of rendering.](/learn/keeping-components-pure) Instead, you should read and subscribe to an external mutable value with [`useSyncExternalStore`.](/learn/you-might-not-need-an-effect#subscribing-to-an-external-store)
+
+**A mutable value like [`ref.current`](/reference/react/useRef#reference) or things you read from it also can't be a dependency.** The ref object returned by `useRef` itself can be a dependency, but its `current` property is intentionally mutable. It lets you [keep track of something without triggering a re-render.](/learn/referencing-values-with-refs) But since changing it doesn't trigger a re-render, it's not a reactive value, and React won't know to re-run your Effect when it changes.
+
+As you'll learn below on this page, a linter will check for these issues automatically.
+
+</DeepDive>
+
+### React verifies that you specified every reactive value as a dependency
+
+If your linter is [configured for React,](/learn/editor-setup#linting) it will check that every reactive value used by your Effect's code is declared as its dependency. For example, this is a lint error because both `roomId` and `serverUrl` are reactive:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	// roomId is reactive
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234"); // serverUrl is reactive
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // <-- Something's wrong here!
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+This may look like a React error, but really React is pointing out a bug in your code. Both `roomId` and `serverUrl` may change over time, but you're forgetting to re-synchronize your Effect when they change. You will remain connected to the initial `roomId` and `serverUrl` even after the user picks different values in the UI.
+
+To fix the bug, follow the linter's suggestion to specify `roomId` and `serverUrl` as dependencies of your Effect:
+
+```js
+function ChatRoom({ roomId }) {
+	// roomId is reactive
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234"); // serverUrl is reactive
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [serverUrl, roomId]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+Try this fix in the sandbox above. Verify that the linter error is gone, and the chat re-connects when needed.
+
+<Note>
+
+In some cases, React _knows_ that a value never changes even though it's declared inside the component. For example, the [`set` function](/reference/react/useState#setstate) returned from `useState` and the ref object returned by [`useRef`](/reference/react/useRef) are _stable_--they are guaranteed to not change on a re-render. Stable values aren't reactive, so you may omit them from the list. Including them is allowed: they won't change, so it doesn't matter.
+
+</Note>
+
+### What to do when you don't want to re-synchronize
+
+In the previous example, you've fixed the lint error by listing `roomId` and `serverUrl` as dependencies.
+
+**However, you could instead "prove" to the linter that these values aren't reactive values,** i.e. that they _can't_ change as a result of a re-render. For example, if `serverUrl` and `roomId` don't depend on rendering and always have the same values, you can move them outside the component. Now they don't need to be dependencies:
+
+```js
+const serverUrl = "https://localhost:1234"; // serverUrl is not reactive
+const roomId = "general"; // roomId is not reactive
+
+function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, []); // ✅ All dependencies declared
+	// ...
+}
+```
+
+You can also move them _inside the Effect._ They aren't calculated during rendering, so they're not reactive:
+
+```js
+function ChatRoom() {
+	useEffect(() => {
+		const serverUrl = "https://localhost:1234"; // serverUrl is not reactive
+		const roomId = "general"; // roomId is not reactive
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, []); // ✅ All dependencies declared
+	// ...
+}
+```
+
+**Effects are reactive blocks of code.** They re-synchronize when the values you read inside of them change. Unlike event handlers, which only run once per interaction, Effects run whenever synchronization is necessary.
+
+**You can't "choose" your dependencies.** Your dependencies must include every [reactive value](#all-variables-declared-in-the-component-body-are-reactive) you read in the Effect. The linter enforces this. Sometimes this may lead to problems like infinite loops and to your Effect re-synchronizing too often. Don't fix these problems by suppressing the linter! Here's what to try instead:
+
+-   **Check that your Effect represents an independent synchronization process.** If your Effect doesn't synchronize anything, [it might be unnecessary.](/learn/you-might-not-need-an-effect) If it synchronizes several independent things, [split it up.](#each-effect-represents-a-separate-synchronization-process)
+
+-   **If you want to read the latest value of props or state without "reacting" to it and re-synchronizing the Effect,** you can split your Effect into a reactive part (which you'll keep in the Effect) and a non-reactive part (which you'll extract into something called an _Effect Event_). [Read about separating Events from Effects.](/learn/separating-events-from-effects)
+
+-   **Avoid relying on objects and functions as dependencies.** If you create objects and functions during rendering and then read them from an Effect, they will be different on every render. This will cause your Effect to re-synchronize every time. [Read more about removing unnecessary dependencies from Effects.](/learn/removing-effect-dependencies)
+
+<Pitfall>
+
+The linter is your friend, but its powers are limited. The linter only knows when the dependencies are _wrong_. It doesn't know _the best_ way to solve each case. If the linter suggests a dependency, but adding it causes a loop, it doesn't mean the linter should be ignored. You need to change the code inside (or outside) the Effect so that that value isn't reactive and doesn't _need_ to be a dependency.
+
+If you have an existing codebase, you might have some Effects that suppress the linter like this:
+
+```js
+useEffect(() => {
+	// ...
+	// 🔴 Avoid suppressing the linter like this:
+	// eslint-ignore-next-line react-hooks/exhaustive-deps
+}, []);
+```
+
+On the [next](/learn/separating-events-from-effects) [pages](/learn/removing-effect-dependencies), you'll learn how to fix this code without breaking the rules. It's always worth fixing!
+
+</Pitfall>
+
+<Recap>
+
+-   Components can mount, update, and unmount.
+-   Each Effect has a separate lifecycle from the surrounding component.
+-   Each Effect describes a separate synchronization process that can _start_ and _stop_.
+-   When you write and read Effects, think from each individual Effect's perspective (how to start and stop synchronization) rather than from the component's perspective (how it mounts, updates, or unmounts).
+-   Values declared inside the component body are "reactive".
+-   Reactive values should re-synchronize the Effect because they can change over time.
+-   The linter verifies that all reactive values used inside the Effect are specified as dependencies.
+-   All errors flagged by the linter are legitimate. There's always a way to fix the code to not break the rules.
+
+</Recap>
+
+<Challenges>
+
+#### Fix reconnecting on every keystroke
+
+In this example, the `ChatRoom` component connects to the chat room when the component mounts, disconnects when it unmounts, and reconnects when you select a different chat room. This behavior is correct, so you need to keep it working.
+
+However, there is a problem. Whenever you type into the message box input at the bottom, `ChatRoom` _also_ reconnects to the chat. (You can notice this by clearing the console and typing into the input.) Fix the issue so that this doesn't happen.
+
+<Hint>
+
+You might need to add a dependency array for this Effect. What dependencies should be there?
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	});
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+<Solution>
+
+This Effect didn't have a dependency array at all, so it re-synchronized after every re-render. First, add a dependency array. Then, make sure that every reactive value used by the Effect is specified in the array. For example, `roomId` is reactive (because it's a prop), so it should be included in the array. This ensures that when the user selects a different room, the chat reconnects. On the other hand, `serverUrl` is defined outside the component. This is why it doesn't need to be in the array.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+</Solution>
+
+#### Switch synchronization on and off
+
+In this example, an Effect subscribes to the window [`pointermove`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event) event to move a pink dot on the screen. Try hovering over the preview area (or touching the screen if you're on a mobile device), and see how the pink dot follows your movement.
+
+There is also a checkbox. Ticking the checkbox toggles the `canMove` state variable, but this state variable is not used anywhere in the code. Your task is to change the code so that when `canMove` is `false` (the checkbox is ticked off), the dot should stop moving. After you toggle the checkbox back on (and set `canMove` to `true`), the box should follow the movement again. In other words, whether the dot can move or not should stay synchronized to whether the checkbox is checked.
+
+<Hint>
+
+You can't declare an Effect conditionally. However, the code inside the Effect can use conditions!
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	useEffect(() => {
+		function handleMove(e) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+	}, []);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+<Solution>
+
+One solution is to wrap the `setPosition` call into an `if (canMove) { ... }` condition:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	useEffect(() => {
+		function handleMove(e) {
+			if (canMove) {
+				setPosition({ x: e.clientX, y: e.clientY });
+			}
+		}
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+	}, [canMove]);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+Alternatively, you could wrap the _event subscription_ logic into an `if (canMove) { ... }` condition:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	useEffect(() => {
+		function handleMove(e) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+		if (canMove) {
+			window.addEventListener("pointermove", handleMove);
+			return () => window.removeEventListener("pointermove", handleMove);
+		}
+	}, [canMove]);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+In both of these cases, `canMove` is a reactive variable that you read inside the Effect. This is why it must be specified in the list of Effect dependencies. This ensures that the Effect re-synchronizes after every change to its value.
+
+</Solution>
+
+#### Investigate a stale value bug
+
+In this example, the pink dot should move when the checkbox is on, and should stop moving when the checkbox is off. The logic for this has already been implemented: the `handleMove` event handler checks the `canMove` state variable.
+
+However, for some reason, the `canMove` state variable inside `handleMove` appears to be "stale": it's always `true`, even after you tick off the checkbox. How is this possible? Find the mistake in the code and fix it.
+
+<Hint>
+
+If you see a linter rule being suppressed, remove the suppression! That's where the mistakes usually are.
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	function handleMove(e) {
+		if (canMove) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+	}
+
+	useEffect(() => {
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+		// eslint-disable-next-line react-hooks/exhaustive-deps
+	}, []);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+<Solution>
+
+The problem with the original code was suppressing the dependency linter. If you remove the suppression, you'll see that this Effect depends on the `handleMove` function. This makes sense: `handleMove` is declared inside the component body, which makes it a reactive value. Every reactive value must be specified as a dependency, or it can potentially get stale over time!
+
+The author of the original code has "lied" to React by saying that the Effect does not depend (`[]`) on any reactive values. This is why React did not re-synchronize the Effect after `canMove` has changed (and `handleMove` with it). Because React did not re-synchronize the Effect, the `handleMove` attached as a listener is the `handleMove` function created during the initial render. During the initial render, `canMove` was `true`, which is why `handleMove` from the initial render will forever see that value.
+
+**If you never suppress the linter, you will never see problems with stale values.** There are a few different ways to solve this bug, but you should always start by removing the linter suppression. Then change the code to fix the lint error.
+
+You can change the Effect dependencies to `[handleMove]`, but since it's going to be a newly defined function for every render, you might as well remove dependencies array altogether. Then the Effect _will_ re-synchronize after every re-render:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	function handleMove(e) {
+		if (canMove) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+	}
+
+	useEffect(() => {
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+	});
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+This solution works, but it's not ideal. If you put `console.log('Resubscribing')` inside the Effect, you'll notice that it resubscribes after every re-render. Resubscribing is fast, but it would still be nice to avoid doing it so often.
+
+A better fix would be to move the `handleMove` function _inside_ the Effect. Then `handleMove` won't be a reactive value, and so your Effect won't depend on a function. Instead, it will need to depend on `canMove` which your code now reads from inside the Effect. This matches the behavior you wanted, since your Effect will now stay synchronized with the value of `canMove`:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	useEffect(() => {
+		function handleMove(e) {
+			if (canMove) {
+				setPosition({ x: e.clientX, y: e.clientY });
+			}
+		}
+
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+	}, [canMove]);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+Try adding `console.log('Resubscribing')` inside the Effect body and notice that now it only resubscribes when you toggle the checkbox (`canMove` changes) or edit the code. This makes it better than the previous approach that always resubscribed.
+
+You'll learn a more general approach to this type of problem in [Separating Events from Effects.](/learn/separating-events-from-effects)
+
+</Solution>
+
+#### Fix a connection switch
+
+In this example, the chat service in `chat.js` exposes two different APIs: `createEncryptedConnection` and `createUnencryptedConnection`. The root `App` component lets the user choose whether to use encryption or not, and then passes down the corresponding API method to the child `ChatRoom` component as the `createConnection` prop.
+
+Notice that initially, the console logs say the connection is not encrypted. Try toggling the checkbox on: nothing will happen. However, if you change the selected room after that, then the chat will reconnect _and_ enable encryption (as you'll see from the console messages). This is a bug. Fix the bug so that toggling the checkbox _also_ causes the chat to reconnect.
+
+<Hint>
+
+Suppressing the linter is always suspicious. Could this be a bug?
+
+</Hint>
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+import {
+	createEncryptedConnection,
+	createUnencryptedConnection,
+} from "./chat.js";
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isEncrypted, setIsEncrypted] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isEncrypted}
+					onChange={(e) => setIsEncrypted(e.target.checked)}
+				/>
+				Enable encryption
+			</label>
+			<hr />
+			<ChatRoom
+				roomId={roomId}
+				createConnection={
+					isEncrypted
+						? createEncryptedConnection
+						: createUnencryptedConnection
+				}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export default function ChatRoom({ roomId, createConnection }) {
+	useEffect(() => {
+		const connection = createConnection(roomId);
+		connection.connect();
+		return () => connection.disconnect();
+		// eslint-disable-next-line react-hooks/exhaustive-deps
+	}, [roomId]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+```js
+export function createEncryptedConnection(roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log('✅ 🔐 Connecting to "' + roomId + "... (encrypted)");
+		},
+		disconnect() {
+			console.log(
+				'❌ 🔐 Disconnected from "' + roomId + '" room (encrypted)'
+			);
+		},
+	};
+}
+
+export function createUnencryptedConnection(roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log('✅ Connecting to "' + roomId + "... (unencrypted)");
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room (unencrypted)'
+			);
+		},
+	};
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+<Solution>
+
+If you remove the linter suppression, you will see a lint error. The problem is that `createConnection` is a prop, so it's a reactive value. It can change over time! (And indeed, it should--when the user ticks the checkbox, the parent component passes a different value of the `createConnection` prop.) This is why it should be a dependency. Include it in the list to fix the bug:
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+import {
+	createEncryptedConnection,
+	createUnencryptedConnection,
+} from "./chat.js";
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isEncrypted, setIsEncrypted] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isEncrypted}
+					onChange={(e) => setIsEncrypted(e.target.checked)}
+				/>
+				Enable encryption
+			</label>
+			<hr />
+			<ChatRoom
+				roomId={roomId}
+				createConnection={
+					isEncrypted
+						? createEncryptedConnection
+						: createUnencryptedConnection
+				}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export default function ChatRoom({ roomId, createConnection }) {
+	useEffect(() => {
+		const connection = createConnection(roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, createConnection]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+```js
+export function createEncryptedConnection(roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log('✅ 🔐 Connecting to "' + roomId + "... (encrypted)");
+		},
+		disconnect() {
+			console.log(
+				'❌ 🔐 Disconnected from "' + roomId + '" room (encrypted)'
+			);
+		},
+	};
+}
+
+export function createUnencryptedConnection(roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log('✅ Connecting to "' + roomId + "... (unencrypted)");
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room (unencrypted)'
+			);
+		},
+	};
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+It is correct that `createConnection` is a dependency. However, this code is a bit fragile because someone could edit the `App` component to pass an inline function as the value of this prop. In that case, its value would be different every time the `App` component re-renders, so the Effect might re-synchronize too often. To avoid this, you can pass `isEncrypted` down instead:
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isEncrypted, setIsEncrypted] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isEncrypted}
+					onChange={(e) => setIsEncrypted(e.target.checked)}
+				/>
+				Enable encryption
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} isEncrypted={isEncrypted} />
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import {
+	createEncryptedConnection,
+	createUnencryptedConnection,
+} from "./chat.js";
+
+export default function ChatRoom({ roomId, isEncrypted }) {
+	useEffect(() => {
+		const createConnection = isEncrypted
+			? createEncryptedConnection
+			: createUnencryptedConnection;
+		const connection = createConnection(roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, isEncrypted]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+```js
+export function createEncryptedConnection(roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log('✅ 🔐 Connecting to "' + roomId + "... (encrypted)");
+		},
+		disconnect() {
+			console.log(
+				'❌ 🔐 Disconnected from "' + roomId + '" room (encrypted)'
+			);
+		},
+	};
+}
+
+export function createUnencryptedConnection(roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log('✅ Connecting to "' + roomId + "... (unencrypted)");
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room (unencrypted)'
+			);
+		},
+	};
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+In this version, the `App` component passes a boolean prop instead of a function. Inside the Effect, you decide which function to use. Since both `createEncryptedConnection` and `createUnencryptedConnection` are declared outside the component, they aren't reactive, and don't need to be dependencies. You'll learn more about this in [Removing Effect Dependencies.](/learn/removing-effect-dependencies)
+
+</Solution>
+
+#### Populate a chain of select boxes
+
+In this example, there are two select boxes. One select box lets the user pick a planet. Another select box lets the user pick a place _on that planet._ The second box doesn't work yet. Your task is to make it show the places on the chosen planet.
+
+Look at how the first select box works. It populates the `planetList` state with the result from the `"/planets"` API call. The currently selected planet's ID is kept in the `planetId` state variable. You need to find where to add some additional code so that the `placeList` state variable is populated with the result of the `"/planets/" + planetId + "/places"` API call.
+
+If you implement this right, selecting a planet should populate the place list. Changing a planet should change the place list.
+
+<Hint>
+
+If you have two independent synchronization processes, you need to write two separate Effects.
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+import { fetchData } from "./api.js";
+
+export default function Page() {
+	const [planetList, setPlanetList] = useState([]);
+	const [planetId, setPlanetId] = useState("");
+
+	const [placeList, setPlaceList] = useState([]);
+	const [placeId, setPlaceId] = useState("");
+
+	useEffect(() => {
+		let ignore = false;
+		fetchData("/planets").then((result) => {
+			if (!ignore) {
+				console.log("Fetched a list of planets.");
+				setPlanetList(result);
+				setPlanetId(result[0].id); // Select the first planet
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, []);
+
+	return (
+		<>
+			<label>
+				Pick a planet:{" "}
+				<select
+					value={planetId}
+					onChange={(e) => {
+						setPlanetId(e.target.value);
+					}}
+				>
+					{planetList.map((planet) => (
+						<option key={planet.id} value={planet.id}>
+							{planet.name}
+						</option>
+					))}
+				</select>
+			</label>
+			<label>
+				Pick a place:{" "}
+				<select
+					value={placeId}
+					onChange={(e) => {
+						setPlaceId(e.target.value);
+					}}
+				>
+					{placeList.map((place) => (
+						<option key={place.id} value={place.id}>
+							{place.name}
+						</option>
+					))}
+				</select>
+			</label>
+			<hr />
+			<p>
+				You are going to: {placeId || "???"} on {planetId || "???"}{" "}
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export function fetchData(url) {
+	if (url === "/planets") {
+		return fetchPlanets();
+	} else if (url.startsWith("/planets/")) {
+		const match = url.match(/^\/planets\/([\w-]+)\/places(\/)?$/);
+		if (!match || !match[1] || !match[1].length) {
+			throw Error(
+				'Expected URL like "/planets/earth/places". Received: "' +
+					url +
+					'".'
+			);
+		}
+		return fetchPlaces(match[1]);
+	} else
+		throw Error(
+			'Expected URL like "/planets" or "/planets/earth/places". Received: "' +
+				url +
+				'".'
+		);
+}
+
+async function fetchPlanets() {
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve([
+				{
+					id: "earth",
+					name: "Earth",
+				},
+				{
+					id: "venus",
+					name: "Venus",
+				},
+				{
+					id: "mars",
+					name: "Mars",
+				},
+			]);
+		}, 1000);
+	});
+}
+
+async function fetchPlaces(planetId) {
+	if (typeof planetId !== "string") {
+		throw Error(
+			"fetchPlaces(planetId) expects a string argument. " +
+				"Instead received: " +
+				planetId +
+				"."
+		);
+	}
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			if (planetId === "earth") {
+				resolve([
+					{
+						id: "laos",
+						name: "Laos",
+					},
+					{
+						id: "spain",
+						name: "Spain",
+					},
+					{
+						id: "vietnam",
+						name: "Vietnam",
+					},
+				]);
+			} else if (planetId === "venus") {
+				resolve([
+					{
+						id: "aurelia",
+						name: "Aurelia",
+					},
+					{
+						id: "diana-chasma",
+						name: "Diana Chasma",
+					},
+					{
+						id: "kumsong-vallis",
+						name: "Kŭmsŏng Vallis",
+					},
+				]);
+			} else if (planetId === "mars") {
+				resolve([
+					{
+						id: "aluminum-city",
+						name: "Aluminum City",
+					},
+					{
+						id: "new-new-york",
+						name: "New New York",
+					},
+					{
+						id: "vishniac",
+						name: "Vishniac",
+					},
+				]);
+			} else throw Error("Unknown planet ID: " + planetId);
+		}, 1000);
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+<Solution>
+
+There are two independent synchronization processes:
+
+-   The first select box is synchronized to the remote list of planets.
+-   The second select box is synchronized to the remote list of places for the current `planetId`.
+
+This is why it makes sense to describe them as two separate Effects. Here's an example of how you could do this:
+
+```js
+import { useState, useEffect } from "react";
+import { fetchData } from "./api.js";
+
+export default function Page() {
+	const [planetList, setPlanetList] = useState([]);
+	const [planetId, setPlanetId] = useState("");
+
+	const [placeList, setPlaceList] = useState([]);
+	const [placeId, setPlaceId] = useState("");
+
+	useEffect(() => {
+		let ignore = false;
+		fetchData("/planets").then((result) => {
+			if (!ignore) {
+				console.log("Fetched a list of planets.");
+				setPlanetList(result);
+				setPlanetId(result[0].id); // Select the first planet
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, []);
+
+	useEffect(() => {
+		if (planetId === "") {
+			// Nothing is selected in the first box yet
+			return;
+		}
+
+		let ignore = false;
+		fetchData("/planets/" + planetId + "/places").then((result) => {
+			if (!ignore) {
+				console.log('Fetched a list of places on "' + planetId + '".');
+				setPlaceList(result);
+				setPlaceId(result[0].id); // Select the first place
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, [planetId]);
+
+	return (
+		<>
+			<label>
+				Pick a planet:{" "}
+				<select
+					value={planetId}
+					onChange={(e) => {
+						setPlanetId(e.target.value);
+					}}
+				>
+					{planetList.map((planet) => (
+						<option key={planet.id} value={planet.id}>
+							{planet.name}
+						</option>
+					))}
+				</select>
+			</label>
+			<label>
+				Pick a place:{" "}
+				<select
+					value={placeId}
+					onChange={(e) => {
+						setPlaceId(e.target.value);
+					}}
+				>
+					{placeList.map((place) => (
+						<option key={place.id} value={place.id}>
+							{place.name}
+						</option>
+					))}
+				</select>
+			</label>
+			<hr />
+			<p>
+				You are going to: {placeId || "???"} on {planetId || "???"}{" "}
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export function fetchData(url) {
+	if (url === "/planets") {
+		return fetchPlanets();
+	} else if (url.startsWith("/planets/")) {
+		const match = url.match(/^\/planets\/([\w-]+)\/places(\/)?$/);
+		if (!match || !match[1] || !match[1].length) {
+			throw Error(
+				'Expected URL like "/planets/earth/places". Received: "' +
+					url +
+					'".'
+			);
+		}
+		return fetchPlaces(match[1]);
+	} else
+		throw Error(
+			'Expected URL like "/planets" or "/planets/earth/places". Received: "' +
+				url +
+				'".'
+		);
+}
+
+async function fetchPlanets() {
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve([
+				{
+					id: "earth",
+					name: "Earth",
+				},
+				{
+					id: "venus",
+					name: "Venus",
+				},
+				{
+					id: "mars",
+					name: "Mars",
+				},
+			]);
+		}, 1000);
+	});
+}
+
+async function fetchPlaces(planetId) {
+	if (typeof planetId !== "string") {
+		throw Error(
+			"fetchPlaces(planetId) expects a string argument. " +
+				"Instead received: " +
+				planetId +
+				"."
+		);
+	}
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			if (planetId === "earth") {
+				resolve([
+					{
+						id: "laos",
+						name: "Laos",
+					},
+					{
+						id: "spain",
+						name: "Spain",
+					},
+					{
+						id: "vietnam",
+						name: "Vietnam",
+					},
+				]);
+			} else if (planetId === "venus") {
+				resolve([
+					{
+						id: "aurelia",
+						name: "Aurelia",
+					},
+					{
+						id: "diana-chasma",
+						name: "Diana Chasma",
+					},
+					{
+						id: "kumsong-vallis",
+						name: "Kŭmsŏng Vallis",
+					},
+				]);
+			} else if (planetId === "mars") {
+				resolve([
+					{
+						id: "aluminum-city",
+						name: "Aluminum City",
+					},
+					{
+						id: "new-new-york",
+						name: "New New York",
+					},
+					{
+						id: "vishniac",
+						name: "Vishniac",
+					},
+				]);
+			} else throw Error("Unknown planet ID: " + planetId);
+		}, 1000);
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+This code is a bit repetitive. However, that's not a good reason to combine it into a single Effect! If you did this, you'd have to combine both Effect's dependencies into one list, and then changing the planet would refetch the list of all planets. Effects are not a tool for code reuse.
+
+Instead, to reduce repetition, you can extract some logic into a custom Hook like `useSelectOptions` below:
+
+```js
+import { useState } from "react";
+import { useSelectOptions } from "./useSelectOptions.js";
+
+export default function Page() {
+	const [planetList, planetId, setPlanetId] = useSelectOptions("/planets");
+
+	const [placeList, placeId, setPlaceId] = useSelectOptions(
+		planetId ? `/planets/${planetId}/places` : null
+	);
+
+	return (
+		<>
+			<label>
+				Pick a planet:{" "}
+				<select
+					value={planetId}
+					onChange={(e) => {
+						setPlanetId(e.target.value);
+					}}
+				>
+					{planetList?.map((planet) => (
+						<option key={planet.id} value={planet.id}>
+							{planet.name}
+						</option>
+					))}
+				</select>
+			</label>
+			<label>
+				Pick a place:{" "}
+				<select
+					value={placeId}
+					onChange={(e) => {
+						setPlaceId(e.target.value);
+					}}
+				>
+					{placeList?.map((place) => (
+						<option key={place.id} value={place.id}>
+							{place.name}
+						</option>
+					))}
+				</select>
+			</label>
+			<hr />
+			<p>
+				You are going to: {placeId || "..."} on {planetId || "..."}{" "}
+			</p>
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { fetchData } from "./api.js";
+
+export function useSelectOptions(url) {
+	const [list, setList] = useState(null);
+	const [selectedId, setSelectedId] = useState("");
+	useEffect(() => {
+		if (url === null) {
+			return;
+		}
+
+		let ignore = false;
+		fetchData(url).then((result) => {
+			if (!ignore) {
+				setList(result);
+				setSelectedId(result[0].id);
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, [url]);
+	return [list, selectedId, setSelectedId];
+}
+```
+
+```js
+export function fetchData(url) {
+	if (url === "/planets") {
+		return fetchPlanets();
+	} else if (url.startsWith("/planets/")) {
+		const match = url.match(/^\/planets\/([\w-]+)\/places(\/)?$/);
+		if (!match || !match[1] || !match[1].length) {
+			throw Error(
+				'Expected URL like "/planets/earth/places". Received: "' +
+					url +
+					'".'
+			);
+		}
+		return fetchPlaces(match[1]);
+	} else
+		throw Error(
+			'Expected URL like "/planets" or "/planets/earth/places". Received: "' +
+				url +
+				'".'
+		);
+}
+
+async function fetchPlanets() {
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve([
+				{
+					id: "earth",
+					name: "Earth",
+				},
+				{
+					id: "venus",
+					name: "Venus",
+				},
+				{
+					id: "mars",
+					name: "Mars",
+				},
+			]);
+		}, 1000);
+	});
+}
+
+async function fetchPlaces(planetId) {
+	if (typeof planetId !== "string") {
+		throw Error(
+			"fetchPlaces(planetId) expects a string argument. " +
+				"Instead received: " +
+				planetId +
+				"."
+		);
+	}
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			if (planetId === "earth") {
+				resolve([
+					{
+						id: "laos",
+						name: "Laos",
+					},
+					{
+						id: "spain",
+						name: "Spain",
+					},
+					{
+						id: "vietnam",
+						name: "Vietnam",
+					},
+				]);
+			} else if (planetId === "venus") {
+				resolve([
+					{
+						id: "aurelia",
+						name: "Aurelia",
+					},
+					{
+						id: "diana-chasma",
+						name: "Diana Chasma",
+					},
+					{
+						id: "kumsong-vallis",
+						name: "Kŭmsŏng Vallis",
+					},
+				]);
+			} else if (planetId === "mars") {
+				resolve([
+					{
+						id: "aluminum-city",
+						name: "Aluminum City",
+					},
+					{
+						id: "new-new-york",
+						name: "New New York",
+					},
+					{
+						id: "vishniac",
+						name: "Vishniac",
+					},
+				]);
+			} else throw Error("Unknown planet ID: " + planetId);
+		}, 1000);
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+Check the `useSelectOptions.js` tab in the sandbox to see how it works. Ideally, most Effects in your application should eventually be replaced by custom Hooks, whether written by you or by the community. Custom Hooks hide the synchronization logic, so the calling component doesn't know about the Effect. As you keep working on your app, you'll develop a palette of Hooks to choose from, and eventually you won't need to write Effects in your components very often.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/manipulating-the-dom-with-refs.md b/docs/src/learn/manipulating-the-dom-with-refs.md
new file mode 100644
index 000000000..5fcff0f42
--- /dev/null
+++ b/docs/src/learn/manipulating-the-dom-with-refs.md
@@ -0,0 +1,1078 @@
+---
+title: "Manipulating the DOM with Refs 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+React automatically updates the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) to match your render output, so your components won't often need to manipulate it. However, sometimes you might need access to the DOM elements managed by React--for example, to focus a node, scroll to it, or measure its size and position. There is no built-in way to do those things in React, so you will need a _ref_ to the DOM node.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to access a DOM node managed by React with the `ref` attribute
+    -   How the `ref` JSX attribute relates to the `useRef` Hook
+    -   How to access another component's DOM node
+    -   In which cases it's safe to modify the DOM managed by React
+
+## Getting a ref to the node
+
+To access a DOM node managed by React, first, import the `useRef` Hook:
+
+```js
+import { useRef } from "react";
+```
+
+Then, use it to declare a ref inside your component:
+
+```js
+const myRef = useRef(null);
+```
+
+Finally, pass your ref as the `ref` attribute to the JSX tag for which you want to get the DOM node:
+
+```js
+<div ref={myRef}>
+```
+
+The `useRef` Hook returns an object with a single property called `current`. Initially, `myRef.current` will be `null`. When React creates a DOM node for this `<div>`, React will put a reference to this node into `myRef.current`. You can then access this DOM node from your [event handlers](/learn/responding-to-events) and use the built-in [browser APIs](https://developer.mozilla.org/docs/Web/API/Element) defined on it.
+
+```js
+// You can use any browser APIs, for example:
+myRef.current.scrollIntoView();
+```
+
+### Example: Focusing a text input
+
+In this example, clicking the button will focus the input:
+
+```js
+import { useRef } from "react";
+
+export default function Form() {
+	const inputRef = useRef(null);
+
+	function handleClick() {
+		inputRef.current.focus();
+	}
+
+	return (
+		<>
+			<input ref={inputRef} />
+			<button on_click={handleClick}>Focus the input</button>
+		</>
+	);
+}
+```
+
+To implement this:
+
+1. Declare `inputRef` with the `useRef` Hook.
+2. Pass it as `<input ref={inputRef}>`. This tells React to **put this `<input>`'s DOM node into `inputRef.current`.**
+3. In the `handleClick` function, read the input DOM node from `inputRef.current` and call [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on it with `inputRef.current.focus()`.
+4. Pass the `handleClick` event handler to `<button>` with `on_click`.
+
+While DOM manipulation is the most common use case for refs, the `useRef` Hook can be used for storing other things outside React, like timer IDs. Similarly to state, refs remain between renders. Refs are like state variables that don't trigger re-renders when you set them. Read about refs in [Referencing Values with Refs.](/learn/referencing-values-with-refs)
+
+### Example: Scrolling to an element
+
+You can have more than a single ref in a component. In this example, there is a carousel of three images. Each button centers an image by calling the browser [`scrollIntoView()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView) method on the corresponding DOM node:
+
+```js
+import { useRef } from "react";
+
+export default function CatFriends() {
+	const firstCatRef = useRef(null);
+	const secondCatRef = useRef(null);
+	const thirdCatRef = useRef(null);
+
+	function handleScrollToFirstCat() {
+		firstCatRef.current.scrollIntoView({
+			behavior: "smooth",
+			block: "nearest",
+			inline: "center",
+		});
+	}
+
+	function handleScrollToSecondCat() {
+		secondCatRef.current.scrollIntoView({
+			behavior: "smooth",
+			block: "nearest",
+			inline: "center",
+		});
+	}
+
+	function handleScrollToThirdCat() {
+		thirdCatRef.current.scrollIntoView({
+			behavior: "smooth",
+			block: "nearest",
+			inline: "center",
+		});
+	}
+
+	return (
+		<>
+			<nav>
+				<button on_click={handleScrollToFirstCat}>Tom</button>
+				<button on_click={handleScrollToSecondCat}>Maru</button>
+				<button on_click={handleScrollToThirdCat}>Jellylorum</button>
+			</nav>
+			<div>
+				<ul>
+					<li>
+						<img
+							src="https://placekitten.com/g/200/200"
+							alt="Tom"
+							ref={firstCatRef}
+						/>
+					</li>
+					<li>
+						<img
+							src="https://placekitten.com/g/300/200"
+							alt="Maru"
+							ref={secondCatRef}
+						/>
+					</li>
+					<li>
+						<img
+							src="https://placekitten.com/g/250/200"
+							alt="Jellylorum"
+							ref={thirdCatRef}
+						/>
+					</li>
+				</ul>
+			</div>
+		</>
+	);
+}
+```
+
+```css
+div {
+	width: 100%;
+	overflow: hidden;
+}
+
+nav {
+	text-align: center;
+}
+
+button {
+	margin: 0.25rem;
+}
+
+ul,
+li {
+	list-style: none;
+	white-space: nowrap;
+}
+
+li {
+	display: inline;
+	padding: 0.5rem;
+}
+```
+
+<DeepDive>
+
+#### How to manage a list of refs using a ref callback
+
+In the above examples, there is a predefined number of refs. However, sometimes you might need a ref to each item in the list, and you don't know how many you will have. Something like this **wouldn't work**:
+
+```js
+<ul>
+	{items.map((item) => {
+		// Doesn't work!
+		const ref = useRef(null);
+		return <li ref={ref} />;
+	})}
+</ul>
+```
+
+This is because **Hooks must only be called at the top-level of your component.** You can't call `useRef` in a loop, in a condition, or inside a `map()` call.
+
+One possible way around this is to get a single ref to their parent element, and then use DOM manipulation methods like [`querySelectorAll`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) to "find" the individual child nodes from it. However, this is brittle and can break if your DOM structure changes.
+
+Another solution is to **pass a function to the `ref` attribute.** This is called a [`ref` callback.](/reference/react-dom/components/common#ref-callback) React will call your ref callback with the DOM node when it's time to set the ref, and with `null` when it's time to clear it. This lets you maintain your own array or a [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map), and access any ref by its index or some kind of ID.
+
+This example shows how you can use this approach to scroll to an arbitrary node in a long list:
+
+```js
+import { useRef } from "react";
+
+export default function CatFriends() {
+	const itemsRef = useRef(null);
+
+	function scrollToId(itemId) {
+		const map = getMap();
+		const node = map.get(itemId);
+		node.scrollIntoView({
+			behavior: "smooth",
+			block: "nearest",
+			inline: "center",
+		});
+	}
+
+	function getMap() {
+		if (!itemsRef.current) {
+			// Initialize the Map on first usage.
+			itemsRef.current = new Map();
+		}
+		return itemsRef.current;
+	}
+
+	return (
+		<>
+			<nav>
+				<button on_click={() => scrollToId(0)}>Tom</button>
+				<button on_click={() => scrollToId(5)}>Maru</button>
+				<button on_click={() => scrollToId(9)}>Jellylorum</button>
+			</nav>
+			<div>
+				<ul>
+					{catList.map((cat) => (
+						<li
+							key={cat.id}
+							ref={(node) => {
+								const map = getMap();
+								if (node) {
+									map.set(cat.id, node);
+								} else {
+									map.delete(cat.id);
+								}
+							}}
+						>
+							<img src={cat.imageUrl} alt={"Cat #" + cat.id} />
+						</li>
+					))}
+				</ul>
+			</div>
+		</>
+	);
+}
+
+const catList = [];
+for (let i = 0; i < 10; i++) {
+	catList.push({
+		id: i,
+		imageUrl: "https://placekitten.com/250/200?image=" + i,
+	});
+}
+```
+
+```css
+div {
+	width: 100%;
+	overflow: hidden;
+}
+
+nav {
+	text-align: center;
+}
+
+button {
+	margin: 0.25rem;
+}
+
+ul,
+li {
+	list-style: none;
+	white-space: nowrap;
+}
+
+li {
+	display: inline;
+	padding: 0.5rem;
+}
+```
+
+In this example, `itemsRef` doesn't hold a single DOM node. Instead, it holds a [Map](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map) from item ID to a DOM node. ([Refs can hold any values!](/learn/referencing-values-with-refs)) The [`ref` callback](/reference/react-dom/components/common#ref-callback) on every list item takes care to update the Map:
+
+```js
+<li
+  key={cat.id}
+  ref={node => {
+    const map = getMap();
+    if (node) {
+      // Add to the Map
+      map.set(cat.id, node);
+    } else {
+      // Remove from the Map
+      map.delete(cat.id);
+    }
+  }}
+>
+```
+
+This lets you read individual DOM nodes from the Map later.
+
+</DeepDive>
+
+## Accessing another component's DOM nodes
+
+When you put a ref on a built-in component that outputs a browser element like `<input />`, React will set that ref's `current` property to the corresponding DOM node (such as the actual `<input />` in the browser).
+
+However, if you try to put a ref on **your own** component, like `<MyInput />`, by default you will get `null`. Here is an example demonstrating it. Notice how clicking the button **does not** focus the input:
+
+```js
+import { useRef } from "react";
+
+function MyInput(props) {
+	return <input {...props} />;
+}
+
+export default function MyForm() {
+	const inputRef = useRef(null);
+
+	function handleClick() {
+		inputRef.current.focus();
+	}
+
+	return (
+		<>
+			<MyInput ref={inputRef} />
+			<button on_click={handleClick}>Focus the input</button>
+		</>
+	);
+}
+```
+
+To help you notice the issue, React also prints an error to the console:
+
+<ConsoleBlock level="error">
+
+Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
+
+</ConsoleBlock>
+
+This happens because by default React does not let a component access the DOM nodes of other components. Not even for its own children! This is intentional. Refs are an escape hatch that should be used sparingly. Manually manipulating _another_ component's DOM nodes makes your code even more fragile.
+
+Instead, components that _want_ to expose their DOM nodes have to **opt in** to that behavior. A component can specify that it "forwards" its ref to one of its children. Here's how `MyInput` can use the `forwardRef` API:
+
+```js
+const MyInput = forwardRef((props, ref) => {
+	return <input {...props} ref={ref} />;
+});
+```
+
+This is how it works:
+
+1. `<MyInput ref={inputRef} />` tells React to put the corresponding DOM node into `inputRef.current`. However, it's up to the `MyInput` component to opt into that--by default, it doesn't.
+2. The `MyInput` component is declared using `forwardRef`. **This opts it into receiving the `inputRef` from above as the second `ref` argument** which is declared after `props`.
+3. `MyInput` itself passes the `ref` it received to the `<input>` inside of it.
+
+Now clicking the button to focus the input works:
+
+```js
+import { forwardRef, useRef } from "react";
+
+const MyInput = forwardRef((props, ref) => {
+	return <input {...props} ref={ref} />;
+});
+
+export default function Form() {
+	const inputRef = useRef(null);
+
+	function handleClick() {
+		inputRef.current.focus();
+	}
+
+	return (
+		<>
+			<MyInput ref={inputRef} />
+			<button on_click={handleClick}>Focus the input</button>
+		</>
+	);
+}
+```
+
+In design systems, it is a common pattern for low-level components like buttons, inputs, and so on, to forward their refs to their DOM nodes. On the other hand, high-level components like forms, lists, or page sections usually won't expose their DOM nodes to avoid accidental dependencies on the DOM structure.
+
+<DeepDive>
+
+#### Exposing a subset of the API with an imperative handle
+
+In the above example, `MyInput` exposes the original DOM input element. This lets the parent component call `focus()` on it. However, this also lets the parent component do something else--for example, change its CSS styles. In uncommon cases, you may want to restrict the exposed functionality. You can do that with `useImperativeHandle`:
+
+```js
+import { forwardRef, useRef, useImperativeHandle } from "react";
+
+const MyInput = forwardRef((props, ref) => {
+	const realInputRef = useRef(null);
+	useImperativeHandle(ref, () => ({
+		// Only expose focus and nothing else
+		focus() {
+			realInputRef.current.focus();
+		},
+	}));
+	return <input {...props} ref={realInputRef} />;
+});
+
+export default function Form() {
+	const inputRef = useRef(null);
+
+	function handleClick() {
+		inputRef.current.focus();
+	}
+
+	return (
+		<>
+			<MyInput ref={inputRef} />
+			<button on_click={handleClick}>Focus the input</button>
+		</>
+	);
+}
+```
+
+Here, `realInputRef` inside `MyInput` holds the actual input DOM node. However, `useImperativeHandle` instructs React to provide your own special object as the value of a ref to the parent component. So `inputRef.current` inside the `Form` component will only have the `focus` method. In this case, the ref "handle" is not the DOM node, but the custom object you create inside `useImperativeHandle` call.
+
+</DeepDive>
+
+## When React attaches the refs
+
+In React, every update is split in [two phases](/learn/render-and-commit#step-3-react-commits-changes-to-the-dom):
+
+-   During **render,** React calls your components to figure out what should be on the screen.
+-   During **commit,** React applies changes to the DOM.
+
+In general, you [don't want](/learn/referencing-values-with-refs#best-practices-for-refs) to access refs during rendering. That goes for refs holding DOM nodes as well. During the first render, the DOM nodes have not yet been created, so `ref.current` will be `null`. And during the rendering of updates, the DOM nodes haven't been updated yet. So it's too early to read them.
+
+React sets `ref.current` during the commit. Before updating the DOM, React sets the affected `ref.current` values to `null`. After updating the DOM, React immediately sets them to the corresponding DOM nodes.
+
+**Usually, you will access refs from event handlers.** If you want to do something with a ref, but there is no particular event to do it in, you might need an Effect. We will discuss effects on the next pages.
+
+<DeepDive>
+
+#### Flushing state updates synchronously with flushSync
+
+Consider code like this, which adds a new todo and scrolls the screen down to the last child of the list. Notice how, for some reason, it always scrolls to the todo that was _just before_ the last added one:
+
+```js
+import { useState, useRef } from "react";
+
+export default function TodoList() {
+	const listRef = useRef(null);
+	const [text, setText] = useState("");
+	const [todos, setTodos] = useState(initialTodos);
+
+	function handleAdd() {
+		const newTodo = { id: nextId++, text: text };
+		setText("");
+		setTodos([...todos, newTodo]);
+		listRef.current.lastChild.scrollIntoView({
+			behavior: "smooth",
+			block: "nearest",
+		});
+	}
+
+	return (
+		<>
+			<button on_click={handleAdd}>Add</button>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<ul ref={listRef}>
+				{todos.map((todo) => (
+					<li key={todo.id}>{todo.text}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+
+let nextId = 0;
+let initialTodos = [];
+for (let i = 0; i < 20; i++) {
+	initialTodos.push({
+		id: nextId++,
+		text: "Todo #" + (i + 1),
+	});
+}
+```
+
+The issue is with these two lines:
+
+```js
+setTodos([...todos, newTodo]);
+listRef.current.lastChild.scrollIntoView();
+```
+
+In React, [state updates are queued.](/learn/queueing-a-series-of-state-updates) Usually, this is what you want. However, here it causes a problem because `setTodos` does not immediately update the DOM. So the time you scroll the list to its last element, the todo has not yet been added. This is why scrolling always "lags behind" by one item.
+
+To fix this issue, you can force React to update ("flush") the DOM synchronously. To do this, import `flushSync` from `react-dom` and **wrap the state update** into a `flushSync` call:
+
+```js
+flushSync(() => {
+	setTodos([...todos, newTodo]);
+});
+listRef.current.lastChild.scrollIntoView();
+```
+
+This will instruct React to update the DOM synchronously right after the code wrapped in `flushSync` executes. As a result, the last todo will already be in the DOM by the time you try to scroll to it:
+
+```js
+import { useState, useRef } from "react";
+import { flushSync } from "react-dom";
+
+export default function TodoList() {
+	const listRef = useRef(null);
+	const [text, setText] = useState("");
+	const [todos, setTodos] = useState(initialTodos);
+
+	function handleAdd() {
+		const newTodo = { id: nextId++, text: text };
+		flushSync(() => {
+			setText("");
+			setTodos([...todos, newTodo]);
+		});
+		listRef.current.lastChild.scrollIntoView({
+			behavior: "smooth",
+			block: "nearest",
+		});
+	}
+
+	return (
+		<>
+			<button on_click={handleAdd}>Add</button>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<ul ref={listRef}>
+				{todos.map((todo) => (
+					<li key={todo.id}>{todo.text}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+
+let nextId = 0;
+let initialTodos = [];
+for (let i = 0; i < 20; i++) {
+	initialTodos.push({
+		id: nextId++,
+		text: "Todo #" + (i + 1),
+	});
+}
+```
+
+</DeepDive>
+
+## Best practices for DOM manipulation with refs
+
+Refs are an escape hatch. You should only use them when you have to "step outside React". Common examples of this include managing focus, scroll position, or calling browser APIs that React does not expose.
+
+If you stick to non-destructive actions like focusing and scrolling, you shouldn't encounter any problems. However, if you try to **modify** the DOM manually, you can risk conflicting with the changes React is making.
+
+To illustrate this problem, this example includes a welcome message and two buttons. The first button toggles its presence using [conditional rendering](/learn/conditional-rendering) and [state](/learn/state-a-components-memory), as you would usually do in React. The second button uses the [`remove()` DOM API](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) to forcefully remove it from the DOM outside of React's control.
+
+Try pressing "Toggle with setState" a few times. The message should disappear and appear again. Then press "Remove from the DOM". This will forcefully remove it. Finally, press "Toggle with setState":
+
+```js
+import { useState, useRef } from "react";
+
+export default function Counter() {
+	const [show, setShow] = useState(true);
+	const ref = useRef(null);
+
+	return (
+		<div>
+			<button
+				on_click={() => {
+					setShow(!show);
+				}}
+			>
+				Toggle with setState
+			</button>
+			<button
+				on_click={() => {
+					ref.current.remove();
+				}}
+			>
+				Remove from the DOM
+			</button>
+			{show && <p ref={ref}>Hello world</p>}
+		</div>
+	);
+}
+```
+
+```css
+p,
+button {
+	display: block;
+	margin: 10px;
+}
+```
+
+After you've manually removed the DOM element, trying to use `setState` to show it again will lead to a crash. This is because you've changed the DOM, and React doesn't know how to continue managing it correctly.
+
+**Avoid changing DOM nodes managed by React.** Modifying, adding children to, or removing children from elements that are managed by React can lead to inconsistent visual results or crashes like above.
+
+However, this doesn't mean that you can't do it at all. It requires caution. **You can safely modify parts of the DOM that React has _no reason_ to update.** For example, if some `<div>` is always empty in the JSX, React won't have a reason to touch its children list. Therefore, it is safe to manually add or remove elements there.
+
+<Recap>
+
+-   Refs are a generic concept, but most often you'll use them to hold DOM elements.
+-   You instruct React to put a DOM node into `myRef.current` by passing `<div ref={myRef}>`.
+-   Usually, you will use refs for non-destructive actions like focusing, scrolling, or measuring DOM elements.
+-   A component doesn't expose its DOM nodes by default. You can opt into exposing a DOM node by using `forwardRef` and passing the second `ref` argument down to a specific node.
+-   Avoid changing DOM nodes managed by React.
+-   If you do modify DOM nodes managed by React, modify parts that React has no reason to update.
+
+</Recap>
+
+<Challenges>
+
+#### Play and pause the video
+
+In this example, the button toggles a state variable to switch between a playing and a paused state. However, in order to actually play or pause the video, toggling state is not enough. You also need to call [`play()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play) and [`pause()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/pause) on the DOM element for the `<video>`. Add a ref to it, and make the button work.
+
+```js
+import { useState, useRef } from "react";
+
+export default function VideoPlayer() {
+	const [isPlaying, setIsPlaying] = useState(false);
+
+	function handleClick() {
+		const nextIsPlaying = !isPlaying;
+		setIsPlaying(nextIsPlaying);
+	}
+
+	return (
+		<>
+			<button on_click={handleClick}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<video width="250">
+				<source
+					src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+					type="video/mp4"
+				/>
+			</video>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+For an extra challenge, keep the "Play" button in sync with whether the video is playing even if the user right-clicks the video and plays it using the built-in browser media controls. You might want to listen to `onPlay` and `onPause` on the video to do that.
+
+<Solution>
+
+Declare a ref and put it on the `<video>` element. Then call `ref.current.play()` and `ref.current.pause()` in the event handler depending on the next state.
+
+```js
+import { useState, useRef } from "react";
+
+export default function VideoPlayer() {
+	const [isPlaying, setIsPlaying] = useState(false);
+	const ref = useRef(null);
+
+	function handleClick() {
+		const nextIsPlaying = !isPlaying;
+		setIsPlaying(nextIsPlaying);
+
+		if (nextIsPlaying) {
+			ref.current.play();
+		} else {
+			ref.current.pause();
+		}
+	}
+
+	return (
+		<>
+			<button on_click={handleClick}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<video
+				width="250"
+				ref={ref}
+				onPlay={() => setIsPlaying(true)}
+				onPause={() => setIsPlaying(false)}
+			>
+				<source
+					src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+					type="video/mp4"
+				/>
+			</video>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+In order to handle the built-in browser controls, you can add `onPlay` and `onPause` handlers to the `<video>` element and call `setIsPlaying` from them. This way, if the user plays the video using the browser controls, the state will adjust accordingly.
+
+</Solution>
+
+#### Focus the search field
+
+Make it so that clicking the "Search" button puts focus into the field.
+
+```js
+export default function Page() {
+	return (
+		<>
+			<nav>
+				<button>Search</button>
+			</nav>
+			<input placeholder="Looking for something?" />
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+<Solution>
+
+Add a ref to the input, and call `focus()` on the DOM node to focus it:
+
+```js
+import { useRef } from "react";
+
+export default function Page() {
+	const inputRef = useRef(null);
+	return (
+		<>
+			<nav>
+				<button
+					on_click={() => {
+						inputRef.current.focus();
+					}}
+				>
+					Search
+				</button>
+			</nav>
+			<input ref={inputRef} placeholder="Looking for something?" />
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+</Solution>
+
+#### Scrolling an image carousel
+
+This image carousel has a "Next" button that switches the active image. Make the gallery scroll horizontally to the active image on click. You will want to call [`scrollIntoView()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView) on the DOM node of the active image:
+
+```js
+node.scrollIntoView({
+	behavior: "smooth",
+	block: "nearest",
+	inline: "center",
+});
+```
+
+<Hint>
+
+You don't need to have a ref to every image for this exercise. It should be enough to have a ref to the currently active image, or to the list itself. Use `flushSync` to ensure the DOM is updated _before_ you scroll.
+
+</Hint>
+
+```js
+import { useState } from "react";
+
+export default function CatFriends() {
+	const [index, setIndex] = useState(0);
+	return (
+		<>
+			<nav>
+				<button
+					on_click={() => {
+						if (index < catList.length - 1) {
+							setIndex(index + 1);
+						} else {
+							setIndex(0);
+						}
+					}}
+				>
+					Next
+				</button>
+			</nav>
+			<div>
+				<ul>
+					{catList.map((cat, i) => (
+						<li key={cat.id}>
+							<img
+								className={index === i ? "active" : ""}
+								src={cat.imageUrl}
+								alt={"Cat #" + cat.id}
+							/>
+						</li>
+					))}
+				</ul>
+			</div>
+		</>
+	);
+}
+
+const catList = [];
+for (let i = 0; i < 10; i++) {
+	catList.push({
+		id: i,
+		imageUrl: "https://placekitten.com/250/200?image=" + i,
+	});
+}
+```
+
+```css
+div {
+	width: 100%;
+	overflow: hidden;
+}
+
+nav {
+	text-align: center;
+}
+
+button {
+	margin: 0.25rem;
+}
+
+ul,
+li {
+	list-style: none;
+	white-space: nowrap;
+}
+
+li {
+	display: inline;
+	padding: 0.5rem;
+}
+
+img {
+	padding: 10px;
+	margin: -10px;
+	transition: background 0.2s linear;
+}
+
+.active {
+	background: rgba(0, 100, 150, 0.4);
+}
+```
+
+<Solution>
+
+You can declare a `selectedRef`, and then pass it conditionally only to the current image:
+
+```js
+<li ref={index === i ? selectedRef : null}>
+```
+
+When `index === i`, meaning that the image is the selected one, the `<li>` will receive the `selectedRef`. React will make sure that `selectedRef.current` always points at the correct DOM node.
+
+Note that the `flushSync` call is necessary to force React to update the DOM before the scroll. Otherwise, `selectedRef.current` would always point at the previously selected item.
+
+```js
+import { useRef, useState } from "react";
+import { flushSync } from "react-dom";
+
+export default function CatFriends() {
+	const selectedRef = useRef(null);
+	const [index, setIndex] = useState(0);
+
+	return (
+		<>
+			<nav>
+				<button
+					on_click={() => {
+						flushSync(() => {
+							if (index < catList.length - 1) {
+								setIndex(index + 1);
+							} else {
+								setIndex(0);
+							}
+						});
+						selectedRef.current.scrollIntoView({
+							behavior: "smooth",
+							block: "nearest",
+							inline: "center",
+						});
+					}}
+				>
+					Next
+				</button>
+			</nav>
+			<div>
+				<ul>
+					{catList.map((cat, i) => (
+						<li key={cat.id} ref={index === i ? selectedRef : null}>
+							<img
+								className={index === i ? "active" : ""}
+								src={cat.imageUrl}
+								alt={"Cat #" + cat.id}
+							/>
+						</li>
+					))}
+				</ul>
+			</div>
+		</>
+	);
+}
+
+const catList = [];
+for (let i = 0; i < 10; i++) {
+	catList.push({
+		id: i,
+		imageUrl: "https://placekitten.com/250/200?image=" + i,
+	});
+}
+```
+
+```css
+div {
+	width: 100%;
+	overflow: hidden;
+}
+
+nav {
+	text-align: center;
+}
+
+button {
+	margin: 0.25rem;
+}
+
+ul,
+li {
+	list-style: none;
+	white-space: nowrap;
+}
+
+li {
+	display: inline;
+	padding: 0.5rem;
+}
+
+img {
+	padding: 10px;
+	margin: -10px;
+	transition: background 0.2s linear;
+}
+
+.active {
+	background: rgba(0, 100, 150, 0.4);
+}
+```
+
+</Solution>
+
+#### Focus the search field with separate components
+
+Make it so that clicking the "Search" button puts focus into the field. Note that each component is defined in a separate file and shouldn't be moved out of it. How do you connect them together?
+
+<Hint>
+
+You'll need `forwardRef` to opt into exposing a DOM node from your own component like `SearchInput`.
+
+</Hint>
+
+```js
+import SearchButton from "./SearchButton.js";
+import SearchInput from "./SearchInput.js";
+
+export default function Page() {
+	return (
+		<>
+			<nav>
+				<SearchButton />
+			</nav>
+			<SearchInput />
+		</>
+	);
+}
+```
+
+```js
+export default function SearchButton() {
+	return <button>Search</button>;
+}
+```
+
+```js
+export default function SearchInput() {
+	return <input placeholder="Looking for something?" />;
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+<Solution>
+
+You'll need to add an `on_click` prop to the `SearchButton`, and make the `SearchButton` pass it down to the browser `<button>`. You'll also pass a ref down to `<SearchInput>`, which will forward it to the real `<input>` and populate it. Finally, in the click handler, you'll call `focus` on the DOM node stored inside that ref.
+
+```js
+import { useRef } from "react";
+import SearchButton from "./SearchButton.js";
+import SearchInput from "./SearchInput.js";
+
+export default function Page() {
+	const inputRef = useRef(null);
+	return (
+		<>
+			<nav>
+				<SearchButton
+					on_click={() => {
+						inputRef.current.focus();
+					}}
+				/>
+			</nav>
+			<SearchInput ref={inputRef} />
+		</>
+	);
+}
+```
+
+```js
+export default function SearchButton({ on_click }) {
+	return <button on_click={on_click}>Search</button>;
+}
+```
+
+```js
+import { forwardRef } from "react";
+
+export default forwardRef(function SearchInput(props, ref) {
+	return <input ref={ref} placeholder="Looking for something?" />;
+});
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/manually-register-a-client.md b/docs/src/learn/manually-register-a-client.md
new file mode 100644
index 000000000..9ee55b31d
--- /dev/null
+++ b/docs/src/learn/manually-register-a-client.md
@@ -0,0 +1,3 @@
+---
+title: Manually Register a Client 🚧
+---
diff --git a/docs/src/learn/passing-data-deeply-with-context.md b/docs/src/learn/passing-data-deeply-with-context.md
new file mode 100644
index 000000000..84d2c0c73
--- /dev/null
+++ b/docs/src/learn/passing-data-deeply-with-context.md
@@ -0,0 +1,1092 @@
+---
+title: Passing Data Deeply with Context 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Usually, you will pass information from a parent component to a child component via props. But passing props can become verbose and inconvenient if you have to pass them through many components in the middle, or if many components in your app need the same information. _Context_ lets the parent component make some information available to any component in the tree below it—no matter how deep—without passing it explicitly through props.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What "prop drilling" is
+    -   How to replace repetitive prop passing with context
+    -   Common use cases for context
+    -   Common alternatives to context
+
+## The problem with passing props
+
+[Passing props](/learn/passing-props-to-a-component) is a great way to explicitly pipe data through your UI tree to the components that use it.
+
+But passing props can become verbose and inconvenient when you need to pass some prop deeply through the tree, or if many components need the same prop. The nearest common ancestor could be far removed from the components that need data, and [lifting state up](/learn/sharing-state-between-components) that high can lead to a situation called "prop drilling".
+
+<!-- TODO: Diagram -->
+
+Wouldn't it be great if there were a way to "teleport" data to the components in the tree that need it without passing props? With React's context feature, there is!
+
+## Context: an alternative to passing props
+
+Context lets a parent component provide data to the entire tree below it. There are many uses for context. Here is one example. Consider this `Heading` component that accepts a `level` for its size:
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function Page() {
+	return (
+		<Section>
+			<Heading level={1}>Title</Heading>
+			<Heading level={2}>Heading</Heading>
+			<Heading level={3}>Sub-heading</Heading>
+			<Heading level={4}>Sub-sub-heading</Heading>
+			<Heading level={5}>Sub-sub-sub-heading</Heading>
+			<Heading level={6}>Sub-sub-sub-sub-heading</Heading>
+		</Section>
+	);
+}
+```
+
+```js
+export default function Section({ children }) {
+	return <section className="section">{children}</section>;
+}
+```
+
+```js
+export default function Heading({ level, children }) {
+	switch (level) {
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+```
+
+Let's say you want multiple headings within the same `Section` to always have the same size:
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function Page() {
+	return (
+		<Section>
+			<Heading level={1}>Title</Heading>
+			<Section>
+				<Heading level={2}>Heading</Heading>
+				<Heading level={2}>Heading</Heading>
+				<Heading level={2}>Heading</Heading>
+				<Section>
+					<Heading level={3}>Sub-heading</Heading>
+					<Heading level={3}>Sub-heading</Heading>
+					<Heading level={3}>Sub-heading</Heading>
+					<Section>
+						<Heading level={4}>Sub-sub-heading</Heading>
+						<Heading level={4}>Sub-sub-heading</Heading>
+						<Heading level={4}>Sub-sub-heading</Heading>
+					</Section>
+				</Section>
+			</Section>
+		</Section>
+	);
+}
+```
+
+```js
+export default function Section({ children }) {
+	return <section className="section">{children}</section>;
+}
+```
+
+```js
+export default function Heading({ level, children }) {
+	switch (level) {
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+```
+
+Currently, you pass the `level` prop to each `<Heading>` separately:
+
+```js
+<Section>
+	<Heading level={3}>About</Heading>
+	<Heading level={3}>Photos</Heading>
+	<Heading level={3}>Videos</Heading>
+</Section>
+```
+
+It would be nice if you could pass the `level` prop to the `<Section>` component instead and remove it from the `<Heading>`. This way you could enforce that all headings in the same section have the same size:
+
+```js
+<Section level={3}>
+	<Heading>About</Heading>
+	<Heading>Photos</Heading>
+	<Heading>Videos</Heading>
+</Section>
+```
+
+But how can the `<Heading>` component know the level of its closest `<Section>`? **That would require some way for a child to "ask" for data from somewhere above in the tree.**
+
+You can't do it with props alone. This is where context comes into play. You will do it in three steps:
+
+1. **Create** a context. (You can call it `LevelContext`, since it's for the heading level.)
+2. **Use** that context from the component that needs the data. (`Heading` will use `LevelContext`.)
+3. **Provide** that context from the component that specifies the data. (`Section` will provide `LevelContext`.)
+
+Context lets a parent--even a distant one!--provide some data to the entire tree inside of it.
+
+<!-- TODO: Diagram -->
+
+### Step 1: Create the context
+
+First, you need to create the context. You'll need to **export it from a file** so that your components can use it:
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function Page() {
+	return (
+		<Section>
+			<Heading level={1}>Title</Heading>
+			<Section>
+				<Heading level={2}>Heading</Heading>
+				<Heading level={2}>Heading</Heading>
+				<Heading level={2}>Heading</Heading>
+				<Section>
+					<Heading level={3}>Sub-heading</Heading>
+					<Heading level={3}>Sub-heading</Heading>
+					<Heading level={3}>Sub-heading</Heading>
+					<Section>
+						<Heading level={4}>Sub-sub-heading</Heading>
+						<Heading level={4}>Sub-sub-heading</Heading>
+						<Heading level={4}>Sub-sub-heading</Heading>
+					</Section>
+				</Section>
+			</Section>
+		</Section>
+	);
+}
+```
+
+```js
+export default function Section({ children }) {
+	return <section className="section">{children}</section>;
+}
+```
+
+```js
+export default function Heading({ level, children }) {
+	switch (level) {
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```js
+import { createContext } from "react";
+
+export const LevelContext = createContext(1);
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+```
+
+The only argument to `createContext` is the _default_ value. Here, `1` refers to the biggest heading level, but you could pass any kind of value (even an object). You will see the significance of the default value in the next step.
+
+### Step 2: Use the context
+
+Import the `useContext` Hook from React and your context:
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+```
+
+Currently, the `Heading` component reads `level` from props:
+
+```js
+export default function Heading({ level, children }) {
+	// ...
+}
+```
+
+Instead, remove the `level` prop and read the value from the context you just imported, `LevelContext`:
+
+```js
+export default function Heading({ children }) {
+	const level = useContext(LevelContext);
+	// ...
+}
+```
+
+`useContext` is a Hook. Just like `useState` and `useReducer`, you can only call a Hook immediately inside a React component (not inside loops or conditions). **`useContext` tells React that the `Heading` component wants to read the `LevelContext`.**
+
+Now that the `Heading` component doesn't have a `level` prop, you don't need to pass the level prop to `Heading` in your JSX like this anymore:
+
+```js
+<Section>
+	<Heading level={4}>Sub-sub-heading</Heading>
+	<Heading level={4}>Sub-sub-heading</Heading>
+	<Heading level={4}>Sub-sub-heading</Heading>
+</Section>
+```
+
+Update the JSX so that it's the `Section` that receives it instead:
+
+```jsx
+<Section level={4}>
+	<Heading>Sub-sub-heading</Heading>
+	<Heading>Sub-sub-heading</Heading>
+	<Heading>Sub-sub-heading</Heading>
+</Section>
+```
+
+As a reminder, this is the markup that you were trying to get working:
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function Page() {
+	return (
+		<Section level={1}>
+			<Heading>Title</Heading>
+			<Section level={2}>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Section level={3}>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Section level={4}>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+					</Section>
+				</Section>
+			</Section>
+		</Section>
+	);
+}
+```
+
+```js
+export default function Section({ children }) {
+	return <section className="section">{children}</section>;
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Heading({ children }) {
+	const level = useContext(LevelContext);
+	switch (level) {
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```js
+import { createContext } from "react";
+
+export const LevelContext = createContext(1);
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+```
+
+Notice this example doesn't quite work, yet! All the headings have the same size because **even though you're _using_ the context, you have not _provided_ it yet.** React doesn't know where to get it!
+
+If you don't provide the context, React will use the default value you've specified in the previous step. In this example, you specified `1` as the argument to `createContext`, so `useContext(LevelContext)` returns `1`, setting all those headings to `<h1>`. Let's fix this problem by having each `Section` provide its own context.
+
+### Step 3: Provide the context
+
+The `Section` component currently renders its children:
+
+```js
+export default function Section({ children }) {
+	return <section className="section">{children}</section>;
+}
+```
+
+**Wrap them with a context provider** to provide the `LevelContext` to them:
+
+```js
+import { LevelContext } from "./LevelContext.js";
+
+export default function Section({ level, children }) {
+	return (
+		<section className="section">
+			<LevelContext.Provider value={level}>
+				{children}
+			</LevelContext.Provider>
+		</section>
+	);
+}
+```
+
+This tells React: "if any component inside this `<Section>` asks for `LevelContext`, give them this `level`." The component will use the value of the nearest `<LevelContext.Provider>` in the UI tree above it.
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function Page() {
+	return (
+		<Section level={1}>
+			<Heading>Title</Heading>
+			<Section level={2}>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Section level={3}>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Section level={4}>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+					</Section>
+				</Section>
+			</Section>
+		</Section>
+	);
+}
+```
+
+```js
+import { LevelContext } from "./LevelContext.js";
+
+export default function Section({ level, children }) {
+	return (
+		<section className="section">
+			<LevelContext.Provider value={level}>
+				{children}
+			</LevelContext.Provider>
+		</section>
+	);
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Heading({ children }) {
+	const level = useContext(LevelContext);
+	switch (level) {
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```js
+import { createContext } from "react";
+
+export const LevelContext = createContext(1);
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+```
+
+It's the same result as the original code, but you did not need to pass the `level` prop to each `Heading` component! Instead, it "figures out" its heading level by asking the closest `Section` above:
+
+1. You pass a `level` prop to the `<Section>`.
+2. `Section` wraps its children into `<LevelContext.Provider value={level}>`.
+3. `Heading` asks the closest value of `LevelContext` above with `useContext(LevelContext)`.
+
+## Using and providing context from the same component
+
+Currently, you still have to specify each section's `level` manually:
+
+```js
+export default function Page() {
+  return (
+    <Section level={1}>
+      ...
+      <Section level={2}>
+        ...
+        <Section level={3}>
+          ...
+```
+
+Since context lets you read information from a component above, each `Section` could read the `level` from the `Section` above, and pass `level + 1` down automatically. Here is how you could do it:
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Section({ children }) {
+	const level = useContext(LevelContext);
+	return (
+		<section className="section">
+			<LevelContext.Provider value={level + 1}>
+				{children}
+			</LevelContext.Provider>
+		</section>
+	);
+}
+```
+
+With this change, you don't need to pass the `level` prop _either_ to the `<Section>` or to the `<Heading>`:
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function Page() {
+	return (
+		<Section>
+			<Heading>Title</Heading>
+			<Section>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Section>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Section>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+					</Section>
+				</Section>
+			</Section>
+		</Section>
+	);
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Section({ children }) {
+	const level = useContext(LevelContext);
+	return (
+		<section className="section">
+			<LevelContext.Provider value={level + 1}>
+				{children}
+			</LevelContext.Provider>
+		</section>
+	);
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Heading({ children }) {
+	const level = useContext(LevelContext);
+	switch (level) {
+		case 0:
+			throw Error("Heading must be inside a Section!");
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```js
+import { createContext } from "react";
+
+export const LevelContext = createContext(0);
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+```
+
+Now both `Heading` and `Section` read the `LevelContext` to figure out how "deep" they are. And the `Section` wraps its children into the `LevelContext` to specify that anything inside of it is at a "deeper" level.
+
+<Note>
+
+This example uses heading levels because they show visually how nested components can override context. But context is useful for many other use cases too. You can pass down any information needed by the entire subtree: the current color theme, the currently logged in user, and so on.
+
+</Note>
+
+## Context passes through intermediate components
+
+You can insert as many components as you like between the component that provides context and the one that uses it. This includes both built-in components like `<div>` and components you might build yourself.
+
+In this example, the same `Post` component (with a dashed border) is rendered at two different nesting levels. Notice that the `<Heading>` inside of it gets its level automatically from the closest `<Section>`:
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function ProfilePage() {
+	return (
+		<Section>
+			<Heading>My Profile</Heading>
+			<Post title="Hello traveller!" body="Read about my adventures." />
+			<AllPosts />
+		</Section>
+	);
+}
+
+function AllPosts() {
+	return (
+		<Section>
+			<Heading>Posts</Heading>
+			<RecentPosts />
+		</Section>
+	);
+}
+
+function RecentPosts() {
+	return (
+		<Section>
+			<Heading>Recent Posts</Heading>
+			<Post title="Flavors of Lisbon" body="...those pastéis de nata!" />
+			<Post
+				title="Buenos Aires in the rhythm of tango"
+				body="I loved it!"
+			/>
+		</Section>
+	);
+}
+
+function Post({ title, body }) {
+	return (
+		<Section isFancy={true}>
+			<Heading>{title}</Heading>
+			<p>
+				<i>{body}</i>
+			</p>
+		</Section>
+	);
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Section({ children, isFancy }) {
+	const level = useContext(LevelContext);
+	return (
+		<section className={"section " + (isFancy ? "fancy" : "")}>
+			<LevelContext.Provider value={level + 1}>
+				{children}
+			</LevelContext.Provider>
+		</section>
+	);
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Heading({ children }) {
+	const level = useContext(LevelContext);
+	switch (level) {
+		case 0:
+			throw Error("Heading must be inside a Section!");
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```js
+import { createContext } from "react";
+
+export const LevelContext = createContext(0);
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+
+.fancy {
+	border: 4px dashed pink;
+}
+```
+
+You didn't do anything special for this to work. A `Section` specifies the context for the tree inside it, so you can insert a `<Heading>` anywhere, and it will have the correct size. Try it in the sandbox above!
+
+**Context lets you write components that "adapt to their surroundings" and display themselves differently depending on _where_ (or, in other words, _in which context_) they are being rendered.**
+
+How context works might remind you of [CSS property inheritance.](https://developer.mozilla.org/en-US/docs/Web/CSS/inheritance) In CSS, you can specify `color: blue` for a `<div>`, and any DOM node inside of it, no matter how deep, will inherit that color unless some other DOM node in the middle overrides it with `color: green`. Similarly, in React, the only way to override some context coming from above is to wrap children into a context provider with a different value.
+
+In CSS, different properties like `color` and `background-color` don't override each other. You can set all `<div>`'s `color` to red without impacting `background-color`. Similarly, **different React contexts don't override each other.** Each context that you make with `createContext()` is completely separate from other ones, and ties together components using and providing _that particular_ context. One component may use or provide many different contexts without a problem.
+
+## Before you use context
+
+Context is very tempting to use! However, this also means it's too easy to overuse it. **Just because you need to pass some props several levels deep doesn't mean you should put that information into context.**
+
+Here's a few alternatives you should consider before using context:
+
+1. **Start by [passing props.](/learn/passing-props-to-a-component)** If your components are not trivial, it's not unusual to pass a dozen props down through a dozen components. It may feel like a slog, but it makes it very clear which components use which data! The person maintaining your code will be glad you've made the data flow explicit with props.
+2. **Extract components and [pass JSX as `children`](/learn/passing-props-to-a-component#passing-jsx-as-children) to them.** If you pass some data through many layers of intermediate components that don't use that data (and only pass it further down), this often means that you forgot to extract some components along the way. For example, maybe you pass data props like `posts` to visual components that don't use them directly, like `<Layout posts={posts} />`. Instead, make `Layout` take `children` as a prop, and render `<Layout><Posts posts={posts} /></Layout>`. This reduces the number of layers between the component specifying the data and the one that needs it.
+
+If neither of these approaches works well for you, consider context.
+
+## Use cases for context
+
+-   **Theming:** If your app lets the user change its appearance (e.g. dark mode), you can put a context provider at the top of your app, and use that context in components that need to adjust their visual look.
+-   **Current account:** Many components might need to know the currently logged in user. Putting it in context makes it convenient to read it anywhere in the tree. Some apps also let you operate multiple accounts at the same time (e.g. to leave a comment as a different user). In those cases, it can be convenient to wrap a part of the UI into a nested provider with a different current account value.
+-   **Routing:** Most routing solutions use context internally to hold the current route. This is how every link "knows" whether it's active or not. If you build your own router, you might want to do it too.
+-   **Managing state:** As your app grows, you might end up with a lot of state closer to the top of your app. Many distant components below may want to change it. It is common to [use a reducer together with context](/learn/scaling-up-with-reducer-and-context) to manage complex state and pass it down to distant components without too much hassle.
+
+Context is not limited to static values. If you pass a different value on the next render, React will update all the components reading it below! This is why context is often used in combination with state.
+
+In general, if some information is needed by distant components in different parts of the tree, it's a good indication that context will help you.
+
+<Recap>
+
+-   Context lets a component provide some information to the entire tree below it.
+-   To pass context:
+    1. Create and export it with `export const MyContext = createContext(defaultValue)`.
+    2. Pass it to the `useContext(MyContext)` Hook to read it in any child component, no matter how deep.
+    3. Wrap children into `<MyContext.Provider value={...}>` to provide it from a parent.
+-   Context passes through any components in the middle.
+-   Context lets you write components that "adapt to their surroundings".
+-   Before you use context, try passing props or passing JSX as `children`.
+
+</Recap>
+
+<Challenges>
+
+#### Replace prop drilling with context
+
+In this example, toggling the checkbox changes the `imageSize` prop passed to each `<PlaceImage>`. The checkbox state is held in the top-level `App` component, but each `<PlaceImage>` needs to be aware of it.
+
+Currently, `App` passes `imageSize` to `List`, which passes it to each `Place`, which passes it to the `PlaceImage`. Remove the `imageSize` prop, and instead pass it from the `App` component directly to `PlaceImage`.
+
+You can declare context in `Context.js`.
+
+```js
+import { useState } from "react";
+import { places } from "./data.js";
+import { getImageUrl } from "./utils.js";
+
+export default function App() {
+	const [isLarge, setIsLarge] = useState(false);
+	const imageSize = isLarge ? 150 : 100;
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={isLarge}
+					onChange={(e) => {
+						setIsLarge(e.target.checked);
+					}}
+				/>
+				Use large images
+			</label>
+			<hr />
+			<List imageSize={imageSize} />
+		</>
+	);
+}
+
+function List({ imageSize }) {
+	const listItems = places.map((place) => (
+		<li key={place.id}>
+			<Place place={place} imageSize={imageSize} />
+		</li>
+	));
+	return <ul>{listItems}</ul>;
+}
+
+function Place({ place, imageSize }) {
+	return (
+		<>
+			<PlaceImage place={place} imageSize={imageSize} />
+			<p>
+				<b>{place.name}</b>
+				{": " + place.description}
+			</p>
+		</>
+	);
+}
+
+function PlaceImage({ place, imageSize }) {
+	return (
+		<img
+			src={getImageUrl(place)}
+			alt={place.name}
+			width={imageSize}
+			height={imageSize}
+		/>
+	);
+}
+```
+
+```js
+
+```
+
+```js
+export const places = [
+	{
+		id: 0,
+		name: "Bo-Kaap in Cape Town, South Africa",
+		description:
+			"The tradition of choosing bright colors for houses began in the late 20th century.",
+		imageId: "K9HVAGH",
+	},
+	{
+		id: 1,
+		name: "Rainbow Village in Taichung, Taiwan",
+		description:
+			"To save the houses from demolition, Huang Yung-Fu, a local resident, painted all 1,200 of them in 1924.",
+		imageId: "9EAYZrt",
+	},
+	{
+		id: 2,
+		name: "Macromural de Pachuca, Mexico",
+		description:
+			"One of the largest murals in the world covering homes in a hillside neighborhood.",
+		imageId: "DgXHVwu",
+	},
+	{
+		id: 3,
+		name: "Selarón Staircase in Rio de Janeiro, Brazil",
+		description:
+			'This landmark was created by Jorge Selarón, a Chilean-born artist, as a "tribute to the Brazilian people."',
+		imageId: "aeO3rpI",
+	},
+	{
+		id: 4,
+		name: "Burano, Italy",
+		description:
+			"The houses are painted following a specific color system dating back to 16th century.",
+		imageId: "kxsph5C",
+	},
+	{
+		id: 5,
+		name: "Chefchaouen, Marocco",
+		description:
+			"There are a few theories on why the houses are painted blue, including that the color repells mosquitos or that it symbolizes sky and heaven.",
+		imageId: "rTqKo46",
+	},
+	{
+		id: 6,
+		name: "Gamcheon Culture Village in Busan, South Korea",
+		description:
+			"In 2009, the village was converted into a cultural hub by painting the houses and featuring exhibitions and art installations.",
+		imageId: "ZfQOOzf",
+	},
+];
+```
+
+```js
+export function getImageUrl(place) {
+	return "https://i.imgur.com/" + place.imageId + "l.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+```
+
+<Solution>
+
+Remove `imageSize` prop from all the components.
+
+Create and export `ImageSizeContext` from `Context.js`. Then wrap the List into `<ImageSizeContext.Provider value={imageSize}>` to pass the value down, and `useContext(ImageSizeContext)` to read it in the `PlaceImage`:
+
+```js
+import { useState, useContext } from "react";
+import { places } from "./data.js";
+import { getImageUrl } from "./utils.js";
+import { ImageSizeContext } from "./Context.js";
+
+export default function App() {
+	const [isLarge, setIsLarge] = useState(false);
+	const imageSize = isLarge ? 150 : 100;
+	return (
+		<ImageSizeContext.Provider value={imageSize}>
+			<label>
+				<input
+					type="checkbox"
+					checked={isLarge}
+					onChange={(e) => {
+						setIsLarge(e.target.checked);
+					}}
+				/>
+				Use large images
+			</label>
+			<hr />
+			<List />
+		</ImageSizeContext.Provider>
+	);
+}
+
+function List() {
+	const listItems = places.map((place) => (
+		<li key={place.id}>
+			<Place place={place} />
+		</li>
+	));
+	return <ul>{listItems}</ul>;
+}
+
+function Place({ place }) {
+	return (
+		<>
+			<PlaceImage place={place} />
+			<p>
+				<b>{place.name}</b>
+				{": " + place.description}
+			</p>
+		</>
+	);
+}
+
+function PlaceImage({ place }) {
+	const imageSize = useContext(ImageSizeContext);
+	return (
+		<img
+			src={getImageUrl(place)}
+			alt={place.name}
+			width={imageSize}
+			height={imageSize}
+		/>
+	);
+}
+```
+
+```js
+import { createContext } from "react";
+
+export const ImageSizeContext = createContext(500);
+```
+
+```js
+export const places = [
+	{
+		id: 0,
+		name: "Bo-Kaap in Cape Town, South Africa",
+		description:
+			"The tradition of choosing bright colors for houses began in the late 20th century.",
+		imageId: "K9HVAGH",
+	},
+	{
+		id: 1,
+		name: "Rainbow Village in Taichung, Taiwan",
+		description:
+			"To save the houses from demolition, Huang Yung-Fu, a local resident, painted all 1,200 of them in 1924.",
+		imageId: "9EAYZrt",
+	},
+	{
+		id: 2,
+		name: "Macromural de Pachuca, Mexico",
+		description:
+			"One of the largest murals in the world covering homes in a hillside neighborhood.",
+		imageId: "DgXHVwu",
+	},
+	{
+		id: 3,
+		name: "Selarón Staircase in Rio de Janeiro, Brazil",
+		description:
+			'This landmark was created by Jorge Selarón, a Chilean-born artist, as a "tribute to the Brazilian people".',
+		imageId: "aeO3rpI",
+	},
+	{
+		id: 4,
+		name: "Burano, Italy",
+		description:
+			"The houses are painted following a specific color system dating back to 16th century.",
+		imageId: "kxsph5C",
+	},
+	{
+		id: 5,
+		name: "Chefchaouen, Marocco",
+		description:
+			"There are a few theories on why the houses are painted blue, including that the color repells mosquitos or that it symbolizes sky and heaven.",
+		imageId: "rTqKo46",
+	},
+	{
+		id: 6,
+		name: "Gamcheon Culture Village in Busan, South Korea",
+		description:
+			"In 2009, the village was converted into a cultural hub by painting the houses and featuring exhibitions and art installations.",
+		imageId: "ZfQOOzf",
+	},
+];
+```
+
+```js
+export function getImageUrl(place) {
+	return "https://i.imgur.com/" + place.imageId + "l.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+```
+
+Note how components in the middle don't need to pass `imageSize` anymore.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/passing-props-to-a-component.md b/docs/src/learn/passing-props-to-a-component.md
new file mode 100644
index 000000000..a73f09ed2
--- /dev/null
+++ b/docs/src/learn/passing-props-to-a-component.md
@@ -0,0 +1,1080 @@
+---
+title: Passing Props to a Component 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+React components use _props_ to communicate with each other. Every parent component can pass some information to its child components by giving them props. Props might remind you of HTML attributes, but you can pass any JavaScript value through them, including objects, arrays, and functions.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to pass props to a component
+    -   How to read props from a component
+    -   How to specify default values for props
+    -   How to pass some JSX to a component
+    -   How props change over time
+
+## Familiar props
+
+Props are the information that you pass to a JSX tag. For example, `className`, `src`, `alt`, `width`, and `height` are some of the props you can pass to an `<img>`:
+
+```js
+function Avatar() {
+	return (
+		<img
+			className="avatar"
+			src="https://i.imgur.com/1bX5QH6.jpg"
+			alt="Lin Lanying"
+			width={100}
+			height={100}
+		/>
+	);
+}
+
+export default function Profile() {
+	return <Avatar />;
+}
+```
+
+```css
+body {
+	min-height: 120px;
+}
+.avatar {
+	margin: 20px;
+	border-radius: 50%;
+}
+```
+
+The props you can pass to an `<img>` tag are predefined (ReactDOM conforms to [the HTML standard](https://www.w3.org/TR/html52/semantics-embedded-content.html#the-img-element)). But you can pass any props to _your own_ components, such as `<Avatar>`, to customize them. Here's how!
+
+## Passing props to a component
+
+In this code, the `Profile` component isn't passing any props to its child component, `Avatar`:
+
+```js
+export default function Profile() {
+	return <Avatar />;
+}
+```
+
+You can give `Avatar` some props in two steps.
+
+### Step 1: Pass props to the child component
+
+First, pass some props to `Avatar`. For example, let's pass two props: `person` (an object), and `size` (a number):
+
+```js
+export default function Profile() {
+	return (
+		<Avatar
+			person={{ name: "Lin Lanying", imageId: "1bX5QH6" }}
+			size={100}
+		/>
+	);
+}
+```
+
+<Note>
+
+If double curly braces after `person=` confuse you, recall [they're merely an object](/learn/javascript-in-jsx-with-curly-braces#using-double-curlies-css-and-other-objects-in-jsx) inside the JSX curlies.
+
+</Note>
+
+Now you can read these props inside the `Avatar` component.
+
+### Step 2: Read props inside the child component
+
+You can read these props by listing their names `person, size` separated by the commas inside `({` and `})` directly after `function Avatar`. This lets you use them inside the `Avatar` code, like you would with a variable.
+
+```js
+function Avatar({ person, size }) {
+	// person and size are available here
+}
+```
+
+Add some logic to `Avatar` that uses the `person` and `size` props for rendering, and you're done.
+
+Now you can configure `Avatar` to render in many different ways with different props. Try tweaking the values!
+
+```js
+import { getImageUrl } from "./utils.js";
+
+function Avatar({ person, size }) {
+	return (
+		<img
+			className="avatar"
+			src={getImageUrl(person)}
+			alt={person.name}
+			width={size}
+			height={size}
+		/>
+	);
+}
+
+export default function Profile() {
+	return (
+		<div>
+			<Avatar
+				size={100}
+				person={{
+					name: "Katsuko Saruhashi",
+					imageId: "YfeOqp2",
+				}}
+			/>
+			<Avatar
+				size={80}
+				person={{
+					name: "Aklilu Lemma",
+					imageId: "OKS67lh",
+				}}
+			/>
+			<Avatar
+				size={50}
+				person={{
+					name: "Lin Lanying",
+					imageId: "1bX5QH6",
+				}}
+			/>
+		</div>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size = "s") {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+body {
+	min-height: 120px;
+}
+.avatar {
+	margin: 10px;
+	border-radius: 50%;
+}
+```
+
+Props let you think about parent and child components independently. For example, you can change the `person` or the `size` props inside `Profile` without having to think about how `Avatar` uses them. Similarly, you can change how the `Avatar` uses these props, without looking at the `Profile`.
+
+You can think of props like "knobs" that you can adjust. They serve the same role as arguments serve for functions—in fact, props _are_ the only argument to your component! React component functions accept a single argument, a `props` object:
+
+```js
+function Avatar(props) {
+	let person = props.person;
+	let size = props.size;
+	// ...
+}
+```
+
+Usually you don't need the whole `props` object itself, so you destructure it into individual props.
+
+<Pitfall>
+
+**Don't miss the pair of `{` and `}` curlies** inside of `(` and `)` when declaring props:
+
+```js
+function Avatar({ person, size }) {
+	// ...
+}
+```
+
+This syntax is called ["destructuring"](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Unpacking_fields_from_objects_passed_as_a_function_parameter) and is equivalent to reading properties from a function parameter:
+
+```js
+function Avatar(props) {
+	let person = props.person;
+	let size = props.size;
+	// ...
+}
+```
+
+</Pitfall>
+
+## Specifying a default value for a prop
+
+If you want to give a prop a default value to fall back on when no value is specified, you can do it with the destructuring by putting `=` and the default value right after the parameter:
+
+```js
+function Avatar({ person, size = 100 }) {
+	// ...
+}
+```
+
+Now, if `<Avatar person={...} />` is rendered with no `size` prop, the `size` will be set to `100`.
+
+The default value is only used if the `size` prop is missing or if you pass `size={undefined}`. But if you pass `size={null}` or `size={0}`, the default value will **not** be used.
+
+## Forwarding props with the JSX spread syntax
+
+Sometimes, passing props gets very repetitive:
+
+```js
+function Profile({ person, size, isSepia, thickBorder }) {
+	return (
+		<div className="card">
+			<Avatar
+				person={person}
+				size={size}
+				isSepia={isSepia}
+				thickBorder={thickBorder}
+			/>
+		</div>
+	);
+}
+```
+
+There's nothing wrong with repetitive code—it can be more legible. But at times you may value conciseness. Some components forward all of their props to their children, like how this `Profile` does with `Avatar`. Because they don't use any of their props directly, it can make sense to use a more concise "spread" syntax:
+
+```js
+function Profile(props) {
+	return (
+		<div className="card">
+			<Avatar {...props} />
+		</div>
+	);
+}
+```
+
+This forwards all of `Profile`'s props to the `Avatar` without listing each of their names.
+
+**Use spread syntax with restraint.** If you're using it in every other component, something is wrong. Often, it indicates that you should split your components and pass children as JSX. More on that next!
+
+## Passing JSX as children
+
+It is common to nest built-in browser tags:
+
+```js
+<div>
+	<img />
+</div>
+```
+
+Sometimes you'll want to nest your own components the same way:
+
+```js
+<Card>
+	<Avatar />
+</Card>
+```
+
+When you nest content inside a JSX tag, the parent component will receive that content in a prop called `children`. For example, the `Card` component below will receive a `children` prop set to `<Avatar />` and render it in a wrapper div:
+
+```js
+import Avatar from "./Avatar.js";
+
+function Card({ children }) {
+	return <div className="card">{children}</div>;
+}
+
+export default function Profile() {
+	return (
+		<Card>
+			<Avatar
+				size={100}
+				person={{
+					name: "Katsuko Saruhashi",
+					imageId: "YfeOqp2",
+				}}
+			/>
+		</Card>
+	);
+}
+```
+
+```js
+import { getImageUrl } from "./utils.js";
+
+export default function Avatar({ person, size }) {
+	return (
+		<img
+			className="avatar"
+			src={getImageUrl(person)}
+			alt={person.name}
+			width={size}
+			height={size}
+		/>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size = "s") {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+.card {
+	width: fit-content;
+	margin: 5px;
+	padding: 5px;
+	font-size: 20px;
+	text-align: center;
+	border: 1px solid #aaa;
+	border-radius: 20px;
+	background: #fff;
+}
+.avatar {
+	margin: 20px;
+	border-radius: 50%;
+}
+```
+
+Try replacing the `<Avatar>` inside `<Card>` with some text to see how the `Card` component can wrap any nested content. It doesn't need to "know" what's being rendered inside of it. You will see this flexible pattern in many places.
+
+You can think of a component with a `children` prop as having a "hole" that can be "filled in" by its parent components with arbitrary JSX. You will often use the `children` prop for visual wrappers: panels, grids, etc.
+
+<Illustration src="/images/docs/illustrations/i_children-prop.png" alt='A puzzle-like Card tile with a slot for "children" pieces like text and Avatar' />
+
+## How props change over time
+
+The `Clock` component below receives two props from its parent component: `color` and `time`. (The parent component's code is omitted because it uses [state](/learn/state-a-components-memory), which we won't dive into just yet.)
+
+Try changing the color in the select box below:
+
+```js
+export default function Clock({ color, time }) {
+	return <h1 style={{ color: color }}>{time}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import Clock from "./Clock.js";
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+
+export default function App() {
+	const time = useTime();
+	const [color, setColor] = useState("lightcoral");
+	return (
+		<div>
+			<p>
+				Pick a color:{" "}
+				<select
+					value={color}
+					onChange={(e) => setColor(e.target.value)}
+				>
+					<option value="lightcoral">lightcoral</option>
+					<option value="midnightblue">midnightblue</option>
+					<option value="rebeccapurple">rebeccapurple</option>
+				</select>
+			</p>
+			<Clock color={color} time={time.toLocaleTimeString()} />
+		</div>
+	);
+}
+```
+
+This example illustrates that **a component may receive different props over time.** Props are not always static! Here, the `time` prop changes every second, and the `color` prop changes when you select another color. Props reflect a component's data at any point in time, rather than only in the beginning.
+
+However, props are [immutable](https://en.wikipedia.org/wiki/Immutable_object)—a term from computer science meaning "unchangeable". When a component needs to change its props (for example, in response to a user interaction or new data), it will have to "ask" its parent component to pass it _different props_—a new object! Its old props will then be cast aside, and eventually the JavaScript engine will reclaim the memory taken by them.
+
+**Don't try to "change props".** When you need to respond to the user input (like changing the selected color), you will need to "set state", which you can learn about in [State: A Component's Memory.](/learn/state-a-components-memory)
+
+<Recap>
+
+-   To pass props, add them to the JSX, just like you would with HTML attributes.
+-   To read props, use the `function Avatar({ person, size })` destructuring syntax.
+-   You can specify a default value like `size = 100`, which is used for missing and `undefined` props.
+-   You can forward all props with `<Avatar {...props} />` JSX spread syntax, but don't overuse it!
+-   Nested JSX like `<Card><Avatar /></Card>` will appear as `Card` component's `children` prop.
+-   Props are read-only snapshots in time: every render receives a new version of props.
+-   You can't change props. When you need interactivity, you'll need to set state.
+
+</Recap>
+
+<Challenges>
+
+#### Extract a component
+
+This `Gallery` component contains some very similar markup for two profiles. Extract a `Profile` component out of it to reduce the duplication. You'll need to choose what props to pass to it.
+
+```js
+import { getImageUrl } from "./utils.js";
+
+export default function Gallery() {
+	return (
+		<div>
+			<h1>Notable Scientists</h1>
+			<section className="profile">
+				<h2>Maria Skłodowska-Curie</h2>
+				<img
+					className="avatar"
+					src={getImageUrl("szV5sdG")}
+					alt="Maria Skłodowska-Curie"
+					width={70}
+					height={70}
+				/>
+				<ul>
+					<li>
+						<b>Profession: </b>
+						physicist and chemist
+					</li>
+					<li>
+						<b>Awards: 4 </b>
+						(Nobel Prize in Physics, Nobel Prize in Chemistry, Davy Medal,
+						Matteucci Medal)
+					</li>
+					<li>
+						<b>Discovered: </b>
+						polonium (element)
+					</li>
+				</ul>
+			</section>
+			<section className="profile">
+				<h2>Katsuko Saruhashi</h2>
+				<img
+					className="avatar"
+					src={getImageUrl("YfeOqp2")}
+					alt="Katsuko Saruhashi"
+					width={70}
+					height={70}
+				/>
+				<ul>
+					<li>
+						<b>Profession: </b>
+						geochemist
+					</li>
+					<li>
+						<b>Awards: 2 </b>
+						(Miyake Prize for geochemistry, Tanaka Prize)
+					</li>
+					<li>
+						<b>Discovered: </b>a method for measuring carbon dioxide
+						in seawater
+					</li>
+				</ul>
+			</section>
+		</div>
+	);
+}
+```
+
+```js
+export function getImageUrl(imageId, size = "s") {
+	return "https://i.imgur.com/" + imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 5px;
+	border-radius: 50%;
+	min-height: 70px;
+}
+.profile {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	margin-top: 20px;
+	padding: 10px;
+}
+h1,
+h2 {
+	margin: 5px;
+}
+h1 {
+	margin-bottom: 10px;
+}
+ul {
+	padding: 0px 10px 0px 20px;
+}
+li {
+	margin: 5px;
+}
+```
+
+<Hint>
+
+Start by extracting the markup for one of the scientists. Then find the pieces that don't match it in the second example, and make them configurable by props.
+
+</Hint>
+
+<Solution>
+
+In this solution, the `Profile` component accepts multiple props: `imageId` (a string), `name` (a string), `profession` (a string), `awards` (an array of strings), `discovery` (a string), and `imageSize` (a number).
+
+Note that the `imageSize` prop has a default value, which is why we don't pass it to the component.
+
+```js
+import { getImageUrl } from "./utils.js";
+
+function Profile({
+	imageId,
+	name,
+	profession,
+	awards,
+	discovery,
+	imageSize = 70,
+}) {
+	return (
+		<section className="profile">
+			<h2>{name}</h2>
+			<img
+				className="avatar"
+				src={getImageUrl(imageId)}
+				alt={name}
+				width={imageSize}
+				height={imageSize}
+			/>
+			<ul>
+				<li>
+					<b>Profession:</b> {profession}
+				</li>
+				<li>
+					<b>Awards: {awards.length} </b>({awards.join(", ")})
+				</li>
+				<li>
+					<b>Discovered: </b>
+					{discovery}
+				</li>
+			</ul>
+		</section>
+	);
+}
+
+export default function Gallery() {
+	return (
+		<div>
+			<h1>Notable Scientists</h1>
+			<Profile
+				imageId="szV5sdG"
+				name="Maria Skłodowska-Curie"
+				profession="physicist and chemist"
+				discovery="polonium (chemical element)"
+				awards={[
+					"Nobel Prize in Physics",
+					"Nobel Prize in Chemistry",
+					"Davy Medal",
+					"Matteucci Medal",
+				]}
+			/>
+			<Profile
+				imageId="YfeOqp2"
+				name="Katsuko Saruhashi"
+				profession="geochemist"
+				discovery="a method for measuring carbon dioxide in seawater"
+				awards={["Miyake Prize for geochemistry", "Tanaka Prize"]}
+			/>
+		</div>
+	);
+}
+```
+
+```js
+export function getImageUrl(imageId, size = "s") {
+	return "https://i.imgur.com/" + imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 5px;
+	border-radius: 50%;
+	min-height: 70px;
+}
+.profile {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	margin-top: 20px;
+	padding: 10px;
+}
+h1,
+h2 {
+	margin: 5px;
+}
+h1 {
+	margin-bottom: 10px;
+}
+ul {
+	padding: 0px 10px 0px 20px;
+}
+li {
+	margin: 5px;
+}
+```
+
+Note how you don't need a separate `awardCount` prop if `awards` is an array. Then you can use `awards.length` to count the number of awards. Remember that props can take any values, and that includes arrays too!
+
+Another solution, which is more similar to the earlier examples on this page, is to group all information about a person in a single object, and pass that object as one prop:
+
+```js
+import { getImageUrl } from "./utils.js";
+
+function Profile({ person, imageSize = 70 }) {
+	const imageSrc = getImageUrl(person);
+
+	return (
+		<section className="profile">
+			<h2>{person.name}</h2>
+			<img
+				className="avatar"
+				src={imageSrc}
+				alt={person.name}
+				width={imageSize}
+				height={imageSize}
+			/>
+			<ul>
+				<li>
+					<b>Profession:</b> {person.profession}
+				</li>
+				<li>
+					<b>Awards: {person.awards.length} </b>(
+					{person.awards.join(", ")})
+				</li>
+				<li>
+					<b>Discovered: </b>
+					{person.discovery}
+				</li>
+			</ul>
+		</section>
+	);
+}
+
+export default function Gallery() {
+	return (
+		<div>
+			<h1>Notable Scientists</h1>
+			<Profile
+				person={{
+					imageId: "szV5sdG",
+					name: "Maria Skłodowska-Curie",
+					profession: "physicist and chemist",
+					discovery: "polonium (chemical element)",
+					awards: [
+						"Nobel Prize in Physics",
+						"Nobel Prize in Chemistry",
+						"Davy Medal",
+						"Matteucci Medal",
+					],
+				}}
+			/>
+			<Profile
+				person={{
+					imageId: "YfeOqp2",
+					name: "Katsuko Saruhashi",
+					profession: "geochemist",
+					discovery:
+						"a method for measuring carbon dioxide in seawater",
+					awards: ["Miyake Prize for geochemistry", "Tanaka Prize"],
+				}}
+			/>
+		</div>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size = "s") {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 5px;
+	border-radius: 50%;
+	min-height: 70px;
+}
+.profile {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	margin-top: 20px;
+	padding: 10px;
+}
+h1,
+h2 {
+	margin: 5px;
+}
+h1 {
+	margin-bottom: 10px;
+}
+ul {
+	padding: 0px 10px 0px 20px;
+}
+li {
+	margin: 5px;
+}
+```
+
+Although the syntax looks slightly different because you're describing properties of a JavaScript object rather than a collection of JSX attributes, these examples are mostly equivalent, and you can pick either approach.
+
+</Solution>
+
+#### Adjust the image size based on a prop
+
+In this example, `Avatar` receives a numeric `size` prop which determines the `<img>` width and height. The `size` prop is set to `40` in this example. However, if you open the image in a new tab, you'll notice that the image itself is larger (`160` pixels). The real image size is determined by which thumbnail size you're requesting.
+
+Change the `Avatar` component to request the closest image size based on the `size` prop. Specifically, if the `size` is less than `90`, pass `'s'` ("small") rather than `'b'` ("big") to the `getImageUrl` function. Verify that your changes work by rendering avatars with different values of the `size` prop and opening images in a new tab.
+
+```js
+import { getImageUrl } from "./utils.js";
+
+function Avatar({ person, size }) {
+	return (
+		<img
+			className="avatar"
+			src={getImageUrl(person, "b")}
+			alt={person.name}
+			width={size}
+			height={size}
+		/>
+	);
+}
+
+export default function Profile() {
+	return (
+		<Avatar
+			size={40}
+			person={{
+				name: "Gregorio Y. Zara",
+				imageId: "7vQD0fP",
+			}}
+		/>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size) {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 20px;
+	border-radius: 50%;
+}
+```
+
+<Solution>
+
+Here is how you could go about it:
+
+```js
+import { getImageUrl } from "./utils.js";
+
+function Avatar({ person, size }) {
+	let thumbnailSize = "s";
+	if (size > 90) {
+		thumbnailSize = "b";
+	}
+	return (
+		<img
+			className="avatar"
+			src={getImageUrl(person, thumbnailSize)}
+			alt={person.name}
+			width={size}
+			height={size}
+		/>
+	);
+}
+
+export default function Profile() {
+	return (
+		<>
+			<Avatar
+				size={40}
+				person={{
+					name: "Gregorio Y. Zara",
+					imageId: "7vQD0fP",
+				}}
+			/>
+			<Avatar
+				size={120}
+				person={{
+					name: "Gregorio Y. Zara",
+					imageId: "7vQD0fP",
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size) {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 20px;
+	border-radius: 50%;
+}
+```
+
+You could also show a sharper image for high DPI screens by taking [`window.devicePixelRatio`](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio) into account:
+
+```js
+import { getImageUrl } from "./utils.js";
+
+const ratio = window.devicePixelRatio;
+
+function Avatar({ person, size }) {
+	let thumbnailSize = "s";
+	if (size * ratio > 90) {
+		thumbnailSize = "b";
+	}
+	return (
+		<img
+			className="avatar"
+			src={getImageUrl(person, thumbnailSize)}
+			alt={person.name}
+			width={size}
+			height={size}
+		/>
+	);
+}
+
+export default function Profile() {
+	return (
+		<>
+			<Avatar
+				size={40}
+				person={{
+					name: "Gregorio Y. Zara",
+					imageId: "7vQD0fP",
+				}}
+			/>
+			<Avatar
+				size={70}
+				person={{
+					name: "Gregorio Y. Zara",
+					imageId: "7vQD0fP",
+				}}
+			/>
+			<Avatar
+				size={120}
+				person={{
+					name: "Gregorio Y. Zara",
+					imageId: "7vQD0fP",
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```js
+export function getImageUrl(person, size) {
+	return "https://i.imgur.com/" + person.imageId + size + ".jpg";
+}
+```
+
+```css
+.avatar {
+	margin: 20px;
+	border-radius: 50%;
+}
+```
+
+Props let you encapsulate logic like this inside the `Avatar` component (and change it later if needed) so that everyone can use the `<Avatar>` component without thinking about how the images are requested and resized.
+
+</Solution>
+
+#### Passing JSX in a `children` prop
+
+Extract a `Card` component from the markup below, and use the `children` prop to pass different JSX to it:
+
+```js
+export default function Profile() {
+	return (
+		<div>
+			<div className="card">
+				<div className="card-content">
+					<h1>Photo</h1>
+					<img
+						className="avatar"
+						src="https://i.imgur.com/OKS67lhm.jpg"
+						alt="Aklilu Lemma"
+						width={70}
+						height={70}
+					/>
+				</div>
+			</div>
+			<div className="card">
+				<div className="card-content">
+					<h1>About</h1>
+					<p>
+						Aklilu Lemma was a distinguished Ethiopian scientist who
+						discovered a natural treatment to schistosomiasis.
+					</p>
+				</div>
+			</div>
+		</div>
+	);
+}
+```
+
+```css
+.card {
+	width: fit-content;
+	margin: 20px;
+	padding: 20px;
+	border: 1px solid #aaa;
+	border-radius: 20px;
+	background: #fff;
+}
+.card-content {
+	text-align: center;
+}
+.avatar {
+	margin: 10px;
+	border-radius: 50%;
+}
+h1 {
+	margin: 5px;
+	padding: 0;
+	font-size: 24px;
+}
+```
+
+<Hint>
+
+Any JSX you put inside of a component's tag will be passed as the `children` prop to that component.
+
+</Hint>
+
+<Solution>
+
+This is how you can use the `Card` component in both places:
+
+```js
+function Card({ children }) {
+	return (
+		<div className="card">
+			<div className="card-content">{children}</div>
+		</div>
+	);
+}
+
+export default function Profile() {
+	return (
+		<div>
+			<Card>
+				<h1>Photo</h1>
+				<img
+					className="avatar"
+					src="https://i.imgur.com/OKS67lhm.jpg"
+					alt="Aklilu Lemma"
+					width={100}
+					height={100}
+				/>
+			</Card>
+			<Card>
+				<h1>About</h1>
+				<p>
+					Aklilu Lemma was a distinguished Ethiopian scientist who
+					discovered a natural treatment to schistosomiasis.
+				</p>
+			</Card>
+		</div>
+	);
+}
+```
+
+```css
+.card {
+	width: fit-content;
+	margin: 20px;
+	padding: 20px;
+	border: 1px solid #aaa;
+	border-radius: 20px;
+	background: #fff;
+}
+.card-content {
+	text-align: center;
+}
+.avatar {
+	margin: 10px;
+	border-radius: 50%;
+}
+h1 {
+	margin: 5px;
+	padding: 0;
+	font-size: 24px;
+}
+```
+
+You can also make `title` a separate prop if you want every `Card` to always have a title:
+
+```js
+function Card({ children, title }) {
+	return (
+		<div className="card">
+			<div className="card-content">
+				<h1>{title}</h1>
+				{children}
+			</div>
+		</div>
+	);
+}
+
+export default function Profile() {
+	return (
+		<div>
+			<Card title="Photo">
+				<img
+					className="avatar"
+					src="https://i.imgur.com/OKS67lhm.jpg"
+					alt="Aklilu Lemma"
+					width={100}
+					height={100}
+				/>
+			</Card>
+			<Card title="About">
+				<p>
+					Aklilu Lemma was a distinguished Ethiopian scientist who
+					discovered a natural treatment to schistosomiasis.
+				</p>
+			</Card>
+		</div>
+	);
+}
+```
+
+```css
+.card {
+	width: fit-content;
+	margin: 20px;
+	padding: 20px;
+	border: 1px solid #aaa;
+	border-radius: 20px;
+	background: #fff;
+}
+.card-content {
+	text-align: center;
+}
+.avatar {
+	margin: 10px;
+	border-radius: 50%;
+}
+h1 {
+	margin: 5px;
+	padding: 0;
+	font-size: 24px;
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/preserving-and-resetting-state.md b/docs/src/learn/preserving-and-resetting-state.md
new file mode 100644
index 000000000..23e5f64ca
--- /dev/null
+++ b/docs/src/learn/preserving-and-resetting-state.md
@@ -0,0 +1,2027 @@
+---
+title: Preserving and Resetting State 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+State is isolated between components. React keeps track of which state belongs to which component based on their place in the UI tree. You can control when to preserve state and when to reset it between re-renders.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How React "sees" component structures
+    -   When React chooses to preserve or reset the state
+    -   How to force React to reset component's state
+    -   How keys and types affect whether the state is preserved
+
+## The UI tree
+
+Browsers use many tree structures to model UI. The [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) represents HTML elements, the [CSSOM](https://developer.mozilla.org/docs/Web/API/CSS_Object_Model) does the same for CSS. There's even an [Accessibility tree](https://developer.mozilla.org/docs/Glossary/Accessibility_tree)!
+
+React also uses tree structures to manage and model the UI you make. React makes **UI trees** from your JSX. Then React DOM updates the browser DOM elements to match that UI tree. (React Native translates these trees into elements specific to mobile platforms.)
+
+<!-- TODO: Diagram -->
+
+## State is tied to a position in the tree
+
+When you give a component state, you might think the state "lives" inside the component. But the state is actually held inside React. React associates each piece of state it's holding with the correct component by where that component sits in the UI tree.
+
+Here, there is only one `<Counter />` JSX tag, but it's rendered at two different positions:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const counter = <Counter />;
+	return (
+		<div>
+			{counter}
+			{counter}
+		</div>
+	);
+}
+
+function Counter() {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>{score}</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	clear: both;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+	float: left;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+Here's how these look as a tree:
+
+<!-- TODO: Diagram -->
+
+**These are two separate counters because each is rendered at its own position in the tree.** You don't usually have to think about these positions to use React, but it can be useful to understand how it works.
+
+In React, each component on the screen has fully isolated state. For example, if you render two `Counter` components side by side, each of them will get its own, independent, `score` and `hover` states.
+
+Try clicking both counters and notice they don't affect each other:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	return (
+		<div>
+			<Counter />
+			<Counter />
+		</div>
+	);
+}
+
+function Counter() {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>{score}</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+	float: left;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+As you can see, when one counter is updated, only the state for that component is updated:
+
+<!-- TODO: Diagram -->
+
+React will keep the state around for as long as you render the same component at the same position. To see this, increment both counters, then remove the second component by unchecking "Render the second counter" checkbox, and then add it back by ticking it again:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [showB, setShowB] = useState(true);
+	return (
+		<div>
+			<Counter />
+			{showB && <Counter />}
+			<label>
+				<input
+					type="checkbox"
+					checked={showB}
+					onChange={(e) => {
+						setShowB(e.target.checked);
+					}}
+				/>
+				Render the second counter
+			</label>
+		</div>
+	);
+}
+
+function Counter() {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>{score}</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	clear: both;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+	float: left;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+Notice how the moment you stop rendering the second counter, its state disappears completely. That's because when React removes a component, it destroys its state.
+
+<!-- TODO: Diagram -->
+
+When you tick "Render the second counter", a second `Counter` and its state are initialized from scratch (`score = 0`) and added to the DOM.
+
+<!-- TODO: Diagram -->
+
+**React preserves a component's state for as long as it's being rendered at its position in the UI tree.** If it gets removed, or a different component gets rendered at the same position, React discards its state.
+
+## Same component at the same position preserves state
+
+In this example, there are two different `<Counter />` tags:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [isFancy, setIsFancy] = useState(false);
+	return (
+		<div>
+			{isFancy ? <Counter isFancy={true} /> : <Counter isFancy={false} />}
+			<label>
+				<input
+					type="checkbox"
+					checked={isFancy}
+					onChange={(e) => {
+						setIsFancy(e.target.checked);
+					}}
+				/>
+				Use fancy styling
+			</label>
+		</div>
+	);
+}
+
+function Counter({ isFancy }) {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+	if (isFancy) {
+		className += " fancy";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>{score}</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	clear: both;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+	float: left;
+}
+
+.fancy {
+	border: 5px solid gold;
+	color: #ff6767;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+When you tick or clear the checkbox, the counter state does not get reset. Whether `isFancy` is `true` or `false`, you always have a `<Counter />` as the first child of the `div` returned from the root `App` component:
+
+<!-- TODO: Diagram -->
+
+It's the same component at the same position, so from React's perspective, it's the same counter.
+
+<Pitfall>
+
+Remember that **it's the position in the UI tree--not in the JSX markup--that matters to React!** This component has two `return` clauses with different `<Counter />` JSX tags inside and outside the `if`:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [isFancy, setIsFancy] = useState(false);
+	if (isFancy) {
+		return (
+			<div>
+				<Counter isFancy={true} />
+				<label>
+					<input
+						type="checkbox"
+						checked={isFancy}
+						onChange={(e) => {
+							setIsFancy(e.target.checked);
+						}}
+					/>
+					Use fancy styling
+				</label>
+			</div>
+		);
+	}
+	return (
+		<div>
+			<Counter isFancy={false} />
+			<label>
+				<input
+					type="checkbox"
+					checked={isFancy}
+					onChange={(e) => {
+						setIsFancy(e.target.checked);
+					}}
+				/>
+				Use fancy styling
+			</label>
+		</div>
+	);
+}
+
+function Counter({ isFancy }) {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+	if (isFancy) {
+		className += " fancy";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>{score}</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	clear: both;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+	float: left;
+}
+
+.fancy {
+	border: 5px solid gold;
+	color: #ff6767;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+You might expect the state to reset when you tick checkbox, but it doesn't! This is because **both of these `<Counter />` tags are rendered at the same position.** React doesn't know where you place the conditions in your function. All it "sees" is the tree you return.
+
+In both cases, the `App` component returns a `<div>` with `<Counter />` as a first child. To React, these two counters have the same "address": the first child of the first child of the root. This is how React matches them up between the previous and next renders, regardless of how you structure your logic.
+
+</Pitfall>
+
+## Different components at the same position reset state
+
+In this example, ticking the checkbox will replace `<Counter>` with a `<p>`:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [isPaused, setIsPaused] = useState(false);
+	return (
+		<div>
+			{isPaused ? <p>See you later!</p> : <Counter />}
+			<label>
+				<input
+					type="checkbox"
+					checked={isPaused}
+					onChange={(e) => {
+						setIsPaused(e.target.checked);
+					}}
+				/>
+				Take a break
+			</label>
+		</div>
+	);
+}
+
+function Counter() {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>{score}</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	clear: both;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+	float: left;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+Here, you switch between _different_ component types at the same position. Initially, the first child of the `<div>` contained a `Counter`. But when you swapped in a `p`, React removed the `Counter` from the UI tree and destroyed its state.
+
+<!-- TODO: Diagram -->
+
+<!-- TODO: Diagram -->
+
+Also, **when you render a different component in the same position, it resets the state of its entire subtree.** To see how this works, increment the counter and then tick the checkbox:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [isFancy, setIsFancy] = useState(false);
+	return (
+		<div>
+			{isFancy ? (
+				<div>
+					<Counter isFancy={true} />
+				</div>
+			) : (
+				<section>
+					<Counter isFancy={false} />
+				</section>
+			)}
+			<label>
+				<input
+					type="checkbox"
+					checked={isFancy}
+					onChange={(e) => {
+						setIsFancy(e.target.checked);
+					}}
+				/>
+				Use fancy styling
+			</label>
+		</div>
+	);
+}
+
+function Counter({ isFancy }) {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+	if (isFancy) {
+		className += " fancy";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>{score}</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	clear: both;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+	float: left;
+}
+
+.fancy {
+	border: 5px solid gold;
+	color: #ff6767;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+The counter state gets reset when you click the checkbox. Although you render a `Counter`, the first child of the `div` changes from a `div` to a `section`. When the child `div` was removed from the DOM, the whole tree below it (including the `Counter` and its state) was destroyed as well.
+
+<!-- TODO: Diagram -->
+
+<!-- TODO: Diagram -->
+
+As a rule of thumb, **if you want to preserve the state between re-renders, the structure of your tree needs to "match up"** from one render to another. If the structure is different, the state gets destroyed because React destroys state when it removes a component from the tree.
+
+<Pitfall>
+
+This is why you should not nest component function definitions.
+
+Here, the `MyTextField` component function is defined _inside_ `MyComponent`:
+
+```js
+import { useState } from "react";
+
+export default function MyComponent() {
+	const [counter, setCounter] = useState(0);
+
+	function MyTextField() {
+		const [text, setText] = useState("");
+
+		return <input value={text} onChange={(e) => setText(e.target.value)} />;
+	}
+
+	return (
+		<>
+			<MyTextField />
+			<button
+				on_click={() => {
+					setCounter(counter + 1);
+				}}
+			>
+				Clicked {counter} times
+			</button>
+		</>
+	);
+}
+```
+
+Every time you click the button, the input state disappears! This is because a _different_ `MyTextField` function is created for every render of `MyComponent`. You're rendering a _different_ component in the same position, so React resets all state below. This leads to bugs and performance problems. To avoid this problem, **always declare component functions at the top level, and don't nest their definitions.**
+
+</Pitfall>
+
+## Resetting state at the same position
+
+By default, React preserves state of a component while it stays at the same position. Usually, this is exactly what you want, so it makes sense as the default behavior. But sometimes, you may want to reset a component's state. Consider this app that lets two players keep track of their scores during each turn:
+
+```js
+import { useState } from "react";
+
+export default function Scoreboard() {
+	const [isPlayerA, setIsPlayerA] = useState(true);
+	return (
+		<div>
+			{isPlayerA ? (
+				<Counter person="Taylor" />
+			) : (
+				<Counter person="Sarah" />
+			)}
+			<button
+				on_click={() => {
+					setIsPlayerA(!isPlayerA);
+				}}
+			>
+				Next player!
+			</button>
+		</div>
+	);
+}
+
+function Counter({ person }) {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>
+				{person}'s score: {score}
+			</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+h1 {
+	font-size: 18px;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+Currently, when you change the player, the score is preserved. The two `Counter`s appear in the same position, so React sees them as _the same_ `Counter` whose `person` prop has changed.
+
+But conceptually, in this app they should be two separate counters. They might appear in the same place in the UI, but one is a counter for Taylor, and another is a counter for Sarah.
+
+There are two ways to reset state when switching between them:
+
+1. Render components in different positions
+2. Give each component an explicit identity with `key`
+
+### Option 1: Rendering a component in different positions
+
+If you want these two `Counter`s to be independent, you can render them in two different positions:
+
+```js
+import { useState } from "react";
+
+export default function Scoreboard() {
+	const [isPlayerA, setIsPlayerA] = useState(true);
+	return (
+		<div>
+			{isPlayerA && <Counter person="Taylor" />}
+			{!isPlayerA && <Counter person="Sarah" />}
+			<button
+				on_click={() => {
+					setIsPlayerA(!isPlayerA);
+				}}
+			>
+				Next player!
+			</button>
+		</div>
+	);
+}
+
+function Counter({ person }) {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>
+				{person}'s score: {score}
+			</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+h1 {
+	font-size: 18px;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+-   Initially, `isPlayerA` is `true`. So the first position contains `Counter` state, and the second one is empty.
+-   When you click the "Next player" button the first position clears but the second one now contains a `Counter`.
+
+<!-- TODO: Diagram -->
+
+Each `Counter`'s state gets destroyed each time its removed from the DOM. This is why they reset every time you click the button.
+
+This solution is convenient when you only have a few independent components rendered in the same place. In this example, you only have two, so it's not a hassle to render both separately in the JSX.
+
+### Option 2: Resetting state with a key
+
+There is also another, more generic, way to reset a component's state.
+
+You might have seen `key`s when [rendering lists.](/learn/rendering-lists#keeping-list-items-in-order-with-key) Keys aren't just for lists! You can use keys to make React distinguish between any components. By default, React uses order within the parent ("first counter", "second counter") to discern between components. But keys let you tell React that this is not just a _first_ counter, or a _second_ counter, but a specific counter--for example, _Taylor's_ counter. This way, React will know _Taylor's_ counter wherever it appears in the tree!
+
+In this example, the two `<Counter />`s don't share state even though they appear in the same place in JSX:
+
+```js
+import { useState } from "react";
+
+export default function Scoreboard() {
+	const [isPlayerA, setIsPlayerA] = useState(true);
+	return (
+		<div>
+			{isPlayerA ? (
+				<Counter key="Taylor" person="Taylor" />
+			) : (
+				<Counter key="Sarah" person="Sarah" />
+			)}
+			<button
+				on_click={() => {
+					setIsPlayerA(!isPlayerA);
+				}}
+			>
+				Next player!
+			</button>
+		</div>
+	);
+}
+
+function Counter({ person }) {
+	const [score, setScore] = useState(0);
+	const [hover, setHover] = useState(false);
+
+	let className = "counter";
+	if (hover) {
+		className += " hover";
+	}
+
+	return (
+		<div
+			className={className}
+			onPointerEnter={() => setHover(true)}
+			onPointerLeave={() => setHover(false)}
+		>
+			<h1>
+				{person}'s score: {score}
+			</h1>
+			<button on_click={() => setScore(score + 1)}>Add one</button>
+		</div>
+	);
+}
+```
+
+```css
+h1 {
+	font-size: 18px;
+}
+
+.counter {
+	width: 100px;
+	text-align: center;
+	border: 1px solid gray;
+	border-radius: 4px;
+	padding: 20px;
+	margin: 0 20px 20px 0;
+}
+
+.hover {
+	background: #ffffd8;
+}
+```
+
+Switching between Taylor and Sarah does not preserve the state. This is because **you gave them different `key`s:**
+
+```js
+{
+	isPlayerA ? (
+		<Counter key="Taylor" person="Taylor" />
+	) : (
+		<Counter key="Sarah" person="Sarah" />
+	);
+}
+```
+
+Specifying a `key` tells React to use the `key` itself as part of the position, instead of their order within the parent. This is why, even though you render them in the same place in JSX, React sees them as two different counters, and so they will never share state. Every time a counter appears on the screen, its state is created. Every time it is removed, its state is destroyed. Toggling between them resets their state over and over.
+
+<Note>
+
+Remember that keys are not globally unique. They only specify the position _within the parent_.
+
+</Note>
+
+### Resetting a form with a key
+
+Resetting state with a key is particularly useful when dealing with forms.
+
+In this chat app, the `<Chat>` component contains the text input state:
+
+```js
+import { useState } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+
+export default function Messenger() {
+	const [to, setTo] = useState(contacts[0]);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedContact={to}
+				onSelect={(contact) => setTo(contact)}
+			/>
+			<Chat contact={to} />
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export default function ContactList({ selectedContact, contacts, onSelect }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								onSelect(contact);
+							}}
+						>
+							{contact.name}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact }) {
+	const [text, setText] = useState("");
+	return (
+		<section className="chat">
+			<textarea
+				value={text}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<br />
+			<button>Send to {contact.email}</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+Try entering something into the input, and then press "Alice" or "Bob" to choose a different recipient. You will notice that the input state is preserved because the `<Chat>` is rendered at the same position in the tree.
+
+**In many apps, this may be the desired behavior, but not in a chat app!** You don't want to let the user send a message they already typed to a wrong person due to an accidental click. To fix it, add a `key`:
+
+```js
+<Chat key={to.id} contact={to} />
+```
+
+This ensures that when you select a different recipient, the `Chat` component will be recreated from scratch, including any state in the tree below it. React will also re-create the DOM elements instead of reusing them.
+
+Now switching the recipient always clears the text field:
+
+```js
+import { useState } from "react";
+import Chat from "./Chat.js";
+import ContactList from "./ContactList.js";
+
+export default function Messenger() {
+	const [to, setTo] = useState(contacts[0]);
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedContact={to}
+				onSelect={(contact) => setTo(contact)}
+			/>
+			<Chat key={to.id} contact={to} />
+		</div>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export default function ContactList({ selectedContact, contacts, onSelect }) {
+	return (
+		<section className="contact-list">
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								onSelect(contact);
+							}}
+						>
+							{contact.name}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Chat({ contact }) {
+	const [text, setText] = useState("");
+	return (
+		<section className="chat">
+			<textarea
+				value={text}
+				placeholder={"Chat to " + contact.name}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<br />
+			<button>Send to {contact.email}</button>
+		</section>
+	);
+}
+```
+
+```css
+.chat,
+.contact-list {
+	float: left;
+	margin-bottom: 20px;
+}
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li button {
+	width: 100px;
+	padding: 10px;
+	margin-right: 10px;
+}
+textarea {
+	height: 150px;
+}
+```
+
+<DeepDive>
+
+#### Preserving state for removed components
+
+In a real chat app, you'd probably want to recover the input state when the user selects the previous recipient again. There are a few ways to keep the state "alive" for a component that's no longer visible:
+
+-   You could render _all_ chats instead of just the current one, but hide all the others with CSS. The chats would not get removed from the tree, so their local state would be preserved. This solution works great for simple UIs. But it can get very slow if the hidden trees are large and contain a lot of DOM nodes.
+-   You could [lift the state up](/learn/sharing-state-between-components) and hold the pending message for each recipient in the parent component. This way, when the child components get removed, it doesn't matter, because it's the parent that keeps the important information. This is the most common solution.
+-   You might also use a different source in addition to React state. For example, you probably want a message draft to persist even if the user accidentally closes the page. To implement this, you could have the `Chat` component initialize its state by reading from the [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), and save the drafts there too.
+
+No matter which strategy you pick, a chat _with Alice_ is conceptually distinct from a chat _with Bob_, so it makes sense to give a `key` to the `<Chat>` tree based on the current recipient.
+
+</DeepDive>
+
+<Recap>
+
+-   React keeps state for as long as the same component is rendered at the same position.
+-   State is not kept in JSX tags. It's associated with the tree position in which you put that JSX.
+-   You can force a subtree to reset its state by giving it a different key.
+-   Don't nest component definitions, or you'll reset state by accident.
+
+</Recap>
+
+<Challenges>
+
+#### Fix disappearing input text
+
+This example shows a message when you press the button. However, pressing the button also accidentally resets the input. Why does this happen? Fix it so that pressing the button does not reset the input text.
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [showHint, setShowHint] = useState(false);
+	if (showHint) {
+		return (
+			<div>
+				<p>
+					<i>Hint: Your favorite city?</i>
+				</p>
+				<Form />
+				<button
+					on_click={() => {
+						setShowHint(false);
+					}}
+				>
+					Hide hint
+				</button>
+			</div>
+		);
+	}
+	return (
+		<div>
+			<Form />
+			<button
+				on_click={() => {
+					setShowHint(true);
+				}}
+			>
+				Show hint
+			</button>
+		</div>
+	);
+}
+
+function Form() {
+	const [text, setText] = useState("");
+	return <textarea value={text} onChange={(e) => setText(e.target.value)} />;
+}
+```
+
+```css
+textarea {
+	display: block;
+	margin: 10px 0;
+}
+```
+
+<Solution>
+
+The problem is that `Form` is rendered in different positions. In the `if` branch, it is the second child of the `<div>`, but in the `else` branch, it is the first child. Therefore, the component type in each position changes. The first position changes between holding a `p` and a `Form`, while the second position changes between holding a `Form` and a `button`. React resets the state every time the component type changes.
+
+The easiest solution is to unify the branches so that `Form` always renders in the same position:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [showHint, setShowHint] = useState(false);
+	return (
+		<div>
+			{showHint && (
+				<p>
+					<i>Hint: Your favorite city?</i>
+				</p>
+			)}
+			<Form />
+			{showHint ? (
+				<button
+					on_click={() => {
+						setShowHint(false);
+					}}
+				>
+					Hide hint
+				</button>
+			) : (
+				<button
+					on_click={() => {
+						setShowHint(true);
+					}}
+				>
+					Show hint
+				</button>
+			)}
+		</div>
+	);
+}
+
+function Form() {
+	const [text, setText] = useState("");
+	return <textarea value={text} onChange={(e) => setText(e.target.value)} />;
+}
+```
+
+```css
+textarea {
+	display: block;
+	margin: 10px 0;
+}
+```
+
+Technically, you could also add `null` before `<Form />` in the `else` branch to match the `if` branch structure:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [showHint, setShowHint] = useState(false);
+	if (showHint) {
+		return (
+			<div>
+				<p>
+					<i>Hint: Your favorite city?</i>
+				</p>
+				<Form />
+				<button
+					on_click={() => {
+						setShowHint(false);
+					}}
+				>
+					Hide hint
+				</button>
+			</div>
+		);
+	}
+	return (
+		<div>
+			{null}
+			<Form />
+			<button
+				on_click={() => {
+					setShowHint(true);
+				}}
+			>
+				Show hint
+			</button>
+		</div>
+	);
+}
+
+function Form() {
+	const [text, setText] = useState("");
+	return <textarea value={text} onChange={(e) => setText(e.target.value)} />;
+}
+```
+
+```css
+textarea {
+	display: block;
+	margin: 10px 0;
+}
+```
+
+This way, `Form` is always the second child, so it stays in the same position and keeps its state. But this approach is much less obvious and introduces a risk that someone else will remove that `null`.
+
+</Solution>
+
+#### Swap two form fields
+
+This form lets you enter first and last name. It also has a checkbox controlling which field goes first. When you tick the checkbox, the "Last name" field will appear before the "First name" field.
+
+It almost works, but there is a bug. If you fill in the "First name" input and tick the checkbox, the text will stay in the first input (which is now "Last name"). Fix it so that the input text _also_ moves when you reverse the order.
+
+<Hint>
+
+It seems like for these fields, their position within the parent is not enough. Is there some way to tell React how to match up the state between re-renders?
+
+</Hint>
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [reverse, setReverse] = useState(false);
+	let checkbox = (
+		<label>
+			<input
+				type="checkbox"
+				checked={reverse}
+				onChange={(e) => setReverse(e.target.checked)}
+			/>
+			Reverse order
+		</label>
+	);
+	if (reverse) {
+		return (
+			<>
+				<Field label="Last name" />
+				<Field label="First name" />
+				{checkbox}
+			</>
+		);
+	} else {
+		return (
+			<>
+				<Field label="First name" />
+				<Field label="Last name" />
+				{checkbox}
+			</>
+		);
+	}
+}
+
+function Field({ label }) {
+	const [text, setText] = useState("");
+	return (
+		<label>
+			{label}:{" "}
+			<input
+				type="text"
+				value={text}
+				placeholder={label}
+				onChange={(e) => setText(e.target.value)}
+			/>
+		</label>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin: 10px 0;
+}
+```
+
+<Solution>
+
+Give a `key` to both `<Field>` components in both `if` and `else` branches. This tells React how to "match up" the correct state for either `<Field>` even if their order within the parent changes:
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [reverse, setReverse] = useState(false);
+	let checkbox = (
+		<label>
+			<input
+				type="checkbox"
+				checked={reverse}
+				onChange={(e) => setReverse(e.target.checked)}
+			/>
+			Reverse order
+		</label>
+	);
+	if (reverse) {
+		return (
+			<>
+				<Field key="lastName" label="Last name" />
+				<Field key="firstName" label="First name" />
+				{checkbox}
+			</>
+		);
+	} else {
+		return (
+			<>
+				<Field key="firstName" label="First name" />
+				<Field key="lastName" label="Last name" />
+				{checkbox}
+			</>
+		);
+	}
+}
+
+function Field({ label }) {
+	const [text, setText] = useState("");
+	return (
+		<label>
+			{label}:{" "}
+			<input
+				type="text"
+				value={text}
+				placeholder={label}
+				onChange={(e) => setText(e.target.value)}
+			/>
+		</label>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin: 10px 0;
+}
+```
+
+</Solution>
+
+#### Reset a detail form
+
+This is an editable contact list. You can edit the selected contact's details and then either press "Save" to update it, or "Reset" to undo your changes.
+
+When you select a different contact (for example, Alice), the state updates but the form keeps showing the previous contact's details. Fix it so that the form gets reset when the selected contact changes.
+
+```js
+import { useState } from "react";
+import ContactList from "./ContactList.js";
+import EditContact from "./EditContact.js";
+
+export default function ContactManager() {
+	const [contacts, setContacts] = useState(initialContacts);
+	const [selectedId, setSelectedId] = useState(0);
+	const selectedContact = contacts.find((c) => c.id === selectedId);
+
+	function handleSave(updatedData) {
+		const nextContacts = contacts.map((c) => {
+			if (c.id === updatedData.id) {
+				return updatedData;
+			} else {
+				return c;
+			}
+		});
+		setContacts(nextContacts);
+	}
+
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={selectedId}
+				onSelect={(id) => setSelectedId(id)}
+			/>
+			<hr />
+			<EditContact initialData={selectedContact} onSave={handleSave} />
+		</div>
+	);
+}
+
+const initialContacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export default function ContactList({ contacts, selectedId, onSelect }) {
+	return (
+		<section>
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								onSelect(contact.id);
+							}}
+						>
+							{contact.id === selectedId ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function EditContact({ initialData, onSave }) {
+	const [name, setName] = useState(initialData.name);
+	const [email, setEmail] = useState(initialData.email);
+	return (
+		<section>
+			<label>
+				Name:{" "}
+				<input
+					type="text"
+					value={name}
+					onChange={(e) => setName(e.target.value)}
+				/>
+			</label>
+			<label>
+				Email:{" "}
+				<input
+					type="email"
+					value={email}
+					onChange={(e) => setEmail(e.target.value)}
+				/>
+			</label>
+			<button
+				on_click={() => {
+					const updatedData = {
+						id: initialData.id,
+						name: name,
+						email: email,
+					};
+					onSave(updatedData);
+				}}
+			>
+				Save
+			</button>
+			<button
+				on_click={() => {
+					setName(initialData.name);
+					setEmail(initialData.email);
+				}}
+			>
+				Reset
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li {
+	display: inline-block;
+}
+li button {
+	padding: 10px;
+}
+label {
+	display: block;
+	margin: 10px 0;
+}
+button {
+	margin-right: 10px;
+	margin-bottom: 10px;
+}
+```
+
+<Solution>
+
+Give `key={selectedId}` to the `EditContact` component. This way, switching between different contacts will reset the form:
+
+```js
+import { useState } from "react";
+import ContactList from "./ContactList.js";
+import EditContact from "./EditContact.js";
+
+export default function ContactManager() {
+	const [contacts, setContacts] = useState(initialContacts);
+	const [selectedId, setSelectedId] = useState(0);
+	const selectedContact = contacts.find((c) => c.id === selectedId);
+
+	function handleSave(updatedData) {
+		const nextContacts = contacts.map((c) => {
+			if (c.id === updatedData.id) {
+				return updatedData;
+			} else {
+				return c;
+			}
+		});
+		setContacts(nextContacts);
+	}
+
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={selectedId}
+				onSelect={(id) => setSelectedId(id)}
+			/>
+			<hr />
+			<EditContact
+				key={selectedId}
+				initialData={selectedContact}
+				onSave={handleSave}
+			/>
+		</div>
+	);
+}
+
+const initialContacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export default function ContactList({ contacts, selectedId, onSelect }) {
+	return (
+		<section>
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								onSelect(contact.id);
+							}}
+						>
+							{contact.id === selectedId ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function EditContact({ initialData, onSave }) {
+	const [name, setName] = useState(initialData.name);
+	const [email, setEmail] = useState(initialData.email);
+	return (
+		<section>
+			<label>
+				Name:{" "}
+				<input
+					type="text"
+					value={name}
+					onChange={(e) => setName(e.target.value)}
+				/>
+			</label>
+			<label>
+				Email:{" "}
+				<input
+					type="email"
+					value={email}
+					onChange={(e) => setEmail(e.target.value)}
+				/>
+			</label>
+			<button
+				on_click={() => {
+					const updatedData = {
+						id: initialData.id,
+						name: name,
+						email: email,
+					};
+					onSave(updatedData);
+				}}
+			>
+				Save
+			</button>
+			<button
+				on_click={() => {
+					setName(initialData.name);
+					setEmail(initialData.email);
+				}}
+			>
+				Reset
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li {
+	display: inline-block;
+}
+li button {
+	padding: 10px;
+}
+label {
+	display: block;
+	margin: 10px 0;
+}
+button {
+	margin-right: 10px;
+	margin-bottom: 10px;
+}
+```
+
+</Solution>
+
+#### Clear an image while it's loading
+
+When you press "Next", the browser starts loading the next image. However, because it's displayed in the same `<img>` tag, by default you would still see the previous image until the next one loads. This may be undesirable if it's important for the text to always match the image. Change it so that the moment you press "Next", the previous image immediately clears.
+
+<Hint>
+
+Is there a way to tell React to re-create the DOM instead of reusing it?
+
+</Hint>
+
+```js
+import { useState } from "react";
+
+export default function Gallery() {
+	const [index, setIndex] = useState(0);
+	const hasNext = index < images.length - 1;
+
+	function handleClick() {
+		if (hasNext) {
+			setIndex(index + 1);
+		} else {
+			setIndex(0);
+		}
+	}
+
+	let image = images[index];
+	return (
+		<>
+			<button on_click={handleClick}>Next</button>
+			<h3>
+				Image {index + 1} of {images.length}
+			</h3>
+			<img src={image.src} />
+			<p>{image.place}</p>
+		</>
+	);
+}
+
+let images = [
+	{
+		place: "Penang, Malaysia",
+		src: "https://i.imgur.com/FJeJR8M.jpg",
+	},
+	{
+		place: "Lisbon, Portugal",
+		src: "https://i.imgur.com/dB2LRbj.jpg",
+	},
+	{
+		place: "Bilbao, Spain",
+		src: "https://i.imgur.com/z08o2TS.jpg",
+	},
+	{
+		place: "Valparaíso, Chile",
+		src: "https://i.imgur.com/Y3utgTi.jpg",
+	},
+	{
+		place: "Schwyz, Switzerland",
+		src: "https://i.imgur.com/JBbMpWY.jpg",
+	},
+	{
+		place: "Prague, Czechia",
+		src: "https://i.imgur.com/QwUKKmF.jpg",
+	},
+	{
+		place: "Ljubljana, Slovenia",
+		src: "https://i.imgur.com/3aIiwfm.jpg",
+	},
+];
+```
+
+```css
+img {
+	width: 150px;
+	height: 150px;
+}
+```
+
+<Solution>
+
+You can provide a `key` to the `<img>` tag. When that `key` changes, React will re-create the `<img>` DOM node from scratch. This causes a brief flash when each image loads, so it's not something you'd want to do for every image in your app. But it makes sense if you want to ensure the image always matches the text.
+
+```js
+import { useState } from "react";
+
+export default function Gallery() {
+	const [index, setIndex] = useState(0);
+	const hasNext = index < images.length - 1;
+
+	function handleClick() {
+		if (hasNext) {
+			setIndex(index + 1);
+		} else {
+			setIndex(0);
+		}
+	}
+
+	let image = images[index];
+	return (
+		<>
+			<button on_click={handleClick}>Next</button>
+			<h3>
+				Image {index + 1} of {images.length}
+			</h3>
+			<img key={image.src} src={image.src} />
+			<p>{image.place}</p>
+		</>
+	);
+}
+
+let images = [
+	{
+		place: "Penang, Malaysia",
+		src: "https://i.imgur.com/FJeJR8M.jpg",
+	},
+	{
+		place: "Lisbon, Portugal",
+		src: "https://i.imgur.com/dB2LRbj.jpg",
+	},
+	{
+		place: "Bilbao, Spain",
+		src: "https://i.imgur.com/z08o2TS.jpg",
+	},
+	{
+		place: "Valparaíso, Chile",
+		src: "https://i.imgur.com/Y3utgTi.jpg",
+	},
+	{
+		place: "Schwyz, Switzerland",
+		src: "https://i.imgur.com/JBbMpWY.jpg",
+	},
+	{
+		place: "Prague, Czechia",
+		src: "https://i.imgur.com/QwUKKmF.jpg",
+	},
+	{
+		place: "Ljubljana, Slovenia",
+		src: "https://i.imgur.com/3aIiwfm.jpg",
+	},
+];
+```
+
+```css
+img {
+	width: 150px;
+	height: 150px;
+}
+```
+
+</Solution>
+
+#### Fix misplaced state in the list
+
+In this list, each `Contact` has state that determines whether "Show email" has been pressed for it. Press "Show email" for Alice, and then tick the "Show in reverse order" checkbox. You will notice that it's _Taylor's_ email that is expanded now, but Alice's--which has moved to the bottom--appears collapsed.
+
+Fix it so that the expanded state is associated with each contact, regardless of the chosen ordering.
+
+```js
+import { useState } from "react";
+import Contact from "./Contact.js";
+
+export default function ContactList() {
+	const [reverse, setReverse] = useState(false);
+
+	const displayedContacts = [...contacts];
+	if (reverse) {
+		displayedContacts.reverse();
+	}
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					value={reverse}
+					onChange={(e) => {
+						setReverse(e.target.checked);
+					}}
+				/>{" "}
+				Show in reverse order
+			</label>
+			<ul>
+				{displayedContacts.map((contact, i) => (
+					<li key={i}>
+						<Contact contact={contact} />
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Alice", email: "alice@mail.com" },
+	{ id: 1, name: "Bob", email: "bob@mail.com" },
+	{ id: 2, name: "Taylor", email: "taylor@mail.com" },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function Contact({ contact }) {
+	const [expanded, setExpanded] = useState(false);
+	return (
+		<>
+			<p>
+				<b>{contact.name}</b>
+			</p>
+			{expanded && (
+				<p>
+					<i>{contact.email}</i>
+				</p>
+			)}
+			<button
+				on_click={() => {
+					setExpanded(!expanded);
+				}}
+			>
+				{expanded ? "Hide" : "Show"} email
+			</button>
+		</>
+	);
+}
+```
+
+```css
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li {
+	margin-bottom: 20px;
+}
+label {
+	display: block;
+	margin: 10px 0;
+}
+button {
+	margin-right: 10px;
+	margin-bottom: 10px;
+}
+```
+
+<Solution>
+
+The problem is that this example was using index as a `key`:
+
+```js
+{displayedContacts.map((contact, i) =>
+  <li key={i}>
+```
+
+However, you want the state to be associated with _each particular contact_.
+
+Using the contact ID as a `key` instead fixes the issue:
+
+```js
+import { useState } from "react";
+import Contact from "./Contact.js";
+
+export default function ContactList() {
+	const [reverse, setReverse] = useState(false);
+
+	const displayedContacts = [...contacts];
+	if (reverse) {
+		displayedContacts.reverse();
+	}
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					value={reverse}
+					onChange={(e) => {
+						setReverse(e.target.checked);
+					}}
+				/>{" "}
+				Show in reverse order
+			</label>
+			<ul>
+				{displayedContacts.map((contact) => (
+					<li key={contact.id}>
+						<Contact contact={contact} />
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+
+const contacts = [
+	{ id: 0, name: "Alice", email: "alice@mail.com" },
+	{ id: 1, name: "Bob", email: "bob@mail.com" },
+	{ id: 2, name: "Taylor", email: "taylor@mail.com" },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function Contact({ contact }) {
+	const [expanded, setExpanded] = useState(false);
+	return (
+		<>
+			<p>
+				<b>{contact.name}</b>
+			</p>
+			{expanded && (
+				<p>
+					<i>{contact.email}</i>
+				</p>
+			)}
+			<button
+				on_click={() => {
+					setExpanded(!expanded);
+				}}
+			>
+				{expanded ? "Hide" : "Show"} email
+			</button>
+		</>
+	);
+}
+```
+
+```css
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li {
+	margin-bottom: 20px;
+}
+label {
+	display: block;
+	margin: 10px 0;
+}
+button {
+	margin-right: 10px;
+	margin-bottom: 10px;
+}
+```
+
+State is associated with the tree position. A `key` lets you specify a named position instead of relying on order.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/python-in-psx-with-curly-braces.md b/docs/src/learn/python-in-psx-with-curly-braces.md
new file mode 100644
index 000000000..fcc8f0923
--- /dev/null
+++ b/docs/src/learn/python-in-psx-with-curly-braces.md
@@ -0,0 +1,591 @@
+---
+title: Python in PSX with Curly Braces 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+JSX lets you write HTML-like markup inside a JavaScript file, keeping rendering logic and content in the same place. Sometimes you will want to add a little JavaScript logic or reference a dynamic property inside that markup. In this situation, you can use curly braces in your JSX to open a window to JavaScript.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to pass strings with quotes
+    -   How to reference a JavaScript variable inside JSX with curly braces
+    -   How to call a JavaScript function inside JSX with curly braces
+    -   How to use a JavaScript object inside JSX with curly braces
+
+## Passing strings with quotes
+
+When you want to pass a string attribute to JSX, you put it in single or double quotes:
+
+```js
+export default function Avatar() {
+	return (
+		<img
+			className="avatar"
+			src="https://i.imgur.com/7vQD0fPs.jpg"
+			alt="Gregorio Y. Zara"
+		/>
+	);
+}
+```
+
+```css
+.avatar {
+	border-radius: 50%;
+	height: 90px;
+}
+```
+
+Here, `"https://i.imgur.com/7vQD0fPs.jpg"` and `"Gregorio Y. Zara"` are being passed as strings.
+
+But what if you want to dynamically specify the `src` or `alt` text? You could **use a value from JavaScript by replacing `"` and `"` with `{` and `}`**:
+
+```js
+export default function Avatar() {
+	const avatar = "https://i.imgur.com/7vQD0fPs.jpg";
+	const description = "Gregorio Y. Zara";
+	return <img className="avatar" src={avatar} alt={description} />;
+}
+```
+
+```css
+.avatar {
+	border-radius: 50%;
+	height: 90px;
+}
+```
+
+Notice the difference between `className="avatar"`, which specifies an `"avatar"` CSS class name that makes the image round, and `src={avatar}` that reads the value of the JavaScript variable called `avatar`. That's because curly braces let you work with JavaScript right there in your markup!
+
+## Using curly braces: A window into the JavaScript world
+
+JSX is a special way of writing JavaScript. That means it’s possible to use JavaScript inside it—with curly braces `{ }`. The example below first declares a name for the scientist, `name`, then embeds it with curly braces inside the `<h1>`:
+
+```js
+export default function TodoList() {
+	const name = "Gregorio Y. Zara";
+	return <h1>{name}'s To Do List</h1>;
+}
+```
+
+Try changing the `name`'s value from `'Gregorio Y. Zara'` to `'Hedy Lamarr'`. See how the list title changes?
+
+Any JavaScript expression will work between curly braces, including function calls like `formatDate()`:
+
+```js
+const today = new Date();
+
+function formatDate(date) {
+	return new Intl.DateTimeFormat("en-US", { weekday: "long" }).format(date);
+}
+
+export default function TodoList() {
+	return <h1>To Do List for {formatDate(today)}</h1>;
+}
+```
+
+### Where to use curly braces
+
+You can only use curly braces in two ways inside JSX:
+
+1. **As text** directly inside a JSX tag: `<h1>{name}'s To Do List</h1>` works, but `<{tag}>Gregorio Y. Zara's To Do List</{tag}>` will not.
+2. **As attributes** immediately following the `=` sign: `src={avatar}` will read the `avatar` variable, but `src="{avatar}"` will pass the string `"{avatar}"`.
+
+## Using "double curlies": CSS and other objects in JSX
+
+In addition to strings, numbers, and other JavaScript expressions, you can even pass objects in JSX. Objects are also denoted with curly braces, like `{ name: "Hedy Lamarr", inventions: 5 }`. Therefore, to pass a JS object in JSX, you must wrap the object in another pair of curly braces: `person={{ name: "Hedy Lamarr", inventions: 5 }}`.
+
+You may see this with inline CSS styles in JSX. React does not require you to use inline styles (CSS classes work great for most cases). But when you need an inline style, you pass an object to the `style` attribute:
+
+```js
+export default function TodoList() {
+	return (
+		<ul
+			style={{
+				backgroundColor: "black",
+				color: "pink",
+			}}
+		>
+			<li>Improve the videophone</li>
+			<li>Prepare aeronautics lectures</li>
+			<li>Work on the alcohol-fuelled engine</li>
+		</ul>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+ul {
+	padding: 20px 20px 20px 40px;
+	margin: 0;
+}
+```
+
+Try changing the values of `backgroundColor` and `color`.
+
+You can really see the JavaScript object inside the curly braces when you write it like this:
+
+```js
+<ul style={
+  {
+    backgroundColor: 'black',
+    color: 'pink'
+  }
+}>
+```
+
+The next time you see `{{` and `}}` in JSX, know that it's nothing more than an object inside the JSX curlies!
+
+<Pitfall>
+
+Inline `style` properties are written in camelCase. For example, HTML `<ul style="background-color: black">` would be written as `<ul style={{ backgroundColor: 'black' }}>` in your component.
+
+</Pitfall>
+
+## More fun with JavaScript objects and curly braces
+
+You can move several expressions into one object, and reference them in your JSX inside curly braces:
+
+```js
+const person = {
+	name: "Gregorio Y. Zara",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person.name}'s Todos</h1>
+			<img
+				className="avatar"
+				src="https://i.imgur.com/7vQD0fPs.jpg"
+				alt="Gregorio Y. Zara"
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+	height: 90px;
+}
+```
+
+In this example, the `person` JavaScript object contains a `name` string and a `theme` object:
+
+```js
+const person = {
+	name: "Gregorio Y. Zara",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+```
+
+The component can use these values from `person` like so:
+
+```js
+<div style={person.theme}>
+  <h1>{person.name}'s Todos</h1>
+```
+
+JSX is very minimal as a templating language because it lets you organize data and logic using JavaScript.
+
+<Recap>
+
+Now you know almost everything about JSX:
+
+-   JSX attributes inside quotes are passed as strings.
+-   Curly braces let you bring JavaScript logic and variables into your markup.
+-   They work inside the JSX tag content or immediately after `=` in attributes.
+-   `{{` and `}}` is not special syntax: it's a JavaScript object tucked inside JSX curly braces.
+
+</Recap>
+
+<Challenges>
+
+#### Fix the mistake
+
+This code crashes with an error saying `Objects are not valid as a React child`:
+
+```js
+const person = {
+	name: "Gregorio Y. Zara",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person}'s Todos</h1>
+			<img
+				className="avatar"
+				src="https://i.imgur.com/7vQD0fPs.jpg"
+				alt="Gregorio Y. Zara"
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+	height: 90px;
+}
+```
+
+Can you find the problem?
+
+<Hint>Look for what's inside the curly braces. Are we putting the right thing there?</Hint>
+
+<Solution>
+
+This is happening because this example renders _an object itself_ into the markup rather than a string: `<h1>{person}'s Todos</h1>` is trying to render the entire `person` object! Including raw objects as text content throws an error because React doesn't know how you want to display them.
+
+To fix it, replace `<h1>{person}'s Todos</h1>` with `<h1>{person.name}'s Todos</h1>`:
+
+```js
+const person = {
+	name: "Gregorio Y. Zara",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person.name}'s Todos</h1>
+			<img
+				className="avatar"
+				src="https://i.imgur.com/7vQD0fPs.jpg"
+				alt="Gregorio Y. Zara"
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+	height: 90px;
+}
+```
+
+</Solution>
+
+#### Extract information into an object
+
+Extract the image URL into the `person` object.
+
+```js
+const person = {
+	name: "Gregorio Y. Zara",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person.name}'s Todos</h1>
+			<img
+				className="avatar"
+				src="https://i.imgur.com/7vQD0fPs.jpg"
+				alt="Gregorio Y. Zara"
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+	height: 90px;
+}
+```
+
+<Solution>
+
+Move the image URL into a property called `person.imageUrl` and read it from the `<img>` tag using the curlies:
+
+```js
+const person = {
+	name: "Gregorio Y. Zara",
+	imageUrl: "https://i.imgur.com/7vQD0fPs.jpg",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person.name}'s Todos</h1>
+			<img
+				className="avatar"
+				src={person.imageUrl}
+				alt="Gregorio Y. Zara"
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+	height: 90px;
+}
+```
+
+</Solution>
+
+#### Write an expression inside JSX curly braces
+
+In the object below, the full image URL is split into four parts: base URL, `imageId`, `imageSize`, and file extension.
+
+We want the image URL to combine these attributes together: base URL (always `'https://i.imgur.com/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`), and file extension (always `'.jpg'`). However, something is wrong with how the `<img>` tag specifies its `src`.
+
+Can you fix it?
+
+```js
+const baseUrl = "https://i.imgur.com/";
+const person = {
+	name: "Gregorio Y. Zara",
+	imageId: "7vQD0fP",
+	imageSize: "s",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person.name}'s Todos</h1>
+			<img
+				className="avatar"
+				src="{baseUrl}{person.imageId}{person.imageSize}.jpg"
+				alt={person.name}
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+}
+```
+
+To check that your fix worked, try changing the value of `imageSize` to `'b'`. The image should resize after your edit.
+
+<Solution>
+
+You can write it as `src={baseUrl + person.imageId + person.imageSize + '.jpg'}`.
+
+1. `{` opens the JavaScript expression
+2. `baseUrl + person.imageId + person.imageSize + '.jpg'` produces the correct URL string
+3. `}` closes the JavaScript expression
+
+```js
+const baseUrl = "https://i.imgur.com/";
+const person = {
+	name: "Gregorio Y. Zara",
+	imageId: "7vQD0fP",
+	imageSize: "s",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person.name}'s Todos</h1>
+			<img
+				className="avatar"
+				src={baseUrl + person.imageId + person.imageSize + ".jpg"}
+				alt={person.name}
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+}
+```
+
+You can also move this expression into a separate function like `getImageUrl` below:
+
+```js
+import { getImageUrl } from "./utils.js";
+
+const person = {
+	name: "Gregorio Y. Zara",
+	imageId: "7vQD0fP",
+	imageSize: "s",
+	theme: {
+		backgroundColor: "black",
+		color: "pink",
+	},
+};
+
+export default function TodoList() {
+	return (
+		<div style={person.theme}>
+			<h1>{person.name}'s Todos</h1>
+			<img
+				className="avatar"
+				src={getImageUrl(person)}
+				alt={person.name}
+			/>
+			<ul>
+				<li>Improve the videophone</li>
+				<li>Prepare aeronautics lectures</li>
+				<li>Work on the alcohol-fuelled engine</li>
+			</ul>
+		</div>
+	);
+}
+```
+
+```js
+export function getImageUrl(person) {
+	return "https://i.imgur.com/" + person.imageId + person.imageSize + ".jpg";
+}
+```
+
+```css
+body {
+	padding: 0;
+	margin: 0;
+}
+body > div > div {
+	padding: 20px;
+}
+.avatar {
+	border-radius: 50%;
+}
+```
+
+Variables and functions can help you keep the markup simple!
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/queueing-a-series-of-state-updates.md b/docs/src/learn/queueing-a-series-of-state-updates.md
new file mode 100644
index 000000000..c2704d046
--- /dev/null
+++ b/docs/src/learn/queueing-a-series-of-state-updates.md
@@ -0,0 +1,560 @@
+---
+title: Queueing a Series of State Updates 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Setting a state variable will queue another render. But sometimes you might want to perform multiple operations on the value before queueing the next render. To do this, it helps to understand how React batches state updates.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What "batching" is and how React uses it to process multiple state updates
+    -   How to apply several updates to the same state variable in a row
+
+## React batches state updates
+
+You might expect that clicking the "+3" button will increment the counter three times because it calls `setNumber(number + 1)` three times:
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [number, setNumber] = useState(0);
+
+	return (
+		<>
+			<h1>{number}</h1>
+			<button
+				on_click={() => {
+					setNumber(number + 1);
+					setNumber(number + 1);
+					setNumber(number + 1);
+				}}
+			>
+				+3
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: inline-block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: inline-block;
+	margin: 10px;
+	width: 30px;
+	text-align: center;
+}
+```
+
+However, as you might recall from the previous section, [each render's state values are fixed](/learn/state-as-a-snapshot#rendering-takes-a-snapshot-in-time), so the value of `number` inside the first render's event handler is always `0`, no matter how many times you call `setNumber(1)`:
+
+```js
+setNumber(0 + 1);
+setNumber(0 + 1);
+setNumber(0 + 1);
+```
+
+But there is one other factor at play here. **React waits until _all_ code in the event handlers has run before processing your state updates.** This is why the re-render only happens _after_ all these `setNumber()` calls.
+
+This might remind you of a waiter taking an order at the restaurant. A waiter doesn't run to the kitchen at the mention of your first dish! Instead, they let you finish your order, let you make changes to it, and even take orders from other people at the table.
+
+<Illustration src="/images/docs/illustrations/i_react-batching.png"  alt="An elegant cursor at a restaurant places and order multiple times with React, playing the part of the waiter. After she calls setState() multiple times, the waiter writes down the last one she requested as her final order." />
+
+This lets you update multiple state variables--even from multiple components--without triggering too many [re-renders.](/learn/render-and-commit#re-renders-when-state-updates) But this also means that the UI won't be updated until _after_ your event handler, and any code in it, completes. This behavior, also known as **batching,** makes your React app run much faster. It also avoids dealing with confusing "half-finished" renders where only some of the variables have been updated.
+
+**React does not batch across _multiple_ intentional events like clicks**--each click is handled separately. Rest assured that React only does batching when it's generally safe to do. This ensures that, for example, if the first button click disables a form, the second click would not submit it again.
+
+## Updating the same state multiple times before the next render
+
+It is an uncommon use case, but if you would like to update the same state variable multiple times before the next render, instead of passing the _next state value_ like `setNumber(number + 1)`, you can pass a _function_ that calculates the next state based on the previous one in the queue, like `setNumber(n => n + 1)`. It is a way to tell React to "do something with the state value" instead of just replacing it.
+
+Try incrementing the counter now:
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [number, setNumber] = useState(0);
+
+	return (
+		<>
+			<h1>{number}</h1>
+			<button
+				on_click={() => {
+					setNumber((n) => n + 1);
+					setNumber((n) => n + 1);
+					setNumber((n) => n + 1);
+				}}
+			>
+				+3
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: inline-block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: inline-block;
+	margin: 10px;
+	width: 30px;
+	text-align: center;
+}
+```
+
+Here, `n => n + 1` is called an **updater function.** When you pass it to a state setter:
+
+1. React queues this function to be processed after all the other code in the event handler has run.
+2. During the next render, React goes through the queue and gives you the final updated state.
+
+```js
+setNumber((n) => n + 1);
+setNumber((n) => n + 1);
+setNumber((n) => n + 1);
+```
+
+Here's how React works through these lines of code while executing the event handler:
+
+1. `setNumber(n => n + 1)`: `n => n + 1` is a function. React adds it to a queue.
+1. `setNumber(n => n + 1)`: `n => n + 1` is a function. React adds it to a queue.
+1. `setNumber(n => n + 1)`: `n => n + 1` is a function. React adds it to a queue.
+
+When you call `useState` during the next render, React goes through the queue. The previous `number` state was `0`, so that's what React passes to the first updater function as the `n` argument. Then React takes the return value of your previous updater function and passes it to the next updater as `n`, and so on:
+
+| queued update | `n` | returns     |
+| ------------- | --- | ----------- |
+| `n => n + 1`  | `0` | `0 + 1 = 1` |
+| `n => n + 1`  | `1` | `1 + 1 = 2` |
+| `n => n + 1`  | `2` | `2 + 1 = 3` |
+
+React stores `3` as the final result and returns it from `useState`.
+
+This is why clicking "+3" in the above example correctly increments the value by 3.
+
+### What happens if you update state after replacing it
+
+What about this event handler? What do you think `number` will be in the next render?
+
+```js
+<button on_click={() => {
+  setNumber(number + 5);
+  setNumber(n => n + 1);
+}}>
+```
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [number, setNumber] = useState(0);
+
+	return (
+		<>
+			<h1>{number}</h1>
+			<button
+				on_click={() => {
+					setNumber(number + 5);
+					setNumber((n) => n + 1);
+				}}
+			>
+				Increase the number
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: inline-block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: inline-block;
+	margin: 10px;
+	width: 30px;
+	text-align: center;
+}
+```
+
+Here's what this event handler tells React to do:
+
+1. `setNumber(number + 5)`: `number` is `0`, so `setNumber(0 + 5)`. React adds _"replace with `5`"_ to its queue.
+2. `setNumber(n => n + 1)`: `n => n + 1` is an updater function. React adds _that function_ to its queue.
+
+During the next render, React goes through the state queue:
+
+| queued update      | `n`          | returns     |
+| ------------------ | ------------ | ----------- |
+| "replace with `5`" | `0` (unused) | `5`         |
+| `n => n + 1`       | `5`          | `5 + 1 = 6` |
+
+React stores `6` as the final result and returns it from `useState`.
+
+<Note>
+
+You may have noticed that `setState(5)` actually works like `setState(n => 5)`, but `n` is unused!
+
+</Note>
+
+### What happens if you replace state after updating it
+
+Let's try one more example. What do you think `number` will be in the next render?
+
+```js
+<button on_click={() => {
+  setNumber(number + 5);
+  setNumber(n => n + 1);
+  setNumber(42);
+}}>
+```
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [number, setNumber] = useState(0);
+
+	return (
+		<>
+			<h1>{number}</h1>
+			<button
+				on_click={() => {
+					setNumber(number + 5);
+					setNumber((n) => n + 1);
+					setNumber(42);
+				}}
+			>
+				Increase the number
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: inline-block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: inline-block;
+	margin: 10px;
+	width: 30px;
+	text-align: center;
+}
+```
+
+Here's how React works through these lines of code while executing this event handler:
+
+1. `setNumber(number + 5)`: `number` is `0`, so `setNumber(0 + 5)`. React adds _"replace with `5`"_ to its queue.
+2. `setNumber(n => n + 1)`: `n => n + 1` is an updater function. React adds _that function_ to its queue.
+3. `setNumber(42)`: React adds _"replace with `42`"_ to its queue.
+
+During the next render, React goes through the state queue:
+
+| queued update       | `n`          | returns     |
+| ------------------- | ------------ | ----------- |
+| "replace with `5`"  | `0` (unused) | `5`         |
+| `n => n + 1`        | `5`          | `5 + 1 = 6` |
+| "replace with `42`" | `6` (unused) | `42`        |
+
+Then React stores `42` as the final result and returns it from `useState`.
+
+To summarize, here's how you can think of what you're passing to the `setNumber` state setter:
+
+-   **An updater function** (e.g. `n => n + 1`) gets added to the queue.
+-   **Any other value** (e.g. number `5`) adds "replace with `5`" to the queue, ignoring what's already queued.
+
+After the event handler completes, React will trigger a re-render. During the re-render, React will process the queue. Updater functions run during rendering, so **updater functions must be [pure](/learn/keeping-components-pure)** and only _return_ the result. Don't try to set state from inside of them or run other side effects. In Strict Mode, React will run each updater function twice (but discard the second result) to help you find mistakes.
+
+### Naming conventions
+
+It's common to name the updater function argument by the first letters of the corresponding state variable:
+
+```js
+setEnabled((e) => !e);
+setLastName((ln) => ln.reverse());
+setFriendCount((fc) => fc * 2);
+```
+
+If you prefer more verbose code, another common convention is to repeat the full state variable name, like `setEnabled(enabled => !enabled)`, or to use a prefix like `setEnabled(prevEnabled => !prevEnabled)`.
+
+<Recap>
+
+-   Setting state does not change the variable in the existing render, but it requests a new render.
+-   React processes state updates after event handlers have finished running. This is called batching.
+-   To update some state multiple times in one event, you can use `setNumber(n => n + 1)` updater function.
+
+</Recap>
+
+<Challenges>
+
+#### Fix a request counter
+
+You're working on an art marketplace app that lets the user submit multiple orders for an art item at the same time. Each time the user presses the "Buy" button, the "Pending" counter should increase by one. After three seconds, the "Pending" counter should decrease, and the "Completed" counter should increase.
+
+However, the "Pending" counter does not behave as intended. When you press "Buy", it decreases to `-1` (which should not be possible!). And if you click fast twice, both counters seem to behave unpredictably.
+
+Why does this happen? Fix both counters.
+
+```js
+import { useState } from "react";
+
+export default function RequestTracker() {
+	const [pending, setPending] = useState(0);
+	const [completed, setCompleted] = useState(0);
+
+	async function handleClick() {
+		setPending(pending + 1);
+		await delay(3000);
+		setPending(pending - 1);
+		setCompleted(completed + 1);
+	}
+
+	return (
+		<>
+			<h3>Pending: {pending}</h3>
+			<h3>Completed: {completed}</h3>
+			<button on_click={handleClick}>Buy</button>
+		</>
+	);
+}
+
+function delay(ms) {
+	return new Promise((resolve) => {
+		setTimeout(resolve, ms);
+	});
+}
+```
+
+<Solution>
+
+Inside the `handleClick` event handler, the values of `pending` and `completed` correspond to what they were at the time of the click event. For the first render, `pending` was `0`, so `setPending(pending - 1)` becomes `setPending(-1)`, which is wrong. Since you want to _increment_ or _decrement_ the counters, rather than set them to a concrete value determined during the click, you can instead pass the updater functions:
+
+```js
+import { useState } from "react";
+
+export default function RequestTracker() {
+	const [pending, setPending] = useState(0);
+	const [completed, setCompleted] = useState(0);
+
+	async function handleClick() {
+		setPending((p) => p + 1);
+		await delay(3000);
+		setPending((p) => p - 1);
+		setCompleted((c) => c + 1);
+	}
+
+	return (
+		<>
+			<h3>Pending: {pending}</h3>
+			<h3>Completed: {completed}</h3>
+			<button on_click={handleClick}>Buy</button>
+		</>
+	);
+}
+
+function delay(ms) {
+	return new Promise((resolve) => {
+		setTimeout(resolve, ms);
+	});
+}
+```
+
+This ensures that when you increment or decrement a counter, you do it in relation to its _latest_ state rather than what the state was at the time of the click.
+
+</Solution>
+
+#### Implement the state queue yourself
+
+In this challenge, you will reimplement a tiny part of React from scratch! It's not as hard as it sounds.
+
+Scroll through the sandbox preview. Notice that it shows **four test cases.** They correspond to the examples you've seen earlier on this page. Your task is to implement the `getFinalState` function so that it returns the correct result for each of those cases. If you implement it correctly, all four tests should pass.
+
+You will receive two arguments: `baseState` is the initial state (like `0`), and the `queue` is an array which contains a mix of numbers (like `5`) and updater functions (like `n => n + 1`) in the order they were added.
+
+Your task is to return the final state, just like the tables on this page show!
+
+<Hint>
+
+If you're feeling stuck, start with this code structure:
+
+```js
+export function getFinalState(baseState, queue) {
+	let finalState = baseState;
+
+	for (let update of queue) {
+		if (typeof update === "function") {
+			// TODO: apply the updater function
+		} else {
+			// TODO: replace the state
+		}
+	}
+
+	return finalState;
+}
+```
+
+Fill out the missing lines!
+
+</Hint>
+
+```js
+export function getFinalState(baseState, queue) {
+	let finalState = baseState;
+
+	// TODO: do something with the queue...
+
+	return finalState;
+}
+```
+
+```js
+import { getFinalState } from "./processQueue.js";
+
+function increment(n) {
+	return n + 1;
+}
+increment.toString = () => "n => n+1";
+
+export default function App() {
+	return (
+		<>
+			<TestCase baseState={0} queue={[1, 1, 1]} expected={1} />
+			<hr />
+			<TestCase
+				baseState={0}
+				queue={[increment, increment, increment]}
+				expected={3}
+			/>
+			<hr />
+			<TestCase baseState={0} queue={[5, increment]} expected={6} />
+			<hr />
+			<TestCase baseState={0} queue={[5, increment, 42]} expected={42} />
+		</>
+	);
+}
+
+function TestCase({ baseState, queue, expected }) {
+	const actual = getFinalState(baseState, queue);
+	return (
+		<>
+			<p>
+				Base state: <b>{baseState}</b>
+			</p>
+			<p>
+				Queue: <b>[{queue.join(", ")}]</b>
+			</p>
+			<p>
+				Expected result: <b>{expected}</b>
+			</p>
+			<p
+				style={{
+					color: actual === expected ? "green" : "red",
+				}}
+			>
+				Your result: <b>{actual}</b> (
+				{actual === expected ? "correct" : "wrong"})
+			</p>
+		</>
+	);
+}
+```
+
+<Solution>
+
+This is the exact algorithm described on this page that React uses to calculate the final state:
+
+```js
+export function getFinalState(baseState, queue) {
+	let finalState = baseState;
+
+	for (let update of queue) {
+		if (typeof update === "function") {
+			// Apply the updater function.
+			finalState = update(finalState);
+		} else {
+			// Replace the next state.
+			finalState = update;
+		}
+	}
+
+	return finalState;
+}
+```
+
+```js
+import { getFinalState } from "./processQueue.js";
+
+function increment(n) {
+	return n + 1;
+}
+increment.toString = () => "n => n+1";
+
+export default function App() {
+	return (
+		<>
+			<TestCase baseState={0} queue={[1, 1, 1]} expected={1} />
+			<hr />
+			<TestCase
+				baseState={0}
+				queue={[increment, increment, increment]}
+				expected={3}
+			/>
+			<hr />
+			<TestCase baseState={0} queue={[5, increment]} expected={6} />
+			<hr />
+			<TestCase baseState={0} queue={[5, increment, 42]} expected={42} />
+		</>
+	);
+}
+
+function TestCase({ baseState, queue, expected }) {
+	const actual = getFinalState(baseState, queue);
+	return (
+		<>
+			<p>
+				Base state: <b>{baseState}</b>
+			</p>
+			<p>
+				Queue: <b>[{queue.join(", ")}]</b>
+			</p>
+			<p>
+				Expected result: <b>{expected}</b>
+			</p>
+			<p
+				style={{
+					color: actual === expected ? "green" : "red",
+				}}
+			>
+				Your result: <b>{actual}</b> (
+				{actual === expected ? "correct" : "wrong"})
+			</p>
+		</>
+	);
+}
+```
+
+Now you know how this part of React works!
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
new file mode 100644
index 000000000..d951fae3c
--- /dev/null
+++ b/docs/src/learn/react-developer-tools.md
@@ -0,0 +1,85 @@
+---
+title: React Developer Tools 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Use React Developer Tools to inspect React [components](/learn/your-first-component), edit [props](/learn/passing-props-to-a-component) and [state](/learn/state-a-components-memory), and identify performance problems.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to install React Developer Tools
+
+## Browser extension
+
+The easiest way to debug websites built with React is to install the React Developer Tools browser extension. It is available for several popular browsers:
+
+-   [Install for **Chrome**](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en)
+-   [Install for **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/)
+-   [Install for **Edge**](https://microsoftedge.microsoft.com/addons/detail/react-developer-tools/gpphkfbcpidddadnkolkpfckpihlkkil)
+
+Now, if you visit a website **built with React,** you will see the _Components_ and _Profiler_ panels.
+
+![React Developer Tools extension](/images/docs/react-devtools-extension.png)
+
+### Safari and other browsers
+
+For other browsers (for example, Safari), install the [`react-devtools`](https://www.npmjs.com/package/react-devtools) npm package:
+
+```bash
+# Yarn
+yarn global add react-devtools
+
+# Npm
+npm install -g react-devtools
+```
+
+Next open the developer tools from the terminal:
+
+```bash
+react-devtools
+```
+
+Then connect your website by adding the following `<script>` tag to the beginning of your website's `<head>`:
+
+```html
+<html>
+	<head>
+		<script src="http://localhost:8097"></script>
+	</head>
+</html>
+```
+
+Reload your website in the browser now to view it in developer tools.
+
+![React Developer Tools standalone](/images/docs/react-devtools-standalone.png)
+
+## Mobile (React Native)
+
+React Developer Tools can be used to inspect apps built with [React Native](https://reactnative.dev/) as well.
+
+The easiest way to use React Developer Tools is to install it globally:
+
+```bash
+# Yarn
+yarn global add react-devtools
+
+# Npm
+npm install -g react-devtools
+```
+
+Next open the developer tools from the terminal.
+
+```bash
+react-devtools
+```
+
+It should connect to any local React Native app that's running.
+
+> Try reloading the app if developer tools doesn't connect after a few seconds.
+
+[Learn more about debugging React Native.](https://reactnative.dev/docs/debugging)
diff --git a/docs/src/learn/reacting-to-input-with-state.md b/docs/src/learn/reacting-to-input-with-state.md
new file mode 100644
index 000000000..2ad1390f9
--- /dev/null
+++ b/docs/src/learn/reacting-to-input-with-state.md
@@ -0,0 +1,1179 @@
+---
+title: Reacting to Input with State 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+React provides a declarative way to manipulate the UI. Instead of manipulating individual pieces of the UI directly, you describe the different states that your component can be in, and switch between them in response to the user input. This is similar to how designers think about the UI.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How declarative UI programming differs from imperative UI programming
+    -   How to enumerate the different visual states your component can be in
+    -   How to trigger the changes between the different visual states from code
+
+## How declarative UI compares to imperative
+
+When you design UI interactions, you probably think about how the UI _changes_ in response to user actions. Consider a form that lets the user submit an answer:
+
+-   When you type something into the form, the "Submit" button **becomes enabled.**
+-   When you press "Submit", both the form and the button **become disabled,** and a spinner **appears.**
+-   If the network request succeeds, the form **gets hidden,** and the "Thank you" message **appears.**
+-   If the network request fails, an error message **appears,** and the form **becomes enabled** again.
+
+In **imperative programming,** the above corresponds directly to how you implement interaction. You have to write the exact instructions to manipulate the UI depending on what just happened. Here's another way to think about this: imagine riding next to someone in a car and telling them turn by turn where to go.
+
+<Illustration src="/images/docs/illustrations/i_imperative-ui-programming.png"  alt="In a car driven by an anxious-looking person representing JavaScript, a passenger orders the driver to execute a sequence of complicated turn by turn navigations." />
+
+They don't know where you want to go, they just follow your commands. (And if you get the directions wrong, you end up in the wrong place!) It's called _imperative_ because you have to "command" each element, from the spinner to the button, telling the computer _how_ to update the UI.
+
+In this example of imperative UI programming, the form is built _without_ React. It only uses the browser [DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model):
+
+```js
+async function handleFormSubmit(e) {
+	e.preventDefault();
+	disable(textarea);
+	disable(button);
+	show(loadingMessage);
+	hide(errorMessage);
+	try {
+		await submitForm(textarea.value);
+		show(successMessage);
+		hide(form);
+	} catch (err) {
+		show(errorMessage);
+		errorMessage.textContent = err.message;
+	} finally {
+		hide(loadingMessage);
+		enable(textarea);
+		enable(button);
+	}
+}
+
+function handleTextareaChange() {
+	if (textarea.value.length === 0) {
+		disable(button);
+	} else {
+		enable(button);
+	}
+}
+
+function hide(el) {
+	el.style.display = "none";
+}
+
+function show(el) {
+	el.style.display = "";
+}
+
+function enable(el) {
+	el.disabled = false;
+}
+
+function disable(el) {
+	el.disabled = true;
+}
+
+function submitForm(answer) {
+	// Pretend it's hitting the network.
+	return new Promise((resolve, reject) => {
+		setTimeout(() => {
+			if (answer.toLowerCase() == "istanbul") {
+				resolve();
+			} else {
+				reject(new Error("Good guess but a wrong answer. Try again!"));
+			}
+		}, 1500);
+	});
+}
+
+let form = document.getElementById("form");
+let textarea = document.getElementById("textarea");
+let button = document.getElementById("button");
+let loadingMessage = document.getElementById("loading");
+let errorMessage = document.getElementById("error");
+let successMessage = document.getElementById("success");
+form.onsubmit = handleFormSubmit;
+textarea.oninput = handleTextareaChange;
+```
+
+```js
+{
+  "hardReloadOnChange": true
+}
+```
+
+```html
+<form id="form">
+	<h2>City quiz</h2>
+	<p>What city is located on two continents?</p>
+	<textarea id="textarea"></textarea>
+	<br />
+	<button id="button" disabled>Submit</button>
+	<p id="loading" style="display: none">Loading...</p>
+	<p id="error" style="display: none; color: red;"></p>
+</form>
+<h1 id="success" style="display: none">That's right!</h1>
+
+<style>
+	* {
+		box-sizing: border-box;
+	}
+	body {
+		font-family: sans-serif;
+		margin: 20px;
+		padding: 0;
+	}
+</style>
+```
+
+Manipulating the UI imperatively works well enough for isolated examples, but it gets exponentially more difficult to manage in more complex systems. Imagine updating a page full of different forms like this one. Adding a new UI element or a new interaction would require carefully checking all existing code to make sure you haven't introduced a bug (for example, forgetting to show or hide something).
+
+React was built to solve this problem.
+
+In React, you don't directly manipulate the UI--meaning you don't enable, disable, show, or hide components directly. Instead, you **declare what you want to show,** and React figures out how to update the UI. Think of getting into a taxi and telling the driver where you want to go instead of telling them exactly where to turn. It's the driver's job to get you there, and they might even know some shortcuts you haven't considered!
+
+<Illustration src="/images/docs/illustrations/i_declarative-ui-programming.png" alt="In a car driven by React, a passenger asks to be taken to a specific place on the map. React figures out how to do that." />
+
+## Thinking about UI declaratively
+
+You've seen how to implement a form imperatively above. To better understand how to think in React, you'll walk through reimplementing this UI in React below:
+
+1. **Identify** your component's different visual states
+2. **Determine** what triggers those state changes
+3. **Represent** the state in memory using `useState`
+4. **Remove** any non-essential state variables
+5. **Connect** the event handlers to set the state
+
+### Step 1: Identify your component's different visual states
+
+In computer science, you may hear about a ["state machine"](https://en.wikipedia.org/wiki/Finite-state_machine) being in one of several “states”. If you work with a designer, you may have seen mockups for different "visual states". React stands at the intersection of design and computer science, so both of these ideas are sources of inspiration.
+
+First, you need to visualize all the different "states" of the UI the user might see:
+
+-   **Empty**: Form has a disabled "Submit" button.
+-   **Typing**: Form has an enabled "Submit" button.
+-   **Submitting**: Form is completely disabled. Spinner is shown.
+-   **Success**: "Thank you" message is shown instead of a form.
+-   **Error**: Same as Typing state, but with an extra error message.
+
+Just like a designer, you'll want to "mock up" or create "mocks" for the different states before you add logic. For example, here is a mock for just the visual part of the form. This mock is controlled by a prop called `status` with a default value of `'empty'`:
+
+```js
+export default function Form({ status = "empty" }) {
+	if (status === "success") {
+		return <h1>That's right!</h1>;
+	}
+	return (
+		<>
+			<h2>City quiz</h2>
+			<p>
+				In which city is there a billboard that turns air into drinkable
+				water?
+			</p>
+			<form>
+				<textarea />
+				<br />
+				<button>Submit</button>
+			</form>
+		</>
+	);
+}
+```
+
+You could call that prop anything you like, the naming is not important. Try editing `status = 'empty'` to `status = 'success'` to see the success message appear. Mocking lets you quickly iterate on the UI before you wire up any logic. Here is a more fleshed out prototype of the same component, still "controlled" by the `status` prop:
+
+```js
+export default function Form({
+	// Try 'submitting', 'error', 'success':
+	status = "empty",
+}) {
+	if (status === "success") {
+		return <h1>That's right!</h1>;
+	}
+	return (
+		<>
+			<h2>City quiz</h2>
+			<p>
+				In which city is there a billboard that turns air into drinkable
+				water?
+			</p>
+			<form>
+				<textarea disabled={status === "submitting"} />
+				<br />
+				<button
+					disabled={status === "empty" || status === "submitting"}
+				>
+					Submit
+				</button>
+				{status === "error" && (
+					<p className="Error">
+						Good guess but a wrong answer. Try again!
+					</p>
+				)}
+			</form>
+		</>
+	);
+}
+```
+
+```css
+.Error {
+	color: red;
+}
+```
+
+<DeepDive>
+
+#### Displaying many visual states at once
+
+If a component has a lot of visual states, it can be convenient to show them all on one page:
+
+```js
+import Form from "./Form.js";
+
+let statuses = ["empty", "typing", "submitting", "success", "error"];
+
+export default function App() {
+	return (
+		<>
+			{statuses.map((status) => (
+				<section key={status}>
+					<h4>Form ({status}):</h4>
+					<Form status={status} />
+				</section>
+			))}
+		</>
+	);
+}
+```
+
+```js
+export default function Form({ status }) {
+	if (status === "success") {
+		return <h1>That's right!</h1>;
+	}
+	return (
+		<form>
+			<textarea disabled={status === "submitting"} />
+			<br />
+			<button disabled={status === "empty" || status === "submitting"}>
+				Submit
+			</button>
+			{status === "error" && (
+				<p className="Error">
+					Good guess but a wrong answer. Try again!
+				</p>
+			)}
+		</form>
+	);
+}
+```
+
+```css
+section {
+	border-bottom: 1px solid #aaa;
+	padding: 20px;
+}
+h4 {
+	color: #222;
+}
+body {
+	margin: 0;
+}
+.Error {
+	color: red;
+}
+```
+
+Pages like this are often called "living styleguides" or "storybooks".
+
+</DeepDive>
+
+### Step 2: Determine what triggers those state changes
+
+You can trigger state updates in response to two kinds of inputs:
+
+-   **Human inputs,** like clicking a button, typing in a field, navigating a link.
+-   **Computer inputs,** like a network response arriving, a timeout completing, an image loading.
+
+<IllustrationBlock>
+  <Illustration caption="Human inputs" alt="A finger." src="/images/docs/illustrations/i_inputs1.png" />
+  <Illustration caption="Computer inputs" alt="Ones and zeroes." src="/images/docs/illustrations/i_inputs2.png" />
+</IllustrationBlock>
+
+In both cases, **you must set [state variables](/learn/state-a-components-memory#anatomy-of-usestate) to update the UI.** For the form you're developing, you will need to change state in response to a few different inputs:
+
+-   **Changing the text input** (human) should switch it from the _Empty_ state to the _Typing_ state or back, depending on whether the text box is empty or not.
+-   **Clicking the Submit button** (human) should switch it to the _Submitting_ state.
+-   **Successful network response** (computer) should switch it to the _Success_ state.
+-   **Failed network response** (computer) should switch it to the _Error_ state with the matching error message.
+
+<Note>
+
+Notice that human inputs often require [event handlers](/learn/responding-to-events)!
+
+</Note>
+
+To help visualize this flow, try drawing each state on paper as a labeled circle, and each change between two states as an arrow. You can sketch out many flows this way and sort out bugs long before implementation.
+
+<!-- TODO: Diagram -->
+
+### Step 3: Represent the state in memory with `useState`
+
+Next you'll need to represent the visual states of your component in memory with [`useState`.](/reference/react/useState) Simplicity is key: each piece of state is a "moving piece", and **you want as few "moving pieces" as possible.** More complexity leads to more bugs!
+
+Start with the state that _absolutely must_ be there. For example, you'll need to store the `answer` for the input, and the `error` (if it exists) to store the last error:
+
+```js
+const [answer, setAnswer] = useState("");
+const [error, setError] = useState(null);
+```
+
+Then, you'll need a state variable representing which one of the visual states that you want to display. There's usually more than a single way to represent that in memory, so you'll need to experiment with it.
+
+If you struggle to think of the best way immediately, start by adding enough state that you're _definitely_ sure that all the possible visual states are covered:
+
+```js
+const [isEmpty, setIsEmpty] = useState(true);
+const [isTyping, setIsTyping] = useState(false);
+const [isSubmitting, setIsSubmitting] = useState(false);
+const [isSuccess, setIsSuccess] = useState(false);
+const [isError, setIsError] = useState(false);
+```
+
+Your first idea likely won't be the best, but that's ok--refactoring state is a part of the process!
+
+### Step 4: Remove any non-essential state variables
+
+You want to avoid duplication in the state content so you're only tracking what is essential. Spending a little time on refactoring your state structure will make your components easier to understand, reduce duplication, and avoid unintended meanings. Your goal is to **prevent the cases where the state in memory doesn't represent any valid UI that you'd want a user to see.** (For example, you never want to show an error message and disable the input at the same time, or the user won't be able to correct the error!)
+
+Here are some questions you can ask about your state variables:
+
+-   **Does this state cause a paradox?** For example, `isTyping` and `isSubmitting` can't both be `true`. A paradox usually means that the state is not constrained enough. There are four possible combinations of two booleans, but only three correspond to valid states. To remove the "impossible" state, you can combine these into a `status` that must be one of three values: `'typing'`, `'submitting'`, or `'success'`.
+-   **Is the same information available in another state variable already?** Another paradox: `isEmpty` and `isTyping` can't be `true` at the same time. By making them separate state variables, you risk them going out of sync and causing bugs. Fortunately, you can remove `isEmpty` and instead check `answer.length === 0`.
+-   **Can you get the same information from the inverse of another state variable?** `isError` is not needed because you can check `error !== null` instead.
+
+After this clean-up, you're left with 3 (down from 7!) _essential_ state variables:
+
+```js
+const [answer, setAnswer] = useState("");
+const [error, setError] = useState(null);
+const [status, setStatus] = useState("typing"); // 'typing', 'submitting', or 'success'
+```
+
+You know they are essential, because you can't remove any of them without breaking the functionality.
+
+<DeepDive>
+
+#### Eliminating “impossible” states with a reducer
+
+These three variables are a good enough representation of this form's state. However, there are still some intermediate states that don't fully make sense. For example, a non-null `error` doesn't make sense when `status` is `'success'`. To model the state more precisely, you can [extract it into a reducer.](/learn/extracting-state-logic-into-a-reducer) Reducers let you unify multiple state variables into a single object and consolidate all the related logic!
+
+</DeepDive>
+
+### Step 5: Connect the event handlers to set state
+
+Lastly, create event handlers that update the state. Below is the final form, with all event handlers wired up:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [answer, setAnswer] = useState("");
+	const [error, setError] = useState(null);
+	const [status, setStatus] = useState("typing");
+
+	if (status === "success") {
+		return <h1>That's right!</h1>;
+	}
+
+	async function handleSubmit(e) {
+		e.preventDefault();
+		setStatus("submitting");
+		try {
+			await submitForm(answer);
+			setStatus("success");
+		} catch (err) {
+			setStatus("typing");
+			setError(err);
+		}
+	}
+
+	function handleTextareaChange(e) {
+		setAnswer(e.target.value);
+	}
+
+	return (
+		<>
+			<h2>City quiz</h2>
+			<p>
+				In which city is there a billboard that turns air into drinkable
+				water?
+			</p>
+			<form onSubmit={handleSubmit}>
+				<textarea
+					value={answer}
+					onChange={handleTextareaChange}
+					disabled={status === "submitting"}
+				/>
+				<br />
+				<button
+					disabled={answer.length === 0 || status === "submitting"}
+				>
+					Submit
+				</button>
+				{error !== null && <p className="Error">{error.message}</p>}
+			</form>
+		</>
+	);
+}
+
+function submitForm(answer) {
+	// Pretend it's hitting the network.
+	return new Promise((resolve, reject) => {
+		setTimeout(() => {
+			let shouldError = answer.toLowerCase() !== "lima";
+			if (shouldError) {
+				reject(new Error("Good guess but a wrong answer. Try again!"));
+			} else {
+				resolve();
+			}
+		}, 1500);
+	});
+}
+```
+
+```css
+.Error {
+	color: red;
+}
+```
+
+Although this code is longer than the original imperative example, it is much less fragile. Expressing all interactions as state changes lets you later introduce new visual states without breaking existing ones. It also lets you change what should be displayed in each state without changing the logic of the interaction itself.
+
+<Recap>
+
+-   Declarative programming means describing the UI for each visual state rather than micromanaging the UI (imperative).
+-   When developing a component:
+    1. Identify all its visual states.
+    2. Determine the human and computer triggers for state changes.
+    3. Model the state with `useState`.
+    4. Remove non-essential state to avoid bugs and paradoxes.
+    5. Connect the event handlers to set state.
+
+</Recap>
+
+<Challenges>
+
+#### Add and remove a CSS class
+
+Make it so that clicking on the picture _removes_ the `background--active` CSS class from the outer `<div>`, but _adds_ the `picture--active` class to the `<img>`. Clicking the background again should restore the original CSS classes.
+
+Visually, you should expect that clicking on the picture removes the purple background and highlights the picture border. Clicking outside the picture highlights the background, but removes the picture border highlight.
+
+```js
+export default function Picture() {
+	return (
+		<div className="background background--active">
+			<img
+				className="picture"
+				alt="Rainbow houses in Kampung Pelangi, Indonesia"
+				src="https://i.imgur.com/5qwVYb1.jpeg"
+			/>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	margin: 0;
+	padding: 0;
+	height: 250px;
+}
+
+.background {
+	width: 100vw;
+	height: 100vh;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	background: #eee;
+}
+
+.background--active {
+	background: #a6b5ff;
+}
+
+.picture {
+	width: 200px;
+	height: 200px;
+	border-radius: 10px;
+}
+
+.picture--active {
+	border: 5px solid #a6b5ff;
+}
+```
+
+<Solution>
+
+This component has two visual states: when the image is active, and when the image is inactive:
+
+-   When the image is active, the CSS classes are `background` and `picture picture--active`.
+-   When the image is inactive, the CSS classes are `background background--active` and `picture`.
+
+A single boolean state variable is enough to remember whether the image is active. The original task was to remove or add CSS classes. However, in React you need to _describe_ what you want to see rather than _manipulate_ the UI elements. So you need to calculate both CSS classes based on the current state. You also need to [stop the propagation](/learn/responding-to-events#stopping-propagation) so that clicking the image doesn't register as a click on the background.
+
+Verify that this version works by clicking the image and then outside of it:
+
+```js
+import { useState } from "react";
+
+export default function Picture() {
+	const [isActive, setIsActive] = useState(false);
+
+	let backgroundClassName = "background";
+	let pictureClassName = "picture";
+	if (isActive) {
+		pictureClassName += " picture--active";
+	} else {
+		backgroundClassName += " background--active";
+	}
+
+	return (
+		<div
+			className={backgroundClassName}
+			on_click={() => setIsActive(false)}
+		>
+			<img
+				on_click={(e) => {
+					e.stopPropagation();
+					setIsActive(true);
+				}}
+				className={pictureClassName}
+				alt="Rainbow houses in Kampung Pelangi, Indonesia"
+				src="https://i.imgur.com/5qwVYb1.jpeg"
+			/>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	margin: 0;
+	padding: 0;
+	height: 250px;
+}
+
+.background {
+	width: 100vw;
+	height: 100vh;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	background: #eee;
+}
+
+.background--active {
+	background: #a6b5ff;
+}
+
+.picture {
+	width: 200px;
+	height: 200px;
+	border-radius: 10px;
+	border: 5px solid transparent;
+}
+
+.picture--active {
+	border: 5px solid #a6b5ff;
+}
+```
+
+Alternatively, you could return two separate chunks of JSX:
+
+```js
+import { useState } from "react";
+
+export default function Picture() {
+	const [isActive, setIsActive] = useState(false);
+	if (isActive) {
+		return (
+			<div className="background" on_click={() => setIsActive(false)}>
+				<img
+					className="picture picture--active"
+					alt="Rainbow houses in Kampung Pelangi, Indonesia"
+					src="https://i.imgur.com/5qwVYb1.jpeg"
+					on_click={(e) => e.stopPropagation()}
+				/>
+			</div>
+		);
+	}
+	return (
+		<div className="background background--active">
+			<img
+				className="picture"
+				alt="Rainbow houses in Kampung Pelangi, Indonesia"
+				src="https://i.imgur.com/5qwVYb1.jpeg"
+				on_click={() => setIsActive(true)}
+			/>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	margin: 0;
+	padding: 0;
+	height: 250px;
+}
+
+.background {
+	width: 100vw;
+	height: 100vh;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	background: #eee;
+}
+
+.background--active {
+	background: #a6b5ff;
+}
+
+.picture {
+	width: 200px;
+	height: 200px;
+	border-radius: 10px;
+	border: 5px solid transparent;
+}
+
+.picture--active {
+	border: 5px solid #a6b5ff;
+}
+```
+
+Keep in mind that if two different JSX chunks describe the same tree, their nesting (first `<div>` → first `<img>`) has to line up. Otherwise, toggling `isActive` would recreate the whole tree below and [reset its state.](/learn/preserving-and-resetting-state) This is why, if a similar JSX tree gets returned in both cases, it is better to write them as a single piece of JSX.
+
+</Solution>
+
+#### Profile editor
+
+Here is a small form implemented with plain JavaScript and DOM. Play with it to understand its behavior:
+
+```js
+function handleFormSubmit(e) {
+	e.preventDefault();
+	if (editButton.textContent === "Edit Profile") {
+		editButton.textContent = "Save Profile";
+		hide(firstNameText);
+		hide(lastNameText);
+		show(firstNameInput);
+		show(lastNameInput);
+	} else {
+		editButton.textContent = "Edit Profile";
+		hide(firstNameInput);
+		hide(lastNameInput);
+		show(firstNameText);
+		show(lastNameText);
+	}
+}
+
+function handleFirstNameChange() {
+	firstNameText.textContent = firstNameInput.value;
+	helloText.textContent =
+		"Hello " + firstNameInput.value + " " + lastNameInput.value + "!";
+}
+
+function handleLastNameChange() {
+	lastNameText.textContent = lastNameInput.value;
+	helloText.textContent =
+		"Hello " + firstNameInput.value + " " + lastNameInput.value + "!";
+}
+
+function hide(el) {
+	el.style.display = "none";
+}
+
+function show(el) {
+	el.style.display = "";
+}
+
+let form = document.getElementById("form");
+let editButton = document.getElementById("editButton");
+let firstNameInput = document.getElementById("firstNameInput");
+let firstNameText = document.getElementById("firstNameText");
+let lastNameInput = document.getElementById("lastNameInput");
+let lastNameText = document.getElementById("lastNameText");
+let helloText = document.getElementById("helloText");
+form.onsubmit = handleFormSubmit;
+firstNameInput.oninput = handleFirstNameChange;
+lastNameInput.oninput = handleLastNameChange;
+```
+
+```js
+{
+  "hardReloadOnChange": true
+}
+```
+
+```html
+<form id="form">
+	<label>
+		First name:
+		<b id="firstNameText">Jane</b>
+		<input id="firstNameInput" value="Jane" style="display: none" />
+	</label>
+	<label>
+		Last name:
+		<b id="lastNameText">Jacobs</b>
+		<input id="lastNameInput" value="Jacobs" style="display: none" />
+	</label>
+	<button type="submit" id="editButton">Edit Profile</button>
+	<p><i id="helloText">Hello, Jane Jacobs!</i></p>
+</form>
+
+<style>
+	* {
+		box-sizing: border-box;
+	}
+	body {
+		font-family: sans-serif;
+		margin: 20px;
+		padding: 0;
+	}
+	label {
+		display: block;
+		margin-bottom: 20px;
+	}
+</style>
+```
+
+This form switches between two modes: in the editing mode, you see the inputs, and in the viewing mode, you only see the result. The button label changes between "Edit" and "Save" depending on the mode you're in. When you change the inputs, the welcome message at the bottom updates in real time.
+
+Your task is to reimplement it in React in the sandbox below. For your convenience, the markup was already converted to JSX, but you'll need to make it show and hide the inputs like the original does.
+
+Make sure that it updates the text at the bottom, too!
+
+```js
+export default function EditProfile() {
+	return (
+		<form>
+			<label>
+				First name: <b>Jane</b>
+				<input />
+			</label>
+			<label>
+				Last name: <b>Jacobs</b>
+				<input />
+			</label>
+			<button type="submit">Edit Profile</button>
+			<p>
+				<i>Hello, Jane Jacobs!</i>
+			</p>
+		</form>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+<Solution>
+
+You will need two state variables to hold the input values: `firstName` and `lastName`. You're also going to need an `isEditing` state variable that holds whether to display the inputs or not. You should _not_ need a `fullName` variable because the full name can always be calculated from the `firstName` and the `lastName`.
+
+Finally, you should use [conditional rendering](/learn/conditional-rendering) to show or hide the inputs depending on `isEditing`.
+
+```js
+import { useState } from "react";
+
+export default function EditProfile() {
+	const [isEditing, setIsEditing] = useState(false);
+	const [firstName, setFirstName] = useState("Jane");
+	const [lastName, setLastName] = useState("Jacobs");
+
+	return (
+		<form
+			onSubmit={(e) => {
+				e.preventDefault();
+				setIsEditing(!isEditing);
+			}}
+		>
+			<label>
+				First name:{" "}
+				{isEditing ? (
+					<input
+						value={firstName}
+						onChange={(e) => {
+							setFirstName(e.target.value);
+						}}
+					/>
+				) : (
+					<b>{firstName}</b>
+				)}
+			</label>
+			<label>
+				Last name:{" "}
+				{isEditing ? (
+					<input
+						value={lastName}
+						onChange={(e) => {
+							setLastName(e.target.value);
+						}}
+					/>
+				) : (
+					<b>{lastName}</b>
+				)}
+			</label>
+			<button type="submit">{isEditing ? "Save" : "Edit"} Profile</button>
+			<p>
+				<i>
+					Hello, {firstName} {lastName}!
+				</i>
+			</p>
+		</form>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+Compare this solution to the original imperative code. How are they different?
+
+</Solution>
+
+#### Refactor the imperative solution without React
+
+Here is the original sandbox from the previous challenge, written imperatively without React:
+
+```js
+function handleFormSubmit(e) {
+	e.preventDefault();
+	if (editButton.textContent === "Edit Profile") {
+		editButton.textContent = "Save Profile";
+		hide(firstNameText);
+		hide(lastNameText);
+		show(firstNameInput);
+		show(lastNameInput);
+	} else {
+		editButton.textContent = "Edit Profile";
+		hide(firstNameInput);
+		hide(lastNameInput);
+		show(firstNameText);
+		show(lastNameText);
+	}
+}
+
+function handleFirstNameChange() {
+	firstNameText.textContent = firstNameInput.value;
+	helloText.textContent =
+		"Hello " + firstNameInput.value + " " + lastNameInput.value + "!";
+}
+
+function handleLastNameChange() {
+	lastNameText.textContent = lastNameInput.value;
+	helloText.textContent =
+		"Hello " + firstNameInput.value + " " + lastNameInput.value + "!";
+}
+
+function hide(el) {
+	el.style.display = "none";
+}
+
+function show(el) {
+	el.style.display = "";
+}
+
+let form = document.getElementById("form");
+let editButton = document.getElementById("editButton");
+let firstNameInput = document.getElementById("firstNameInput");
+let firstNameText = document.getElementById("firstNameText");
+let lastNameInput = document.getElementById("lastNameInput");
+let lastNameText = document.getElementById("lastNameText");
+let helloText = document.getElementById("helloText");
+form.onsubmit = handleFormSubmit;
+firstNameInput.oninput = handleFirstNameChange;
+lastNameInput.oninput = handleLastNameChange;
+```
+
+```js
+{
+  "hardReloadOnChange": true
+}
+```
+
+```html
+<form id="form">
+	<label>
+		First name:
+		<b id="firstNameText">Jane</b>
+		<input id="firstNameInput" value="Jane" style="display: none" />
+	</label>
+	<label>
+		Last name:
+		<b id="lastNameText">Jacobs</b>
+		<input id="lastNameInput" value="Jacobs" style="display: none" />
+	</label>
+	<button type="submit" id="editButton">Edit Profile</button>
+	<p><i id="helloText">Hello, Jane Jacobs!</i></p>
+</form>
+
+<style>
+	* {
+		box-sizing: border-box;
+	}
+	body {
+		font-family: sans-serif;
+		margin: 20px;
+		padding: 0;
+	}
+	label {
+		display: block;
+		margin-bottom: 20px;
+	}
+</style>
+```
+
+Imagine React didn't exist. Can you refactor this code in a way that makes the logic less fragile and more similar to the React version? What would it look like if the state was explicit, like in React?
+
+If you're struggling to think where to start, the stub below already has most of the structure in place. If you start here, fill in the missing logic in the `updateDOM` function. (Refer to the original code where needed.)
+
+```js
+let firstName = "Jane";
+let lastName = "Jacobs";
+let isEditing = false;
+
+function handleFormSubmit(e) {
+	e.preventDefault();
+	setIsEditing(!isEditing);
+}
+
+function handleFirstNameChange(e) {
+	setFirstName(e.target.value);
+}
+
+function handleLastNameChange(e) {
+	setLastName(e.target.value);
+}
+
+function setFirstName(value) {
+	firstName = value;
+	updateDOM();
+}
+
+function setLastName(value) {
+	lastName = value;
+	updateDOM();
+}
+
+function setIsEditing(value) {
+	isEditing = value;
+	updateDOM();
+}
+
+function updateDOM() {
+	if (isEditing) {
+		editButton.textContent = "Save Profile";
+		// TODO: show inputs, hide content
+	} else {
+		editButton.textContent = "Edit Profile";
+		// TODO: hide inputs, show content
+	}
+	// TODO: update text labels
+}
+
+function hide(el) {
+	el.style.display = "none";
+}
+
+function show(el) {
+	el.style.display = "";
+}
+
+let form = document.getElementById("form");
+let editButton = document.getElementById("editButton");
+let firstNameInput = document.getElementById("firstNameInput");
+let firstNameText = document.getElementById("firstNameText");
+let lastNameInput = document.getElementById("lastNameInput");
+let lastNameText = document.getElementById("lastNameText");
+let helloText = document.getElementById("helloText");
+form.onsubmit = handleFormSubmit;
+firstNameInput.oninput = handleFirstNameChange;
+lastNameInput.oninput = handleLastNameChange;
+```
+
+```js
+{
+  "hardReloadOnChange": true
+}
+```
+
+```html
+<form id="form">
+	<label>
+		First name:
+		<b id="firstNameText">Jane</b>
+		<input id="firstNameInput" value="Jane" style="display: none" />
+	</label>
+	<label>
+		Last name:
+		<b id="lastNameText">Jacobs</b>
+		<input id="lastNameInput" value="Jacobs" style="display: none" />
+	</label>
+	<button type="submit" id="editButton">Edit Profile</button>
+	<p><i id="helloText">Hello, Jane Jacobs!</i></p>
+</form>
+
+<style>
+	* {
+		box-sizing: border-box;
+	}
+	body {
+		font-family: sans-serif;
+		margin: 20px;
+		padding: 0;
+	}
+	label {
+		display: block;
+		margin-bottom: 20px;
+	}
+</style>
+```
+
+<Solution>
+
+The missing logic included toggling the display of inputs and content, and updating the labels:
+
+```js
+let firstName = "Jane";
+let lastName = "Jacobs";
+let isEditing = false;
+
+function handleFormSubmit(e) {
+	e.preventDefault();
+	setIsEditing(!isEditing);
+}
+
+function handleFirstNameChange(e) {
+	setFirstName(e.target.value);
+}
+
+function handleLastNameChange(e) {
+	setLastName(e.target.value);
+}
+
+function setFirstName(value) {
+	firstName = value;
+	updateDOM();
+}
+
+function setLastName(value) {
+	lastName = value;
+	updateDOM();
+}
+
+function setIsEditing(value) {
+	isEditing = value;
+	updateDOM();
+}
+
+function updateDOM() {
+	if (isEditing) {
+		editButton.textContent = "Save Profile";
+		hide(firstNameText);
+		hide(lastNameText);
+		show(firstNameInput);
+		show(lastNameInput);
+	} else {
+		editButton.textContent = "Edit Profile";
+		hide(firstNameInput);
+		hide(lastNameInput);
+		show(firstNameText);
+		show(lastNameText);
+	}
+	firstNameText.textContent = firstName;
+	lastNameText.textContent = lastName;
+	helloText.textContent = "Hello " + firstName + " " + lastName + "!";
+}
+
+function hide(el) {
+	el.style.display = "none";
+}
+
+function show(el) {
+	el.style.display = "";
+}
+
+let form = document.getElementById("form");
+let editButton = document.getElementById("editButton");
+let firstNameInput = document.getElementById("firstNameInput");
+let firstNameText = document.getElementById("firstNameText");
+let lastNameInput = document.getElementById("lastNameInput");
+let lastNameText = document.getElementById("lastNameText");
+let helloText = document.getElementById("helloText");
+form.onsubmit = handleFormSubmit;
+firstNameInput.oninput = handleFirstNameChange;
+lastNameInput.oninput = handleLastNameChange;
+```
+
+```js
+{
+  "hardReloadOnChange": true
+}
+```
+
+```html
+<form id="form">
+	<label>
+		First name:
+		<b id="firstNameText">Jane</b>
+		<input id="firstNameInput" value="Jane" style="display: none" />
+	</label>
+	<label>
+		Last name:
+		<b id="lastNameText">Jacobs</b>
+		<input id="lastNameInput" value="Jacobs" style="display: none" />
+	</label>
+	<button type="submit" id="editButton">Edit Profile</button>
+	<p><i id="helloText">Hello, Jane Jacobs!</i></p>
+</form>
+
+<style>
+	* {
+		box-sizing: border-box;
+	}
+	body {
+		font-family: sans-serif;
+		margin: 20px;
+		padding: 0;
+	}
+	label {
+		display: block;
+		margin-bottom: 20px;
+	}
+</style>
+```
+
+The `updateDOM` function you wrote shows what React does under the hood when you set the state. (However, React also avoids touching the DOM for properties that have not changed since the last time they were set.)
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/referencing-values-with-refs.md b/docs/src/learn/referencing-values-with-refs.md
new file mode 100644
index 000000000..3d1fd7d42
--- /dev/null
+++ b/docs/src/learn/referencing-values-with-refs.md
@@ -0,0 +1,569 @@
+---
+title: "Referencing Values with Refs 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+When you want a component to "remember" some information, but you don't want that information to [trigger new renders](/learn/render-and-commit), you can use a _ref_.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to add a ref to your component
+    -   How to update a ref's value
+    -   How refs are different from state
+    -   How to use refs safely
+
+## Adding a ref to your component
+
+You can add a ref to your component by importing the `useRef` Hook from React:
+
+```js
+import { useRef } from "react";
+```
+
+Inside your component, call the `useRef` Hook and pass the initial value that you want to reference as the only argument. For example, here is a ref to the value `0`:
+
+```js
+const ref = useRef(0);
+```
+
+`useRef` returns an object like this:
+
+```js
+{
+	current: 0; // The value you passed to useRef
+}
+```
+
+<Illustration src="/images/docs/illustrations/i_ref.png" alt="An arrow with 'current' written on it stuffed into a pocket with 'ref' written on it." />
+
+You can access the current value of that ref through the `ref.current` property. This value is intentionally mutable, meaning you can both read and write to it. It's like a secret pocket of your component that React doesn't track. (This is what makes it an "escape hatch" from React's one-way data flow--more on that below!)
+
+Here, a button will increment `ref.current` on every click:
+
+```js
+import { useRef } from "react";
+
+export default function Counter() {
+	let ref = useRef(0);
+
+	function handleClick() {
+		ref.current = ref.current + 1;
+		alert("You clicked " + ref.current + " times!");
+	}
+
+	return <button on_click={handleClick}>Click me!</button>;
+}
+```
+
+The ref points to a number, but, like [state](/learn/state-a-components-memory), you could point to anything: a string, an object, or even a function. Unlike state, ref is a plain JavaScript object with the `current` property that you can read and modify.
+
+Note that **the component doesn't re-render with every increment.** Like state, refs are retained by React between re-renders. However, setting state re-renders a component. Changing a ref does not!
+
+## Example: building a stopwatch
+
+You can combine refs and state in a single component. For example, let's make a stopwatch that the user can start or stop by pressing a button. In order to display how much time has passed since the user pressed "Start", you will need to keep track of when the Start button was pressed and what the current time is. **This information is used for rendering, so you'll keep it in state:**
+
+```js
+const [startTime, setStartTime] = useState(null);
+const [now, setNow] = useState(null);
+```
+
+When the user presses "Start", you'll use [`setInterval`](https://developer.mozilla.org/docs/Web/API/setInterval) in order to update the time every 10 milliseconds:
+
+```js
+import { useState } from "react";
+
+export default function Stopwatch() {
+	const [startTime, setStartTime] = useState(null);
+	const [now, setNow] = useState(null);
+
+	function handleStart() {
+		// Start counting.
+		setStartTime(Date.now());
+		setNow(Date.now());
+
+		setInterval(() => {
+			// Update the current time every 10ms.
+			setNow(Date.now());
+		}, 10);
+	}
+
+	let secondsPassed = 0;
+	if (startTime != null && now != null) {
+		secondsPassed = (now - startTime) / 1000;
+	}
+
+	return (
+		<>
+			<h1>Time passed: {secondsPassed.toFixed(3)}</h1>
+			<button on_click={handleStart}>Start</button>
+		</>
+	);
+}
+```
+
+When the "Stop" button is pressed, you need to cancel the existing interval so that it stops updating the `now` state variable. You can do this by calling [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval), but you need to give it the interval ID that was previously returned by the `setInterval` call when the user pressed Start. You need to keep the interval ID somewhere. **Since the interval ID is not used for rendering, you can keep it in a ref:**
+
+```js
+import { useState, useRef } from "react";
+
+export default function Stopwatch() {
+	const [startTime, setStartTime] = useState(null);
+	const [now, setNow] = useState(null);
+	const intervalRef = useRef(null);
+
+	function handleStart() {
+		setStartTime(Date.now());
+		setNow(Date.now());
+
+		clearInterval(intervalRef.current);
+		intervalRef.current = setInterval(() => {
+			setNow(Date.now());
+		}, 10);
+	}
+
+	function handleStop() {
+		clearInterval(intervalRef.current);
+	}
+
+	let secondsPassed = 0;
+	if (startTime != null && now != null) {
+		secondsPassed = (now - startTime) / 1000;
+	}
+
+	return (
+		<>
+			<h1>Time passed: {secondsPassed.toFixed(3)}</h1>
+			<button on_click={handleStart}>Start</button>
+			<button on_click={handleStop}>Stop</button>
+		</>
+	);
+}
+```
+
+When a piece of information is used for rendering, keep it in state. When a piece of information is only needed by event handlers and changing it doesn't require a re-render, using a ref may be more efficient.
+
+## Differences between refs and state
+
+Perhaps you're thinking refs seem less "strict" than state—you can mutate them instead of always having to use a state setting function, for instance. But in most cases, you'll want to use state. Refs are an "escape hatch" you won't need often. Here's how state and refs compare:
+
+| refs | state |
+| --- | --- |
+| `useRef(initialValue)` returns `{ current: initialValue }` | `useState(initialValue)` returns the current value of a state variable and a state setter function ( `[value, setValue]`) |
+| Doesn't trigger re-render when you change it. | Triggers re-render when you change it. |
+| Mutable—you can modify and update `current`'s value outside of the rendering process. | "Immutable"—you must use the state setting function to modify state variables to queue a re-render. |
+| You shouldn't read (or write) the `current` value during rendering. | You can read state at any time. However, each render has its own [snapshot](/learn/state-as-a-snapshot) of state which does not change. |
+
+Here is a counter button that's implemented with state:
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [count, setCount] = useState(0);
+
+	function handleClick() {
+		setCount(count + 1);
+	}
+
+	return <button on_click={handleClick}>You clicked {count} times</button>;
+}
+```
+
+Because the `count` value is displayed, it makes sense to use a state value for it. When the counter's value is set with `setCount()`, React re-renders the component and the screen updates to reflect the new count.
+
+If you tried to implement this with a ref, React would never re-render the component, so you'd never see the count change! See how clicking this button **does not update its text**:
+
+```js
+import { useRef } from "react";
+
+export default function Counter() {
+	let countRef = useRef(0);
+
+	function handleClick() {
+		// This doesn't re-render the component!
+		countRef.current = countRef.current + 1;
+	}
+
+	return (
+		<button on_click={handleClick}>
+			You clicked {countRef.current} times
+		</button>
+	);
+}
+```
+
+This is why reading `ref.current` during render leads to unreliable code. If you need that, use state instead.
+
+<DeepDive>
+
+#### How does useRef work inside?
+
+Although both `useState` and `useRef` are provided by React, in principle `useRef` could be implemented _on top of_ `useState`. You can imagine that inside of React, `useRef` is implemented like this:
+
+```js
+// Inside of React
+function useRef(initialValue) {
+	const [ref, unused] = useState({ current: initialValue });
+	return ref;
+}
+```
+
+During the first render, `useRef` returns `{ current: initialValue }`. This object is stored by React, so during the next render the same object will be returned. Note how the state setter is unused in this example. It is unnecessary because `useRef` always needs to return the same object!
+
+React provides a built-in version of `useRef` because it is common enough in practice. But you can think of it as a regular state variable without a setter. If you're familiar with object-oriented programming, refs might remind you of instance fields--but instead of `this.something` you write `somethingRef.current`.
+
+</DeepDive>
+
+## When to use refs
+
+Typically, you will use a ref when your component needs to "step outside" React and communicate with external APIs—often a browser API that won't impact the appearance of the component. Here are a few of these rare situations:
+
+-   Storing [timeout IDs](https://developer.mozilla.org/docs/Web/API/setTimeout)
+-   Storing and manipulating [DOM elements](https://developer.mozilla.org/docs/Web/API/Element), which we cover on [the next page](/learn/manipulating-the-dom-with-refs)
+-   Storing other objects that aren't necessary to calculate the JSX.
+
+If your component needs to store some value, but it doesn't impact the rendering logic, choose refs.
+
+## Best practices for refs
+
+Following these principles will make your components more predictable:
+
+-   **Treat refs as an escape hatch.** Refs are useful when you work with external systems or browser APIs. If much of your application logic and data flow relies on refs, you might want to rethink your approach.
+-   **Don't read or write `ref.current` during rendering.** If some information is needed during rendering, use [state](/learn/state-a-components-memory) instead. Since React doesn't know when `ref.current` changes, even reading it while rendering makes your component's behavior difficult to predict. (The only exception to this is code like `if (!ref.current) ref.current = new Thing()` which only sets the ref once during the first render.)
+
+Limitations of React state don't apply to refs. For example, state acts like a [snapshot for every render](/learn/state-as-a-snapshot) and [doesn't update synchronously.](/learn/queueing-a-series-of-state-updates) But when you mutate the current value of a ref, it changes immediately:
+
+```js
+ref.current = 5;
+console.log(ref.current); // 5
+```
+
+This is because **the ref itself is a regular JavaScript object,** and so it behaves like one.
+
+You also don't need to worry about [avoiding mutation](/learn/updating-objects-in-state) when you work with a ref. As long as the object you're mutating isn't used for rendering, React doesn't care what you do with the ref or its contents.
+
+## Refs and the DOM
+
+You can point a ref to any value. However, the most common use case for a ref is to access a DOM element. For example, this is handy if you want to focus an input programmatically. When you pass a ref to a `ref` attribute in JSX, like `<div ref={myRef}>`, React will put the corresponding DOM element into `myRef.current`. You can read more about this in [Manipulating the DOM with Refs.](/learn/manipulating-the-dom-with-refs)
+
+<Recap>
+
+-   Refs are an escape hatch to hold onto values that aren't used for rendering. You won't need them often.
+-   A ref is a plain JavaScript object with a single property called `current`, which you can read or set.
+-   You can ask React to give you a ref by calling the `useRef` Hook.
+-   Like state, refs let you retain information between re-renders of a component.
+-   Unlike state, setting the ref's `current` value does not trigger a re-render.
+-   Don't read or write `ref.current` during rendering. This makes your component hard to predict.
+
+</Recap>
+
+<Challenges>
+
+#### Fix a broken chat input
+
+Type a message and click "Send". You will notice there is a three second delay before you see the "Sent!" alert. During this delay, you can see an "Undo" button. Click it. This "Undo" button is supposed to stop the "Sent!" message from appearing. It does this by calling [`clearTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout) for the timeout ID saved during `handleSend`. However, even after "Undo" is clicked, the "Sent!" message still appears. Find why it doesn't work, and fix it.
+
+<Hint>
+
+Regular variables like `let timeoutID` don't "survive" between re-renders because every render runs your component (and initializes its variables) from scratch. Should you keep the timeout ID somewhere else?
+
+</Hint>
+
+```js
+import { useState } from "react";
+
+export default function Chat() {
+	const [text, setText] = useState("");
+	const [isSending, setIsSending] = useState(false);
+	let timeoutID = null;
+
+	function handleSend() {
+		setIsSending(true);
+		timeoutID = setTimeout(() => {
+			alert("Sent!");
+			setIsSending(false);
+		}, 3000);
+	}
+
+	function handleUndo() {
+		setIsSending(false);
+		clearTimeout(timeoutID);
+	}
+
+	return (
+		<>
+			<input
+				disabled={isSending}
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button disabled={isSending} on_click={handleSend}>
+				{isSending ? "Sending..." : "Send"}
+			</button>
+			{isSending && <button on_click={handleUndo}>Undo</button>}
+		</>
+	);
+}
+```
+
+<Solution>
+
+Whenever your component re-renders (such as when you set state), all local variables get initialized from scratch. This is why you can't save the timeout ID in a local variable like `timeoutID` and then expect another event handler to "see" it in the future. Instead, store it in a ref, which React will preserve between renders.
+
+```js
+import { useState, useRef } from "react";
+
+export default function Chat() {
+	const [text, setText] = useState("");
+	const [isSending, setIsSending] = useState(false);
+	const timeoutRef = useRef(null);
+
+	function handleSend() {
+		setIsSending(true);
+		timeoutRef.current = setTimeout(() => {
+			alert("Sent!");
+			setIsSending(false);
+		}, 3000);
+	}
+
+	function handleUndo() {
+		setIsSending(false);
+		clearTimeout(timeoutRef.current);
+	}
+
+	return (
+		<>
+			<input
+				disabled={isSending}
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button disabled={isSending} on_click={handleSend}>
+				{isSending ? "Sending..." : "Send"}
+			</button>
+			{isSending && <button on_click={handleUndo}>Undo</button>}
+		</>
+	);
+}
+```
+
+</Solution>
+
+#### Fix a component failing to re-render
+
+This button is supposed to toggle between showing "On" and "Off". However, it always shows "Off". What is wrong with this code? Fix it.
+
+```js
+import { useRef } from "react";
+
+export default function Toggle() {
+	const isOnRef = useRef(false);
+
+	return (
+		<button
+			on_click={() => {
+				isOnRef.current = !isOnRef.current;
+			}}
+		>
+			{isOnRef.current ? "On" : "Off"}
+		</button>
+	);
+}
+```
+
+<Solution>
+
+In this example, the current value of a ref is used to calculate the rendering output: `{isOnRef.current ? 'On' : 'Off'}`. This is a sign that this information should not be in a ref, and should have instead been put in state. To fix it, remove the ref and use state instead:
+
+```js
+import { useState } from "react";
+
+export default function Toggle() {
+	const [isOn, setIsOn] = useState(false);
+
+	return (
+		<button
+			on_click={() => {
+				setIsOn(!isOn);
+			}}
+		>
+			{isOn ? "On" : "Off"}
+		</button>
+	);
+}
+```
+
+</Solution>
+
+#### Fix debouncing
+
+In this example, all button click handlers are ["debounced".](https://redd.one/blog/debounce-vs-throttle) To see what this means, press one of the buttons. Notice how the message appears a second later. If you press the button while waiting for the message, the timer will reset. So if you keep clicking the same button fast many times, the message won't appear until a second _after_ you stop clicking. Debouncing lets you delay some action until the user "stops doing things".
+
+This example works, but not quite as intended. The buttons are not independent. To see the problem, click one of the buttons, and then immediately click another button. You'd expect that after a delay, you would see both button's messages. But only the last button's message shows up. The first button's message gets lost.
+
+Why are the buttons interfering with each other? Find and fix the issue.
+
+<Hint>
+
+The last timeout ID variable is shared between all `DebouncedButton` components. This is why clicking one button resets another button's timeout. Can you store a separate timeout ID for each button?
+
+</Hint>
+
+```js
+let timeoutID;
+
+function DebouncedButton({ on_click, children }) {
+	return (
+		<button
+			on_click={() => {
+				clearTimeout(timeoutID);
+				timeoutID = setTimeout(() => {
+					on_click();
+				}, 1000);
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+
+export default function Dashboard() {
+	return (
+		<>
+			<DebouncedButton on_click={() => alert("Spaceship launched!")}>
+				Launch the spaceship
+			</DebouncedButton>
+			<DebouncedButton on_click={() => alert("Soup boiled!")}>
+				Boil the soup
+			</DebouncedButton>
+			<DebouncedButton on_click={() => alert("Lullaby sung!")}>
+				Sing a lullaby
+			</DebouncedButton>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin: 10px;
+}
+```
+
+<Solution>
+
+A variable like `timeoutID` is shared between all components. This is why clicking on the second button resets the first button's pending timeout. To fix this, you can keep timeout in a ref. Each button will get its own ref, so they won't conflict with each other. Notice how clicking two buttons fast will show both messages.
+
+```js
+import { useRef } from "react";
+
+function DebouncedButton({ on_click, children }) {
+	const timeoutRef = useRef(null);
+	return (
+		<button
+			on_click={() => {
+				clearTimeout(timeoutRef.current);
+				timeoutRef.current = setTimeout(() => {
+					on_click();
+				}, 1000);
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+
+export default function Dashboard() {
+	return (
+		<>
+			<DebouncedButton on_click={() => alert("Spaceship launched!")}>
+				Launch the spaceship
+			</DebouncedButton>
+			<DebouncedButton on_click={() => alert("Soup boiled!")}>
+				Boil the soup
+			</DebouncedButton>
+			<DebouncedButton on_click={() => alert("Lullaby sung!")}>
+				Sing a lullaby
+			</DebouncedButton>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin: 10px;
+}
+```
+
+</Solution>
+
+#### Read the latest state
+
+In this example, after you press "Send", there is a small delay before the message is shown. Type "hello", press Send, and then quickly edit the input again. Despite your edits, the alert would still show "hello" (which was the value of state [at the time](/learn/state-as-a-snapshot#state-over-time) the button was clicked).
+
+Usually, this behavior is what you want in an app. However, there may be occasional cases where you want some asynchronous code to read the _latest_ version of some state. Can you think of a way to make the alert show the _current_ input text rather than what it was at the time of the click?
+
+```js
+import { useState, useRef } from "react";
+
+export default function Chat() {
+	const [text, setText] = useState("");
+
+	function handleSend() {
+		setTimeout(() => {
+			alert("Sending: " + text);
+		}, 3000);
+	}
+
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={handleSend}>Send</button>
+		</>
+	);
+}
+```
+
+<Solution>
+
+State works [like a snapshot](/learn/state-as-a-snapshot), so you can't read the latest state from an asynchronous operation like a timeout. However, you can keep the latest input text in a ref. A ref is mutable, so you can read the `current` property at any time. Since the current text is also used for rendering, in this example, you will need _both_ a state variable (for rendering), _and_ a ref (to read it in the timeout). You will need to update the current ref value manually.
+
+```js
+import { useState, useRef } from "react";
+
+export default function Chat() {
+	const [text, setText] = useState("");
+	const textRef = useRef(text);
+
+	function handleChange(e) {
+		setText(e.target.value);
+		textRef.current = e.target.value;
+	}
+
+	function handleSend() {
+		setTimeout(() => {
+			alert("Sending: " + textRef.current);
+		}, 3000);
+	}
+
+	return (
+		<>
+			<input value={text} onChange={handleChange} />
+			<button on_click={handleSend}>Send</button>
+		</>
+	);
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/removing-effect-dependencies.md b/docs/src/learn/removing-effect-dependencies.md
new file mode 100644
index 000000000..55a983a27
--- /dev/null
+++ b/docs/src/learn/removing-effect-dependencies.md
@@ -0,0 +1,2421 @@
+---
+title: "Removing Effect Dependencies 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+When you write an Effect, the linter will verify that you've included every reactive value (like props and state) that the Effect reads in the list of your Effect's dependencies. This ensures that your Effect remains synchronized with the latest props and state of your component. Unnecessary dependencies may cause your Effect to run too often, or even create an infinite loop. Follow this guide to review and remove unnecessary dependencies from your Effects.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to fix infinite Effect dependency loops
+    -   What to do when you want to remove a dependency
+    -   How to read a value from your Effect without "reacting" to it
+    -   How and why to avoid object and function dependencies
+    -   Why suppressing the dependency linter is dangerous, and what to do instead
+
+## Dependencies should match the code
+
+When you write an Effect, you first specify how to [start and stop](/learn/lifecycle-of-reactive-effects#the-lifecycle-of-an-effect) whatever you want your Effect to be doing:
+
+```js
+const serverUrl = 'https://localhost:1234';
+
+function ChatRoom({ roomId }) {
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId);
+    connection.connect();
+    return () => connection.disconnect();
+  	// ...
+}
+```
+
+Then, if you leave the Effect dependencies empty (`[]`), the linter will suggest the correct dependencies:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // <-- Fix the mistake here!
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Fill them in according to what the linter says:
+
+```js
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+[Effects "react" to reactive values.](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) Since `roomId` is a reactive value (it can change due to a re-render), the linter verifies that you've specified it as a dependency. If `roomId` receives a different value, React will re-synchronize your Effect. This ensures that the chat stays connected to the selected room and "reacts" to the dropdown:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+### To remove a dependency, prove that it's not a dependency
+
+Notice that you can't "choose" the dependencies of your Effect. Every <CodeStep step={2}>reactive value</CodeStep> used by your Effect's code must be declared in your dependency list. The dependency list is determined by the surrounding code:
+
+```js
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	// This is a reactive value
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId); // This Effect reads that reactive value
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]); // ✅ So you must specify that reactive value as a dependency of your Effect
+	// ...
+}
+```
+
+[Reactive values](/learn/lifecycle-of-reactive-effects#all-variables-declared-in-the-component-body-are-reactive) include props and all variables and functions declared directly inside of your component. Since `roomId` is a reactive value, you can't remove it from the dependency list. The linter wouldn't allow it:
+
+```js
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // 🔴 React Hook useEffect has a missing dependency: 'roomId'
+	// ...
+}
+```
+
+And the linter would be right! Since `roomId` may change over time, this would introduce a bug in your code.
+
+**To remove a dependency, "prove" to the linter that it _doesn't need_ to be a dependency.** For example, you can move `roomId` out of your component to prove that it's not reactive and won't change on re-renders:
+
+```js
+const serverUrl = "https://localhost:1234";
+const roomId = "music"; // Not a reactive value anymore
+
+function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // ✅ All dependencies declared
+	// ...
+}
+```
+
+Now that `roomId` is not a reactive value (and can't change on a re-render), it doesn't need to be a dependency:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+const roomId = "music";
+
+export default function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []);
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+This is why you could now specify an [empty (`[]`) dependency list.](/learn/lifecycle-of-reactive-effects#what-an-effect-with-empty-dependencies-means) Your Effect _really doesn't_ depend on any reactive value anymore, so it _really doesn't_ need to re-run when any of the component's props or state change.
+
+### To change the dependencies, change the code
+
+You might have noticed a pattern in your workflow:
+
+1. First, you **change the code** of your Effect or how your reactive values are declared.
+2. Then, you follow the linter and adjust the dependencies to **match the code you have changed.**
+3. If you're not happy with the list of dependencies, you **go back to the first step** (and change the code again).
+
+The last part is important. **If you want to change the dependencies, change the surrounding code first.** You can think of the dependency list as [a list of all the reactive values used by your Effect's code.](/learn/lifecycle-of-reactive-effects#react-verifies-that-you-specified-every-reactive-value-as-a-dependency) You don't _choose_ what to put on that list. The list _describes_ your code. To change the dependency list, change the code.
+
+This might feel like solving an equation. You might start with a goal (for example, to remove a dependency), and you need to "find" the code matching that goal. Not everyone finds solving equations fun, and the same thing could be said about writing Effects! Luckily, there is a list of common recipes that you can try below.
+
+<Pitfall>
+
+If you have an existing codebase, you might have some Effects that suppress the linter like this:
+
+```js
+useEffect(() => {
+	// ...
+	// 🔴 Avoid suppressing the linter like this:
+	// eslint-ignore-next-line react-hooks/exhaustive-deps
+}, []);
+```
+
+**When dependencies don't match the code, there is a very high risk of introducing bugs.** By suppressing the linter, you "lie" to React about the values your Effect depends on.
+
+Instead, use the techniques below.
+
+</Pitfall>
+
+<DeepDive>
+
+#### Why is suppressing the dependency linter so dangerous?
+
+Suppressing the linter leads to very unintuitive bugs that are hard to find and fix. Here's one example:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+	const [increment, setIncrement] = useState(1);
+
+	function onTick() {
+		setCount(count + increment);
+	}
+
+	useEffect(() => {
+		const id = setInterval(onTick, 1000);
+		return () => clearInterval(id);
+		// eslint-disable-next-line react-hooks/exhaustive-deps
+	}, []);
+
+	return (
+		<>
+			<h1>
+				Counter: {count}
+				<button on_click={() => setCount(0)}>Reset</button>
+			</h1>
+			<hr />
+			<p>
+				Every second, increment by:
+				<button
+					disabled={increment === 0}
+					on_click={() => {
+						setIncrement((i) => i - 1);
+					}}
+				>
+					–
+				</button>
+				<b>{increment}</b>
+				<button
+					on_click={() => {
+						setIncrement((i) => i + 1);
+					}}
+				>
+					+
+				</button>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+Let's say that you wanted to run the Effect "only on mount". You've read that [empty (`[]`) dependencies](/learn/lifecycle-of-reactive-effects#what-an-effect-with-empty-dependencies-means) do that, so you've decided to ignore the linter, and forcefully specified `[]` as the dependencies.
+
+This counter was supposed to increment every second by the amount configurable with the two buttons. However, since you "lied" to React that this Effect doesn't depend on anything, React forever keeps using the `onTick` function from the initial render. [During that render,](/learn/state-as-a-snapshot#rendering-takes-a-snapshot-in-time) `count` was `0` and `increment` was `1`. This is why `onTick` from that render always calls `setCount(0 + 1)` every second, and you always see `1`. Bugs like this are harder to fix when they're spread across multiple components.
+
+There's always a better solution than ignoring the linter! To fix this code, you need to add `onTick` to the dependency list. (To ensure the interval is only setup once, [make `onTick` an Effect Event.](/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events))
+
+**We recommend treating the dependency lint error as a compilation error. If you don't suppress it, you will never see bugs like this.** The rest of this page documents the alternatives for this and other cases.
+
+</DeepDive>
+
+## Removing unnecessary dependencies
+
+Every time you adjust the Effect's dependencies to reflect the code, look at the dependency list. Does it make sense for the Effect to re-run when any of these dependencies change? Sometimes, the answer is "no":
+
+-   You might want to re-execute _different parts_ of your Effect under different conditions.
+-   You might want to only read the _latest value_ of some dependency instead of "reacting" to its changes.
+-   A dependency may change too often _unintentionally_ because it's an object or a function.
+
+To find the right solution, you'll need to answer a few questions about your Effect. Let's walk through them.
+
+### Should this code move to an event handler?
+
+The first thing you should think about is whether this code should be an Effect at all.
+
+Imagine a form. On submit, you set the `submitted` state variable to `true`. You need to send a POST request and show a notification. You've put this logic inside an Effect that "reacts" to `submitted` being `true`:
+
+```js
+function Form() {
+	const [submitted, setSubmitted] = useState(false);
+
+	useEffect(() => {
+		if (submitted) {
+			// 🔴 Avoid: Event-specific logic inside an Effect
+			post("/api/register");
+			showNotification("Successfully registered!");
+		}
+	}, [submitted]);
+
+	function handleSubmit() {
+		setSubmitted(true);
+	}
+
+	// ...
+}
+```
+
+Later, you want to style the notification message according to the current theme, so you read the current theme. Since `theme` is declared in the component body, it is a reactive value, so you add it as a dependency:
+
+```js
+function Form() {
+	const [submitted, setSubmitted] = useState(false);
+	const theme = useContext(ThemeContext);
+
+	useEffect(() => {
+		if (submitted) {
+			// 🔴 Avoid: Event-specific logic inside an Effect
+			post("/api/register");
+			showNotification("Successfully registered!", theme);
+		}
+	}, [submitted, theme]); // ✅ All dependencies declared
+
+	function handleSubmit() {
+		setSubmitted(true);
+	}
+
+	// ...
+}
+```
+
+By doing this, you've introduced a bug. Imagine you submit the form first and then switch between Dark and Light themes. The `theme` will change, the Effect will re-run, and so it will display the same notification again!
+
+**The problem here is that this shouldn't be an Effect in the first place.** You want to send this POST request and show the notification in response to _submitting the form,_ which is a particular interaction. To run some code in response to particular interaction, put that logic directly into the corresponding event handler:
+
+```js
+function Form() {
+	const theme = useContext(ThemeContext);
+
+	function handleSubmit() {
+		// ✅ Good: Event-specific logic is called from event handlers
+		post("/api/register");
+		showNotification("Successfully registered!", theme);
+	}
+
+	// ...
+}
+```
+
+Now that the code is in an event handler, it's not reactive--so it will only run when the user submits the form. Read more about [choosing between event handlers and Effects](/learn/separating-events-from-effects#reactive-values-and-reactive-logic) and [how to delete unnecessary Effects.](/learn/you-might-not-need-an-effect)
+
+### Is your Effect doing several unrelated things?
+
+The next question you should ask yourself is whether your Effect is doing several unrelated things.
+
+Imagine you're creating a shipping form where the user needs to choose their city and area. You fetch the list of `cities` from the server according to the selected `country` to show them in a dropdown:
+
+```js
+function ShippingForm({ country }) {
+  const [cities, setCities] = useState(null);
+  const [city, setCity] = useState(null);
+
+  useEffect(() => {
+    let ignore = false;
+    fetch(`/api/cities?country=${country}`)
+      .then(response => response.json())
+      .then(json => {
+        if (!ignore) {
+          setCities(json);
+        }
+      });
+    return () => {
+      ignore = true;
+    };
+  }, [country]); // ✅ All dependencies declared
+
+  // ...
+```
+
+This is a good example of [fetching data in an Effect.](/learn/you-might-not-need-an-effect#fetching-data) You are synchronizing the `cities` state with the network according to the `country` prop. You can't do this in an event handler because you need to fetch as soon as `ShippingForm` is displayed and whenever the `country` changes (no matter which interaction causes it).
+
+Now let's say you're adding a second select box for city areas, which should fetch the `areas` for the currently selected `city`. You might start by adding a second `fetch` call for the list of areas inside the same Effect:
+
+```js
+function ShippingForm({ country }) {
+  const [cities, setCities] = useState(null);
+  const [city, setCity] = useState(null);
+  const [areas, setAreas] = useState(null);
+
+  useEffect(() => {
+    let ignore = false;
+    fetch(`/api/cities?country=${country}`)
+      .then(response => response.json())
+      .then(json => {
+        if (!ignore) {
+          setCities(json);
+        }
+      });
+    // 🔴 Avoid: A single Effect synchronizes two independent processes
+    if (city) {
+      fetch(`/api/areas?city=${city}`)
+        .then(response => response.json())
+        .then(json => {
+          if (!ignore) {
+            setAreas(json);
+          }
+        });
+    }
+    return () => {
+      ignore = true;
+    };
+  }, [country, city]); // ✅ All dependencies declared
+
+  // ...
+```
+
+However, since the Effect now uses the `city` state variable, you've had to add `city` to the list of dependencies. That, in turn, introduced a problem: when the user selects a different city, the Effect will re-run and call `fetchCities(country)`. As a result, you will be unnecessarily refetching the list of cities many times.
+
+**The problem with this code is that you're synchronizing two different unrelated things:**
+
+1. You want to synchronize the `cities` state to the network based on the `country` prop.
+1. You want to synchronize the `areas` state to the network based on the `city` state.
+
+Split the logic into two Effects, each of which reacts to the prop that it needs to synchronize with:
+
+```js
+function ShippingForm({ country }) {
+  const [cities, setCities] = useState(null);
+  useEffect(() => {
+    let ignore = false;
+    fetch(`/api/cities?country=${country}`)
+      .then(response => response.json())
+      .then(json => {
+        if (!ignore) {
+          setCities(json);
+        }
+      });
+    return () => {
+      ignore = true;
+    };
+  }, [country]); // ✅ All dependencies declared
+
+  const [city, setCity] = useState(null);
+  const [areas, setAreas] = useState(null);
+  useEffect(() => {
+    if (city) {
+      let ignore = false;
+      fetch(`/api/areas?city=${city}`)
+        .then(response => response.json())
+        .then(json => {
+          if (!ignore) {
+            setAreas(json);
+          }
+        });
+      return () => {
+        ignore = true;
+      };
+    }
+  }, [city]); // ✅ All dependencies declared
+
+  // ...
+```
+
+Now the first Effect only re-runs if the `country` changes, while the second Effect re-runs when the `city` changes. You've separated them by purpose: two different things are synchronized by two separate Effects. Two separate Effects have two separate dependency lists, so they won't trigger each other unintentionally.
+
+The final code is longer than the original, but splitting these Effects is still correct. [Each Effect should represent an independent synchronization process.](/learn/lifecycle-of-reactive-effects#each-effect-represents-a-separate-synchronization-process) In this example, deleting one Effect doesn't break the other Effect's logic. This means they _synchronize different things,_ and it's good to split them up. If you're concerned about duplication, you can improve this code by [extracting repetitive logic into a custom Hook.](/learn/reusing-logic-with-custom-hooks#when-to-use-custom-hooks)
+
+### Are you reading some state to calculate the next state?
+
+This Effect updates the `messages` state variable with a newly created array every time a new message arrives:
+
+```js
+function ChatRoom({ roomId }) {
+  const [messages, setMessages] = useState([]);
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      setMessages([...messages, receivedMessage]);
+    });
+    // ...
+```
+
+It uses the `messages` variable to [create a new array](/learn/updating-arrays-in-state) starting with all the existing messages and adds the new message at the end. However, since `messages` is a reactive value read by an Effect, it must be a dependency:
+
+```js
+function ChatRoom({ roomId }) {
+  const [messages, setMessages] = useState([]);
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      setMessages([...messages, receivedMessage]);
+    });
+    return () => connection.disconnect();
+  }, [roomId, messages]); // ✅ All dependencies declared
+  // ...
+```
+
+And making `messages` a dependency introduces a problem.
+
+Every time you receive a message, `setMessages()` causes the component to re-render with a new `messages` array that includes the received message. However, since this Effect now depends on `messages`, this will _also_ re-synchronize the Effect. So every new message will make the chat re-connect. The user would not like that!
+
+To fix the issue, don't read `messages` inside the Effect. Instead, pass an [updater function](/reference/react/useState#updating-state-based-on-the-previous-state) to `setMessages`:
+
+```js
+function ChatRoom({ roomId }) {
+  const [messages, setMessages] = useState([]);
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      setMessages(msgs => [...msgs, receivedMessage]);
+    });
+    return () => connection.disconnect();
+  }, [roomId]); // ✅ All dependencies declared
+  // ...
+```
+
+**Notice how your Effect does not read the `messages` variable at all now.** You only need to pass an updater function like `msgs => [...msgs, receivedMessage]`. React [puts your updater function in a queue](/learn/queueing-a-series-of-state-updates) and will provide the `msgs` argument to it during the next render. This is why the Effect itself doesn't need to depend on `messages` anymore. As a result of this fix, receiving a chat message will no longer make the chat re-connect.
+
+### Do you want to read a value without "reacting" to its changes?
+
+<Wip>
+
+This section describes an **experimental API that has not yet been released** in a stable version of React.
+
+</Wip>
+
+Suppose that you want to play a sound when the user receives a new message unless `isMuted` is `true`:
+
+```js
+function ChatRoom({ roomId }) {
+  const [messages, setMessages] = useState([]);
+  const [isMuted, setIsMuted] = useState(false);
+
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      setMessages(msgs => [...msgs, receivedMessage]);
+      if (!isMuted) {
+        playSound();
+      }
+    });
+    // ...
+```
+
+Since your Effect now uses `isMuted` in its code, you have to add it to the dependencies:
+
+```js
+function ChatRoom({ roomId }) {
+  const [messages, setMessages] = useState([]);
+  const [isMuted, setIsMuted] = useState(false);
+
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      setMessages(msgs => [...msgs, receivedMessage]);
+      if (!isMuted) {
+        playSound();
+      }
+    });
+    return () => connection.disconnect();
+  }, [roomId, isMuted]); // ✅ All dependencies declared
+  // ...
+```
+
+The problem is that every time `isMuted` changes (for example, when the user presses the "Muted" toggle), the Effect will re-synchronize, and reconnect to the chat. This is not the desired user experience! (In this example, even disabling the linter would not work--if you do that, `isMuted` would get "stuck" with its old value.)
+
+To solve this problem, you need to extract the logic that shouldn't be reactive out of the Effect. You don't want this Effect to "react" to the changes in `isMuted`. [Move this non-reactive piece of logic into an Effect Event:](/learn/separating-events-from-effects#declaring-an-effect-event)
+
+```js
+import { useState, useEffect, useEffectEvent } from 'react';
+
+function ChatRoom({ roomId }) {
+  const [messages, setMessages] = useState([]);
+  const [isMuted, setIsMuted] = useState(false);
+
+  const onMessage = useEffectEvent(receivedMessage => {
+    setMessages(msgs => [...msgs, receivedMessage]);
+    if (!isMuted) {
+      playSound();
+    }
+  });
+
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      onMessage(receivedMessage);
+    });
+    return () => connection.disconnect();
+  }, [roomId]); // ✅ All dependencies declared
+  // ...
+```
+
+Effect Events let you split an Effect into reactive parts (which should "react" to reactive values like `roomId` and their changes) and non-reactive parts (which only read their latest values, like `onMessage` reads `isMuted`). **Now that you read `isMuted` inside an Effect Event, it doesn't need to be a dependency of your Effect.** As a result, the chat won't re-connect when you toggle the "Muted" setting on and off, solving the original issue!
+
+#### Wrapping an event handler from the props
+
+You might run into a similar problem when your component receives an event handler as a prop:
+
+```js
+function ChatRoom({ roomId, onReceiveMessage }) {
+  const [messages, setMessages] = useState([]);
+
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      onReceiveMessage(receivedMessage);
+    });
+    return () => connection.disconnect();
+  }, [roomId, onReceiveMessage]); // ✅ All dependencies declared
+  // ...
+```
+
+Suppose that the parent component passes a _different_ `onReceiveMessage` function on every render:
+
+```js
+<ChatRoom
+	roomId={roomId}
+	onReceiveMessage={(receivedMessage) => {
+		// ...
+	}}
+/>
+```
+
+Since `onReceiveMessage` is a dependency, it would cause the Effect to re-synchronize after every parent re-render. This would make it re-connect to the chat. To solve this, wrap the call in an Effect Event:
+
+```js
+function ChatRoom({ roomId, onReceiveMessage }) {
+  const [messages, setMessages] = useState([]);
+
+  const onMessage = useEffectEvent(receivedMessage => {
+    onReceiveMessage(receivedMessage);
+  });
+
+  useEffect(() => {
+    const connection = createConnection();
+    connection.connect();
+    connection.on('message', (receivedMessage) => {
+      onMessage(receivedMessage);
+    });
+    return () => connection.disconnect();
+  }, [roomId]); // ✅ All dependencies declared
+  // ...
+```
+
+Effect Events aren't reactive, so you don't need to specify them as dependencies. As a result, the chat will no longer re-connect even if the parent component passes a function that's different on every re-render.
+
+#### Separating reactive and non-reactive code
+
+In this example, you want to log a visit every time `roomId` changes. You want to include the current `notificationCount` with every log, but you _don't_ want a change to `notificationCount` to trigger a log event.
+
+The solution is again to split out the non-reactive code into an Effect Event:
+
+```js
+function Chat({ roomId, notificationCount }) {
+	const onVisit = useEffectEvent((visitedRoomId) => {
+		logVisit(visitedRoomId, notificationCount);
+	});
+
+	useEffect(() => {
+		onVisit(roomId);
+	}, [roomId]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+You want your logic to be reactive with regards to `roomId`, so you read `roomId` inside of your Effect. However, you don't want a change to `notificationCount` to log an extra visit, so you read `notificationCount` inside of the Effect Event. [Learn more about reading the latest props and state from Effects using Effect Events.](/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)
+
+### Does some reactive value change unintentionally?
+
+Sometimes, you _do_ want your Effect to "react" to a certain value, but that value changes more often than you'd like--and might not reflect any actual change from the user's perspective. For example, let's say that you create an `options` object in the body of your component, and then read that object from inside of your Effect:
+
+```js
+function ChatRoom({ roomId }) {
+  // ...
+  const options = {
+    serverUrl: serverUrl,
+    roomId: roomId
+  };
+
+  useEffect(() => {
+    const connection = createConnection(options);
+    connection.connect();
+    // ...
+```
+
+This object is declared in the component body, so it's a [reactive value.](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) When you read a reactive value like this inside an Effect, you declare it as a dependency. This ensures your Effect "reacts" to its changes:
+
+```js
+// ...
+useEffect(() => {
+	const connection = createConnection(options);
+	connection.connect();
+	return () => connection.disconnect();
+}, [options]); // ✅ All dependencies declared
+// ...
+```
+
+It is important to declare it as a dependency! This ensures, for example, that if the `roomId` changes, your Effect will re-connect to the chat with the new `options`. However, there is also a problem with the code above. To see it, try typing into the input in the sandbox below, and watch what happens in the console:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	// Temporarily disable the linter to demonstrate the problem
+	// eslint-disable-next-line react-hooks/exhaustive-deps
+	const options = {
+		serverUrl: serverUrl,
+		roomId: roomId,
+	};
+
+	useEffect(() => {
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [options]);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+In the sandbox above, the input only updates the `message` state variable. From the user's perspective, this should not affect the chat connection. However, every time you update the `message`, your component re-renders. When your component re-renders, the code inside of it runs again from scratch.
+
+A new `options` object is created from scratch on every re-render of the `ChatRoom` component. React sees that the `options` object is a _different object_ from the `options` object created during the last render. This is why it re-synchronizes your Effect (which depends on `options`), and the chat re-connects as you type.
+
+**This problem only affects objects and functions. In JavaScript, each newly created object and function is considered distinct from all the others. It doesn't matter that the contents inside of them may be the same!**
+
+```js
+// During the first render
+const options1 = { serverUrl: "https://localhost:1234", roomId: "music" };
+
+// During the next render
+const options2 = { serverUrl: "https://localhost:1234", roomId: "music" };
+
+// These are two different objects!
+console.log(Object.is(options1, options2)); // false
+```
+
+**Object and function dependencies can make your Effect re-synchronize more often than you need.**
+
+This is why, whenever possible, you should try to avoid objects and functions as your Effect's dependencies. Instead, try moving them outside the component, inside the Effect, or extracting primitive values out of them.
+
+#### Move static objects and functions outside your component
+
+If the object does not depend on any props and state, you can move that object outside your component:
+
+```js
+const options = {
+  serverUrl: 'https://localhost:1234',
+  roomId: 'music'
+};
+
+function ChatRoom() {
+  const [message, setMessage] = useState('');
+
+  useEffect(() => {
+    const connection = createConnection(options);
+    connection.connect();
+    return () => connection.disconnect();
+  }, []); // ✅ All dependencies declared
+  // ...
+```
+
+This way, you _prove_ to the linter that it's not reactive. It can't change as a result of a re-render, so it doesn't need to be a dependency. Now re-rendering `ChatRoom` won't cause your Effect to re-synchronize.
+
+This works for functions too:
+
+```js
+function createOptions() {
+  return {
+    serverUrl: 'https://localhost:1234',
+    roomId: 'music'
+  };
+}
+
+function ChatRoom() {
+  const [message, setMessage] = useState('');
+
+  useEffect(() => {
+    const options = createOptions();
+    const connection = createConnection();
+    connection.connect();
+    return () => connection.disconnect();
+  }, []); // ✅ All dependencies declared
+  // ...
+```
+
+Since `createOptions` is declared outside your component, it's not a reactive value. This is why it doesn't need to be specified in your Effect's dependencies, and why it won't ever cause your Effect to re-synchronize.
+
+#### Move dynamic objects and functions inside your Effect
+
+If your object depends on some reactive value that may change as a result of a re-render, like a `roomId` prop, you can't pull it _outside_ your component. You can, however, move its creation _inside_ of your Effect's code:
+
+```js
+const serverUrl = 'https://localhost:1234';
+
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  useEffect(() => {
+    const options = {
+      serverUrl: serverUrl,
+      roomId: roomId
+    };
+    const connection = createConnection(options);
+    connection.connect();
+    return () => connection.disconnect();
+  }, [roomId]); // ✅ All dependencies declared
+  // ...
+```
+
+Now that `options` is declared inside of your Effect, it is no longer a dependency of your Effect. Instead, the only reactive value used by your Effect is `roomId`. Since `roomId` is not an object or function, you can be sure that it won't be _unintentionally_ different. In JavaScript, numbers and strings are compared by their content:
+
+```js
+// During the first render
+const roomId1 = "music";
+
+// During the next render
+const roomId2 = "music";
+
+// These two strings are the same!
+console.log(Object.is(roomId1, roomId2)); // true
+```
+
+Thanks to this fix, the chat no longer re-connects if you edit the input:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+However, it _does_ re-connect when you change the `roomId` dropdown, as you would expect.
+
+This works for functions, too:
+
+```js
+const serverUrl = 'https://localhost:1234';
+
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  useEffect(() => {
+    function createOptions() {
+      return {
+        serverUrl: serverUrl,
+        roomId: roomId
+      };
+    }
+
+    const options = createOptions();
+    const connection = createConnection(options);
+    connection.connect();
+    return () => connection.disconnect();
+  }, [roomId]); // ✅ All dependencies declared
+  // ...
+```
+
+You can write your own functions to group pieces of logic inside your Effect. As long as you also declare them _inside_ your Effect, they're not reactive values, and so they don't need to be dependencies of your Effect.
+
+#### Read primitive values from objects
+
+Sometimes, you may receive an object from props:
+
+```js
+function ChatRoom({ options }) {
+  const [message, setMessage] = useState('');
+
+  useEffect(() => {
+    const connection = createConnection(options);
+    connection.connect();
+    return () => connection.disconnect();
+  }, [options]); // ✅ All dependencies declared
+  // ...
+```
+
+The risk here is that the parent component will create the object during rendering:
+
+```js
+<ChatRoom
+	roomId={roomId}
+	options={{
+		serverUrl: serverUrl,
+		roomId: roomId,
+	}}
+/>
+```
+
+This would cause your Effect to re-connect every time the parent component re-renders. To fix this, read information from the object _outside_ the Effect, and avoid having object and function dependencies:
+
+```js
+function ChatRoom({ options }) {
+  const [message, setMessage] = useState('');
+
+  const { roomId, serverUrl } = options;
+  useEffect(() => {
+    const connection = createConnection({
+      roomId: roomId,
+      serverUrl: serverUrl
+    });
+    connection.connect();
+    return () => connection.disconnect();
+  }, [roomId, serverUrl]); // ✅ All dependencies declared
+  // ...
+```
+
+The logic gets a little repetitive (you read some values from an object outside an Effect, and then create an object with the same values inside the Effect). But it makes it very explicit what information your Effect _actually_ depends on. If an object is re-created unintentionally by the parent component, the chat would not re-connect. However, if `options.roomId` or `options.serverUrl` really are different, the chat would re-connect.
+
+#### Calculate primitive values from functions
+
+The same approach can work for functions. For example, suppose the parent component passes a function:
+
+```js
+<ChatRoom
+	roomId={roomId}
+	getOptions={() => {
+		return {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+	}}
+/>
+```
+
+To avoid making it a dependency (and causing it to re-connect on re-renders), call it outside the Effect. This gives you the `roomId` and `serverUrl` values that aren't objects, and that you can read from inside your Effect:
+
+```js
+function ChatRoom({ getOptions }) {
+  const [message, setMessage] = useState('');
+
+  const { roomId, serverUrl } = getOptions();
+  useEffect(() => {
+    const connection = createConnection({
+      roomId: roomId,
+      serverUrl: serverUrl
+    });
+    connection.connect();
+    return () => connection.disconnect();
+  }, [roomId, serverUrl]); // ✅ All dependencies declared
+  // ...
+```
+
+This only works for [pure](/learn/keeping-components-pure) functions because they are safe to call during rendering. If your function is an event handler, but you don't want its changes to re-synchronize your Effect, [wrap it into an Effect Event instead.](#do-you-want-to-read-a-value-without-reacting-to-its-changes)
+
+<Recap>
+
+-   Dependencies should always match the code.
+-   When you're not happy with your dependencies, what you need to edit is the code.
+-   Suppressing the linter leads to very confusing bugs, and you should always avoid it.
+-   To remove a dependency, you need to "prove" to the linter that it's not necessary.
+-   If some code should run in response to a specific interaction, move that code to an event handler.
+-   If different parts of your Effect should re-run for different reasons, split it into several Effects.
+-   If you want to update some state based on the previous state, pass an updater function.
+-   If you want to read the latest value without "reacting" it, extract an Effect Event from your Effect.
+-   In JavaScript, objects and functions are considered different if they were created at different times.
+-   Try to avoid object and function dependencies. Move them outside the component or inside the Effect.
+
+</Recap>
+
+<Challenges>
+
+#### Fix a resetting interval
+
+This Effect sets up an interval that ticks every second. You've noticed something strange happening: it seems like the interval gets destroyed and re-created every time it ticks. Fix the code so that the interval doesn't get constantly re-created.
+
+<Hint>
+
+It seems like this Effect's code depends on `count`. Is there some way to not need this dependency? There should be a way to update the `count` state based on its previous value without adding a dependency on that value.
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		console.log("✅ Creating an interval");
+		const id = setInterval(() => {
+			console.log("⏰ Interval tick");
+			setCount(count + 1);
+		}, 1000);
+		return () => {
+			console.log("❌ Clearing an interval");
+			clearInterval(id);
+		};
+	}, [count]);
+
+	return <h1>Counter: {count}</h1>;
+}
+```
+
+<Solution>
+
+You want to update the `count` state to be `count + 1` from inside the Effect. However, this makes your Effect depend on `count`, which changes with every tick, and that's why your interval gets re-created on every tick.
+
+To solve this, use the [updater function](/reference/react/useState#updating-state-based-on-the-previous-state) and write `setCount(c => c + 1)` instead of `setCount(count + 1)`:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		console.log("✅ Creating an interval");
+		const id = setInterval(() => {
+			console.log("⏰ Interval tick");
+			setCount((c) => c + 1);
+		}, 1000);
+		return () => {
+			console.log("❌ Clearing an interval");
+			clearInterval(id);
+		};
+	}, []);
+
+	return <h1>Counter: {count}</h1>;
+}
+```
+
+Instead of reading `count` inside the Effect, you pass a `c => c + 1` instruction ("increment this number!") to React. React will apply it on the next render. And since you don't need to read the value of `count` inside your Effect anymore, so you can keep your Effect's dependencies empty (`[]`). This prevents your Effect from re-creating the interval on every tick.
+
+</Solution>
+
+#### Fix a retriggering animation
+
+In this example, when you press "Show", a welcome message fades in. The animation takes a second. When you press "Remove", the welcome message immediately disappears. The logic for the fade-in animation is implemented in the `animation.js` file as plain JavaScript [animation loop.](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) You don't need to change that logic. You can treat it as a third-party library. Your Effect creates an instance of `FadeInAnimation` for the DOM node, and then calls `start(duration)` or `stop()` to control the animation. The `duration` is controlled by a slider. Adjust the slider and see how the animation changes.
+
+This code already works, but there is something you want to change. Currently, when you move the slider that controls the `duration` state variable, it retriggers the animation. Change the behavior so that the Effect does not "react" to the `duration` variable. When you press "Show", the Effect should use the current `duration` on the slider. However, moving the slider itself should not by itself retrigger the animation.
+
+<Hint>
+
+Is there a line of code inside the Effect that should not be reactive? How can you move non-reactive code out of the Effect?
+
+</Hint>
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect, useRef } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+import { FadeInAnimation } from "./animation.js";
+
+function Welcome({ duration }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		const animation = new FadeInAnimation(ref.current);
+		animation.start(duration);
+		return () => {
+			animation.stop();
+		};
+	}, [duration]);
+
+	return (
+		<h1
+			ref={ref}
+			style={{
+				opacity: 0,
+				color: "white",
+				padding: 50,
+				textAlign: "center",
+				fontSize: 50,
+				backgroundImage:
+					"radial-gradient(circle, rgba(63,94,251,1) 0%, rgba(252,70,107,1) 100%)",
+			}}
+		>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [duration, setDuration] = useState(1000);
+	const [show, setShow] = useState(false);
+
+	return (
+		<>
+			<label>
+				<input
+					type="range"
+					min="100"
+					max="3000"
+					value={duration}
+					onChange={(e) => setDuration(Number(e.target.value))}
+				/>
+				<br />
+				Fade in duration: {duration} ms
+			</label>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome duration={duration} />}
+		</>
+	);
+}
+```
+
+```js
+export class FadeInAnimation {
+	constructor(node) {
+		this.node = node;
+	}
+	start(duration) {
+		this.duration = duration;
+		if (this.duration === 0) {
+			// Jump to end immediately
+			this.onProgress(1);
+		} else {
+			this.onProgress(0);
+			// Start animating
+			this.startTime = performance.now();
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onFrame() {
+		const timePassed = performance.now() - this.startTime;
+		const progress = Math.min(timePassed / this.duration, 1);
+		this.onProgress(progress);
+		if (progress < 1) {
+			// We still have more frames to paint
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onProgress(progress) {
+		this.node.style.opacity = progress;
+	}
+	stop() {
+		cancelAnimationFrame(this.frameId);
+		this.startTime = null;
+		this.frameId = null;
+		this.duration = 0;
+	}
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+```
+
+<Solution>
+
+Your Effect needs to read the latest value of `duration`, but you don't want it to "react" to changes in `duration`. You use `duration` to start the animation, but starting animation isn't reactive. Extract the non-reactive line of code into an Effect Event, and call that function from your Effect.
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect, useRef } from "react";
+import { FadeInAnimation } from "./animation.js";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+function Welcome({ duration }) {
+	const ref = useRef(null);
+
+	const onAppear = useEffectEvent((animation) => {
+		animation.start(duration);
+	});
+
+	useEffect(() => {
+		const animation = new FadeInAnimation(ref.current);
+		onAppear(animation);
+		return () => {
+			animation.stop();
+		};
+	}, []);
+
+	return (
+		<h1
+			ref={ref}
+			style={{
+				opacity: 0,
+				color: "white",
+				padding: 50,
+				textAlign: "center",
+				fontSize: 50,
+				backgroundImage:
+					"radial-gradient(circle, rgba(63,94,251,1) 0%, rgba(252,70,107,1) 100%)",
+			}}
+		>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [duration, setDuration] = useState(1000);
+	const [show, setShow] = useState(false);
+
+	return (
+		<>
+			<label>
+				<input
+					type="range"
+					min="100"
+					max="3000"
+					value={duration}
+					onChange={(e) => setDuration(Number(e.target.value))}
+				/>
+				<br />
+				Fade in duration: {duration} ms
+			</label>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome duration={duration} />}
+		</>
+	);
+}
+```
+
+```js
+export class FadeInAnimation {
+	constructor(node) {
+		this.node = node;
+	}
+	start(duration) {
+		this.duration = duration;
+		this.onProgress(0);
+		this.startTime = performance.now();
+		this.frameId = requestAnimationFrame(() => this.onFrame());
+	}
+	onFrame() {
+		const timePassed = performance.now() - this.startTime;
+		const progress = Math.min(timePassed / this.duration, 1);
+		this.onProgress(progress);
+		if (progress < 1) {
+			// We still have more frames to paint
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onProgress(progress) {
+		this.node.style.opacity = progress;
+	}
+	stop() {
+		cancelAnimationFrame(this.frameId);
+		this.startTime = null;
+		this.frameId = null;
+		this.duration = 0;
+	}
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+```
+
+Effect Events like `onAppear` are not reactive, so you can read `duration` inside without retriggering the animation.
+
+</Solution>
+
+#### Fix a reconnecting chat
+
+In this example, every time you press "Toggle theme", the chat re-connects. Why does this happen? Fix the mistake so that the chat re-connects only when you edit the Server URL or choose a different chat room.
+
+Treat `chat.js` as an external third-party library: you can consult it to check its API, but don't edit it.
+
+<Hint>
+
+There's more than one way to fix this, but ultimately you want to avoid having an object as your dependency.
+
+</Hint>
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	const options = {
+		serverUrl: serverUrl,
+		roomId: roomId,
+	};
+
+	return (
+		<div className={isDark ? "dark" : "light"}>
+			<button on_click={() => setIsDark(!isDark)}>Toggle theme</button>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom options={options} />
+		</div>
+	);
+}
+```
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+export default function ChatRoom({ options }) {
+	useEffect(() => {
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [options]);
+
+	return <h1>Welcome to the {options.roomId} room!</h1>;
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 5px;
+}
+.dark {
+	background: #222;
+	color: #eee;
+}
+```
+
+<Solution>
+
+Your Effect is re-running because it depends on the `options` object. Objects can be re-created unintentionally, you should try to avoid them as dependencies of your Effects whenever possible.
+
+The least invasive fix is to read `roomId` and `serverUrl` right outside the Effect, and then make the Effect depend on those primitive values (which can't change unintentionally). Inside the Effect, create an object and it pass to `createConnection`:
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	const options = {
+		serverUrl: serverUrl,
+		roomId: roomId,
+	};
+
+	return (
+		<div className={isDark ? "dark" : "light"}>
+			<button on_click={() => setIsDark(!isDark)}>Toggle theme</button>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom options={options} />
+		</div>
+	);
+}
+```
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+export default function ChatRoom({ options }) {
+	const { roomId, serverUrl } = options;
+	useEffect(() => {
+		const connection = createConnection({
+			roomId: roomId,
+			serverUrl: serverUrl,
+		});
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+
+	return <h1>Welcome to the {options.roomId} room!</h1>;
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 5px;
+}
+.dark {
+	background: #222;
+	color: #eee;
+}
+```
+
+It would be even better to replace the object `options` prop with the more specific `roomId` and `serverUrl` props:
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	return (
+		<div className={isDark ? "dark" : "light"}>
+			<button on_click={() => setIsDark(!isDark)}>Toggle theme</button>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} serverUrl={serverUrl} />
+		</div>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+export default function ChatRoom({ roomId, serverUrl }) {
+	useEffect(() => {
+		const connection = createConnection({
+			roomId: roomId,
+			serverUrl: serverUrl,
+		});
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 5px;
+}
+.dark {
+	background: #222;
+	color: #eee;
+}
+```
+
+Sticking to primitive props where possible makes it easier to optimize your components later.
+
+</Solution>
+
+#### Fix a reconnecting chat, again
+
+This example connects to the chat either with or without encryption. Toggle the checkbox and notice the different messages in the console when the encryption is on and off. Try changing the room. Then, try toggling the theme. When you're connected to a chat room, you will receive new messages every few seconds. Verify that their color matches the theme you've picked.
+
+In this example, the chat re-connects every time you try to change the theme. Fix this. After the fix, changing the theme should not re-connect the chat, but toggling encryption settings or changing the room should re-connect.
+
+Don't change any code in `chat.js`. Other than that, you can change any code as long as it results in the same behavior. For example, you may find it helpful to change which props are being passed down.
+
+<Hint>
+
+You're passing down two functions: `onMessage` and `createConnection`. Both of them are created from scratch every time `App` re-renders. They are considered to be new values every time, which is why they re-trigger your Effect.
+
+One of these functions is an event handler. Do you know some way to call an event handler an Effect without "reacting" to the new values of the event handler function? That would come in handy!
+
+Another of these functions only exists to pass some state to an imported API method. Is this function really necessary? What is the essential information that's being passed down? You might need to move some imports from `App.js` to `ChatRoom.js`.
+
+</Hint>
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+import {
+	createEncryptedConnection,
+	createUnencryptedConnection,
+} from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	const [isEncrypted, setIsEncrypted] = useState(false);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Use dark theme
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isEncrypted}
+					onChange={(e) => setIsEncrypted(e.target.checked)}
+				/>
+				Enable encryption
+			</label>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom
+				roomId={roomId}
+				onMessage={(msg) => {
+					showNotification(
+						"New message: " + msg,
+						isDark ? "dark" : "light"
+					);
+				}}
+				createConnection={() => {
+					const options = {
+						serverUrl: "https://localhost:1234",
+						roomId: roomId,
+					};
+					if (isEncrypted) {
+						return createEncryptedConnection(options);
+					} else {
+						return createUnencryptedConnection(options);
+					}
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export default function ChatRoom({ roomId, createConnection, onMessage }) {
+	useEffect(() => {
+		const connection = createConnection();
+		connection.on("message", (msg) => onMessage(msg));
+		connection.connect();
+		return () => connection.disconnect();
+	}, [createConnection, onMessage]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+```js
+export function createEncryptedConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	let intervalId;
+	let messageCallback;
+	return {
+		connect() {
+			console.log(
+				'✅ 🔐 Connecting to "' + roomId + '" room... (encrypted)'
+			);
+			clearInterval(intervalId);
+			intervalId = setInterval(() => {
+				if (messageCallback) {
+					if (Math.random() > 0.5) {
+						messageCallback("hey");
+					} else {
+						messageCallback("lol");
+					}
+				}
+			}, 3000);
+		},
+		disconnect() {
+			clearInterval(intervalId);
+			messageCallback = null;
+			console.log(
+				'❌ 🔐 Disconnected from "' + roomId + '" room (encrypted)'
+			);
+		},
+		on(event, callback) {
+			if (messageCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "message") {
+				throw Error('Only "message" event is supported.');
+			}
+			messageCallback = callback;
+		},
+	};
+}
+
+export function createUnencryptedConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	let intervalId;
+	let messageCallback;
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room (unencrypted)...'
+			);
+			clearInterval(intervalId);
+			intervalId = setInterval(() => {
+				if (messageCallback) {
+					if (Math.random() > 0.5) {
+						messageCallback("hey");
+					} else {
+						messageCallback("lol");
+					}
+				}
+			}, 3000);
+		},
+		disconnect() {
+			clearInterval(intervalId);
+			messageCallback = null;
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room (unencrypted)'
+			);
+		},
+		on(event, callback) {
+			if (messageCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "message") {
+				throw Error('Only "message" event is supported.');
+			}
+			messageCallback = callback;
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme) {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 5px;
+}
+```
+
+<Solution>
+
+There's more than one correct way to solve this, but here is one possible solution.
+
+In the original example, toggling the theme caused different `onMessage` and `createConnection` functions to be created and passed down. Since the Effect depended on these functions, the chat would re-connect every time you toggle the theme.
+
+To fix the problem with `onMessage`, you needed to wrap it into an Effect Event:
+
+```js
+export default function ChatRoom({ roomId, createConnection, onMessage }) {
+  const onReceiveMessage = useEffectEvent(onMessage);
+
+  useEffect(() => {
+    const connection = createConnection();
+    connection.on('message', (msg) => onReceiveMessage(msg));
+    // ...
+```
+
+Unlike the `onMessage` prop, the `onReceiveMessage` Effect Event is not reactive. This is why it doesn't need to be a dependency of your Effect. As a result, changes to `onMessage` won't cause the chat to re-connect.
+
+You can't do the same with `createConnection` because it _should_ be reactive. You _want_ the Effect to re-trigger if the user switches between an encrypted and an unencryption connection, or if the user switches the current room. However, because `createConnection` is a function, you can't check whether the information it reads has _actually_ changed or not. To solve this, instead of passing `createConnection` down from the `App` component, pass the raw `roomId` and `isEncrypted` values:
+
+```js
+<ChatRoom
+	roomId={roomId}
+	isEncrypted={isEncrypted}
+	onMessage={(msg) => {
+		showNotification("New message: " + msg, isDark ? "dark" : "light");
+	}}
+/>
+```
+
+Now you can move the `createConnection` function _inside_ the Effect instead of passing it down from the `App`:
+
+```js
+import {
+  createEncryptedConnection,
+  createUnencryptedConnection,
+} from './chat.js';
+
+export default function ChatRoom({ roomId, isEncrypted, onMessage }) {
+  const onReceiveMessage = useEffectEvent(onMessage);
+
+  useEffect(() => {
+    function createConnection() {
+      const options = {
+        serverUrl: 'https://localhost:1234',
+        roomId: roomId
+      };
+      if (isEncrypted) {
+        return createEncryptedConnection(options);
+      } else {
+        return createUnencryptedConnection(options);
+      }
+    }
+    // ...
+```
+
+After these two changes, your Effect no longer depends on any function values:
+
+```js
+export default function ChatRoom({ roomId, isEncrypted, onMessage }) { // Reactive values
+  const onReceiveMessage = useEffectEvent(onMessage); // Not reactive
+
+  useEffect(() => {
+    function createConnection() {
+      const options = {
+        serverUrl: 'https://localhost:1234',
+        roomId: roomId // Reading a reactive value
+      };
+      if (isEncrypted) { // Reading a reactive value
+        return createEncryptedConnection(options);
+      } else {
+        return createUnencryptedConnection(options);
+      }
+    }
+
+    const connection = createConnection();
+    connection.on('message', (msg) => onReceiveMessage(msg));
+    connection.connect();
+    return () => connection.disconnect();
+  }, [roomId, isEncrypted]); // ✅ All dependencies declared
+```
+
+As a result, the chat re-connects only when something meaningful (`roomId` or `isEncrypted`) changes:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+import { showNotification } from "./notifications.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	const [isEncrypted, setIsEncrypted] = useState(false);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Use dark theme
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isEncrypted}
+					onChange={(e) => setIsEncrypted(e.target.checked)}
+				/>
+				Enable encryption
+			</label>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom
+				roomId={roomId}
+				isEncrypted={isEncrypted}
+				onMessage={(msg) => {
+					showNotification(
+						"New message: " + msg,
+						isDark ? "dark" : "light"
+					);
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+import {
+	createEncryptedConnection,
+	createUnencryptedConnection,
+} from "./chat.js";
+
+export default function ChatRoom({ roomId, isEncrypted, onMessage }) {
+	const onReceiveMessage = useEffectEvent(onMessage);
+
+	useEffect(() => {
+		function createConnection() {
+			const options = {
+				serverUrl: "https://localhost:1234",
+				roomId: roomId,
+			};
+			if (isEncrypted) {
+				return createEncryptedConnection(options);
+			} else {
+				return createUnencryptedConnection(options);
+			}
+		}
+
+		const connection = createConnection();
+		connection.on("message", (msg) => onReceiveMessage(msg));
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, isEncrypted]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+```
+
+```js
+export function createEncryptedConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	let intervalId;
+	let messageCallback;
+	return {
+		connect() {
+			console.log(
+				'✅ 🔐 Connecting to "' + roomId + '" room... (encrypted)'
+			);
+			clearInterval(intervalId);
+			intervalId = setInterval(() => {
+				if (messageCallback) {
+					if (Math.random() > 0.5) {
+						messageCallback("hey");
+					} else {
+						messageCallback("lol");
+					}
+				}
+			}, 3000);
+		},
+		disconnect() {
+			clearInterval(intervalId);
+			messageCallback = null;
+			console.log(
+				'❌ 🔐 Disconnected from "' + roomId + '" room (encrypted)'
+			);
+		},
+		on(event, callback) {
+			if (messageCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "message") {
+				throw Error('Only "message" event is supported.');
+			}
+			messageCallback = callback;
+		},
+	};
+}
+
+export function createUnencryptedConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	let intervalId;
+	let messageCallback;
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room (unencrypted)...'
+			);
+			clearInterval(intervalId);
+			intervalId = setInterval(() => {
+				if (messageCallback) {
+					if (Math.random() > 0.5) {
+						messageCallback("hey");
+					} else {
+						messageCallback("lol");
+					}
+				}
+			}, 3000);
+		},
+		disconnect() {
+			clearInterval(intervalId);
+			messageCallback = null;
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room (unencrypted)'
+			);
+		},
+		on(event, callback) {
+			if (messageCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "message") {
+				throw Error('Only "message" event is supported.');
+			}
+			messageCallback = callback;
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme) {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 5px;
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/render-and-commit.md b/docs/src/learn/render-and-commit.md
new file mode 100644
index 000000000..94238ca65
--- /dev/null
+++ b/docs/src/learn/render-and-commit.md
@@ -0,0 +1,201 @@
+---
+title: Render and Commit 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Before your components are displayed on screen, they must be rendered by React. Understanding the steps in this process will help you think about how your code executes and explain its behavior.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What rendering means in React
+    -   When and why React renders a component
+    -   The steps involved in displaying a component on screen
+    -   Why rendering does not always produce a DOM update
+
+Imagine that your components are cooks in the kitchen, assembling tasty dishes from ingredients. In this scenario, React is the waiter who puts in requests from customers and brings them their orders. This process of requesting and serving UI has three steps:
+
+1. **Triggering** a render (delivering the guest's order to the kitchen)
+2. **Rendering** the component (preparing the order in the kitchen)
+3. **Committing** to the DOM (placing the order on the table)
+
+<IllustrationBlock sequential>
+  <Illustration caption="Trigger" alt="React as a server in a restaurant, fetching orders from the users and delivering them to the Component Kitchen." src="/images/docs/illustrations/i_render-and-commit1.png" />
+  <Illustration caption="Render" alt="The Card Chef gives React a fresh Card component." src="/images/docs/illustrations/i_render-and-commit2.png" />
+  <Illustration caption="Commit" alt="React delivers the Card to the user at their table." src="/images/docs/illustrations/i_render-and-commit3.png" />
+</IllustrationBlock>
+
+## Step 1: Trigger a render
+
+There are two reasons for a component to render:
+
+1. It's the component's **initial render.**
+2. The component's (or one of its ancestors') **state has been updated.**
+
+### Initial render
+
+When your app starts, you need to trigger the initial render. Frameworks and sandboxes sometimes hide this code, but it's done by calling [`createRoot`](/reference/react-dom/client/createRoot) with the target DOM node, and then calling its `render` method with your component:
+
+```js
+import Image from "./Image.js";
+import { createRoot } from "react-dom/client";
+
+const root = createRoot(document.getElementById("root"));
+root.render(<Image />);
+```
+
+```js
+export default function Image() {
+	return (
+		<img
+			src="https://i.imgur.com/ZF6s192.jpg"
+			alt="'Floralis Genérica' by Eduardo Catalano: a gigantic metallic flower sculpture with reflective petals"
+		/>
+	);
+}
+```
+
+Try commenting out the `root.render()` call and see the component disappear!
+
+### Re-renders when state updates
+
+Once the component has been initially rendered, you can trigger further renders by updating its state with the [`set` function.](/reference/react/useState#setstate) Updating your component's state automatically queues a render. (You can imagine these as a restaurant guest ordering tea, dessert, and all sorts of things after putting in their first order, depending on the state of their thirst or hunger.)
+
+<IllustrationBlock sequential>
+  <Illustration caption="State update..." alt="React as a server in a restaurant, serving a Card UI to the user, represented as a patron with a cursor for their head. They patron expresses they want a pink card, not a black one!" src="/images/docs/illustrations/i_rerender1.png" />
+  <Illustration caption="...triggers..." alt="React returns to the Component Kitchen and tells the Card Chef they need a pink Card." src="/images/docs/illustrations/i_rerender2.png" />
+  <Illustration caption="...render!" alt="The Card Chef gives React the pink Card." src="/images/docs/illustrations/i_rerender3.png" />
+</IllustrationBlock>
+
+## Step 2: React renders your components
+
+After you trigger a render, React calls your components to figure out what to display on screen. **"Rendering" is React calling your components.**
+
+-   **On initial render,** React will call the root component.
+-   **For subsequent renders,** React will call the function component whose state update triggered the render.
+
+This process is recursive: if the updated component returns some other component, React will render _that_ component next, and if that component also returns something, it will render _that_ component next, and so on. The process will continue until there are no more nested components and React knows exactly what should be displayed on screen.
+
+In the following example, React will call `Gallery()` and `Image()` several times:
+
+```js
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Inspiring Sculptures</h1>
+			<Image />
+			<Image />
+			<Image />
+		</section>
+	);
+}
+
+function Image() {
+	return (
+		<img
+			src="https://i.imgur.com/ZF6s192.jpg"
+			alt="'Floralis Genérica' by Eduardo Catalano: a gigantic metallic flower sculpture with reflective petals"
+		/>
+	);
+}
+```
+
+```js
+import Gallery from "./Gallery.js";
+import { createRoot } from "react-dom/client";
+
+const root = createRoot(document.getElementById("root"));
+root.render(<Gallery />);
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+}
+```
+
+-   **During the initial render,** React will [create the DOM nodes](https://developer.mozilla.org/docs/Web/API/Document/createElement) for `<section>`, `<h1>`, and three `<img>` tags.
+-   **During a re-render,** React will calculate which of their properties, if any, have changed since the previous render. It won't do anything with that information until the next step, the commit phase.
+
+<Pitfall>
+
+Rendering must always be a [pure calculation](/learn/keeping-components-pure):
+
+-   **Same inputs, same output.** Given the same inputs, a component should always return the same JSX. (When someone orders a salad with tomatoes, they should not receive a salad with onions!)
+-   **It minds its own business.** It should not change any objects or variables that existed before rendering. (One order should not change anyone else's order.)
+
+Otherwise, you can encounter confusing bugs and unpredictable behavior as your codebase grows in complexity. When developing in "Strict Mode", React calls each component's function twice, which can help surface mistakes caused by impure functions.
+
+</Pitfall>
+
+<DeepDive>
+
+#### Optimizing performance
+
+The default behavior of rendering all components nested within the updated component is not optimal for performance if the updated component is very high in the tree. If you run into a performance issue, there are several opt-in ways to solve it described in the [Performance](https://reactjs.org/docs/optimizing-performance.html) section. **Don't optimize prematurely!**
+
+</DeepDive>
+
+## Step 3: React commits changes to the DOM
+
+After rendering (calling) your components, React will modify the DOM.
+
+-   **For the initial render,** React will use the [`appendChild()`](https://developer.mozilla.org/docs/Web/API/Node/appendChild) DOM API to put all the DOM nodes it has created on screen.
+-   **For re-renders,** React will apply the minimal necessary operations (calculated while rendering!) to make the DOM match the latest rendering output.
+
+**React only changes the DOM nodes if there's a difference between renders.** For example, here is a component that re-renders with different props passed from its parent every second. Notice how you can add some text into the `<input>`, updating its `value`, but the text doesn't disappear when the component re-renders:
+
+```js
+export default function Clock({ time }) {
+	return (
+		<>
+			<h1>{time}</h1>
+			<input />
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import Clock from "./Clock.js";
+
+function useTime() {
+	const [time, setTime] = useState(() => new Date());
+	useEffect(() => {
+		const id = setInterval(() => {
+			setTime(new Date());
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return time;
+}
+
+export default function App() {
+	const time = useTime();
+	return <Clock time={time.toLocaleTimeString()} />;
+}
+```
+
+This works because during this last step, React only updates the content of `<h1>` with the new `time`. It sees that the `<input>` appears in the JSX in the same place as last time, so React doesn't touch the `<input>`—or its `value`!
+
+## Epilogue: Browser paint
+
+After rendering is done and React updated the DOM, the browser will repaint the screen. Although this process is known as "browser rendering", we'll refer to it as "painting" to avoid confusion throughout the docs.
+
+<Illustration alt="A browser painting 'still life with card element'." src="/images/docs/illustrations/i_browser-paint.png" />
+
+<Recap>
+
+-   Any screen update in a React app happens in three steps:
+    1. Trigger
+    2. Render
+    3. Commit
+-   You can use Strict Mode to find mistakes in your components
+-   React does not touch the DOM if the rendering result is the same as last time
+
+</Recap>
diff --git a/docs/src/learn/rendering-lists.md b/docs/src/learn/rendering-lists.md
new file mode 100644
index 000000000..d0b74c85b
--- /dev/null
+++ b/docs/src/learn/rendering-lists.md
@@ -0,0 +1,1272 @@
+---
+title: Rendering Lists 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+You will often want to display multiple similar components from a collection of data. You can use the [JavaScript array methods](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array#) to manipulate an array of data. On this page, you'll use [`filter()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) and [`map()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map) with React to filter and transform your array of data into an array of components.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to render components from an array using JavaScript's `map()`
+    -   How to render only specific components using JavaScript's `filter()`
+    -   When and why to use React keys
+
+## Rendering data from arrays
+
+Say that you have a list of content.
+
+```js
+<ul>
+	<li>Creola Katherine Johnson: mathematician</li>
+	<li>Mario José Molina-Pasquel Henríquez: chemist</li>
+	<li>Mohammad Abdus Salam: physicist</li>
+	<li>Percy Lavon Julian: chemist</li>
+	<li>Subrahmanyan Chandrasekhar: astrophysicist</li>
+</ul>
+```
+
+The only difference among those list items is their contents, their data. You will often need to show several instances of the same component using different data when building interfaces: from lists of comments to galleries of profile images. In these situations, you can store that data in JavaScript objects and arrays and use methods like [`map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) and [`filter()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) to render lists of components from them.
+
+Here’s a short example of how to generate a list of items from an array:
+
+1. **Move** the data into an array:
+
+```js
+const people = [
+	"Creola Katherine Johnson: mathematician",
+	"Mario José Molina-Pasquel Henríquez: chemist",
+	"Mohammad Abdus Salam: physicist",
+	"Percy Lavon Julian: chemist",
+	"Subrahmanyan Chandrasekhar: astrophysicist",
+];
+```
+
+2. **Map** the `people` members into a new array of JSX nodes, `listItems`:
+
+```js
+const listItems = people.map((person) => <li>{person}</li>);
+```
+
+3. **Return** `listItems` from your component wrapped in a `<ul>`:
+
+```js
+return <ul>{listItems}</ul>;
+```
+
+Here is the result:
+
+```js
+const people = [
+	"Creola Katherine Johnson: mathematician",
+	"Mario José Molina-Pasquel Henríquez: chemist",
+	"Mohammad Abdus Salam: physicist",
+	"Percy Lavon Julian: chemist",
+	"Subrahmanyan Chandrasekhar: astrophysicist",
+];
+
+export default function List() {
+	const listItems = people.map((person) => <li>{person}</li>);
+	return <ul>{listItems}</ul>;
+}
+```
+
+```css
+li {
+	margin-bottom: 10px;
+}
+```
+
+Notice the sandbox above displays a console error:
+
+<ConsoleBlock level="error">
+
+Warning: Each child in a list should have a unique "key" prop.
+
+</ConsoleBlock>
+
+You'll learn how to fix this error later on this page. Before we get to that, let's add some structure to your data.
+
+## Filtering arrays of items
+
+This data can be structured even more.
+
+```js
+const people = [
+	{
+		id: 0,
+		name: "Creola Katherine Johnson",
+		profession: "mathematician",
+	},
+	{
+		id: 1,
+		name: "Mario José Molina-Pasquel Henríquez",
+		profession: "chemist",
+	},
+	{
+		id: 2,
+		name: "Mohammad Abdus Salam",
+		profession: "physicist",
+	},
+	{
+		name: "Percy Lavon Julian",
+		profession: "chemist",
+	},
+	{
+		name: "Subrahmanyan Chandrasekhar",
+		profession: "astrophysicist",
+	},
+];
+```
+
+Let's say you want a way to only show people whose profession is `'chemist'`. You can use JavaScript's `filter()` method to return just those people. This method takes an array of items, passes them through a “test” (a function that returns `true` or `false`), and returns a new array of only those items that passed the test (returned `true`).
+
+You only want the items where `profession` is `'chemist'`. The "test" function for this looks like `(person) => person.profession === 'chemist'`. Here's how to put it together:
+
+1. **Create** a new array of just “chemist” people, `chemists`, by calling `filter()` on the `people` filtering by `person.profession === 'chemist'`:
+
+```js
+const chemists = people.filter((person) => person.profession === "chemist");
+```
+
+2. Now **map** over `chemists`:
+
+```js
+const listItems = chemists.map((person) => (
+	<li>
+		<img src={getImageUrl(person)} alt={person.name} />
+		<p>
+			<b>{person.name}:</b>
+			{" " + person.profession + " "}
+			known for {person.accomplishment}
+		</p>
+	</li>
+));
+```
+
+3. Lastly, **return** the `listItems` from your component:
+
+```js
+return <ul>{listItems}</ul>;
+```
+
+```js
+import { people } from "./data.js";
+import { getImageUrl } from "./utils.js";
+
+export default function List() {
+	const chemists = people.filter((person) => person.profession === "chemist");
+	const listItems = chemists.map((person) => (
+		<li>
+			<img src={getImageUrl(person)} alt={person.name} />
+			<p>
+				<b>{person.name}:</b>
+				{" " + person.profession + " "}
+				known for {person.accomplishment}
+			</p>
+		</li>
+	));
+	return <ul>{listItems}</ul>;
+}
+```
+
+```js
+export const people = [
+	{
+		id: 0,
+		name: "Creola Katherine Johnson",
+		profession: "mathematician",
+		accomplishment: "spaceflight calculations",
+		imageId: "MK3eW3A",
+	},
+	{
+		id: 1,
+		name: "Mario José Molina-Pasquel Henríquez",
+		profession: "chemist",
+		accomplishment: "discovery of Arctic ozone hole",
+		imageId: "mynHUSa",
+	},
+	{
+		id: 2,
+		name: "Mohammad Abdus Salam",
+		profession: "physicist",
+		accomplishment: "electromagnetism theory",
+		imageId: "bE7W1ji",
+	},
+	{
+		id: 3,
+		name: "Percy Lavon Julian",
+		profession: "chemist",
+		accomplishment:
+			"pioneering cortisone drugs, steroids and birth control pills",
+		imageId: "IOjWm71",
+	},
+	{
+		id: 4,
+		name: "Subrahmanyan Chandrasekhar",
+		profession: "astrophysicist",
+		accomplishment: "white dwarf star mass calculations",
+		imageId: "lrWQx8l",
+	},
+];
+```
+
+```js
+export function getImageUrl(person) {
+	return "https://i.imgur.com/" + person.imageId + "s.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+img {
+	width: 100px;
+	height: 100px;
+	border-radius: 50%;
+}
+```
+
+<Pitfall>
+
+Arrow functions implicitly return the expression right after `=>`, so you didn't need a `return` statement:
+
+```js
+const listItems = chemists.map(
+	(person) => <li>...</li> // Implicit return!
+);
+```
+
+However, **you must write `return` explicitly if your `=>` is followed by a `{` curly brace!**
+
+```js
+const listItems = chemists.map((person) => {
+	// Curly brace
+	return <li>...</li>;
+});
+```
+
+Arrow functions containing `=> {` are said to have a ["block body".](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#function_body) They let you write more than a single line of code, but you _have to_ write a `return` statement yourself. If you forget it, nothing gets returned!
+
+</Pitfall>
+
+## Keeping list items in order with `key`
+
+Notice that all the sandboxes above show an error in the console:
+
+<ConsoleBlock level="error">
+
+Warning: Each child in a list should have a unique "key" prop.
+
+</ConsoleBlock>
+
+You need to give each array item a `key` -- a string or a number that uniquely identifies it among other items in that array:
+
+```js
+<li key={person.id}>...</li>
+```
+
+<Note>
+
+JSX elements directly inside a `map()` call always need keys!
+
+</Note>
+
+Keys tell React which array item each component corresponds to, so that it can match them up later. This becomes important if your array items can move (e.g. due to sorting), get inserted, or get deleted. A well-chosen `key` helps React infer what exactly has happened, and make the correct updates to the DOM tree.
+
+Rather than generating keys on the fly, you should include them in your data:
+
+```js
+import { people } from "./data.js";
+import { getImageUrl } from "./utils.js";
+
+export default function List() {
+	const listItems = people.map((person) => (
+		<li key={person.id}>
+			<img src={getImageUrl(person)} alt={person.name} />
+			<p>
+				<b>{person.name}</b>
+				{" " + person.profession + " "}
+				known for {person.accomplishment}
+			</p>
+		</li>
+	));
+	return <ul>{listItems}</ul>;
+}
+```
+
+```js
+export const people = [
+	{
+		id: 0, // Used in JSX as a key
+		name: "Creola Katherine Johnson",
+		profession: "mathematician",
+		accomplishment: "spaceflight calculations",
+		imageId: "MK3eW3A",
+	},
+	{
+		id: 1, // Used in JSX as a key
+		name: "Mario José Molina-Pasquel Henríquez",
+		profession: "chemist",
+		accomplishment: "discovery of Arctic ozone hole",
+		imageId: "mynHUSa",
+	},
+	{
+		id: 2, // Used in JSX as a key
+		name: "Mohammad Abdus Salam",
+		profession: "physicist",
+		accomplishment: "electromagnetism theory",
+		imageId: "bE7W1ji",
+	},
+	{
+		id: 3, // Used in JSX as a key
+		name: "Percy Lavon Julian",
+		profession: "chemist",
+		accomplishment:
+			"pioneering cortisone drugs, steroids and birth control pills",
+		imageId: "IOjWm71",
+	},
+	{
+		id: 4, // Used in JSX as a key
+		name: "Subrahmanyan Chandrasekhar",
+		profession: "astrophysicist",
+		accomplishment: "white dwarf star mass calculations",
+		imageId: "lrWQx8l",
+	},
+];
+```
+
+```js
+export function getImageUrl(person) {
+	return "https://i.imgur.com/" + person.imageId + "s.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+img {
+	width: 100px;
+	height: 100px;
+	border-radius: 50%;
+}
+```
+
+<DeepDive>
+
+#### Displaying several DOM nodes for each list item
+
+What do you do when each item needs to render not one, but several DOM nodes?
+
+The short [`<>...</>` Fragment](/reference/react/Fragment) syntax won't let you pass a key, so you need to either group them into a single `<div>`, or use the slightly longer and [more explicit `<Fragment>` syntax:](/reference/react/Fragment#rendering-a-list-of-fragments)
+
+```js
+import { Fragment } from "react";
+
+// ...
+
+const listItems = people.map((person) => (
+	<Fragment key={person.id}>
+		<h1>{person.name}</h1>
+		<p>{person.bio}</p>
+	</Fragment>
+));
+```
+
+Fragments disappear from the DOM, so this will produce a flat list of `<h1>`, `<p>`, `<h1>`, `<p>`, and so on.
+
+</DeepDive>
+
+### Where to get your `key`
+
+Different sources of data provide different sources of keys:
+
+-   **Data from a database:** If your data is coming from a database, you can use the database keys/IDs, which are unique by nature.
+-   **Locally generated data:** If your data is generated and persisted locally (e.g. notes in a note-taking app), use an incrementing counter, [`crypto.randomUUID()`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID) or a package like [`uuid`](https://www.npmjs.com/package/uuid) when creating items.
+
+### Rules of keys
+
+-   **Keys must be unique among siblings.** However, it’s okay to use the same keys for JSX nodes in _different_ arrays.
+-   **Keys must not change** or that defeats their purpose! Don't generate them while rendering.
+
+### Why does React need keys?
+
+Imagine that files on your desktop didn't have names. Instead, you'd refer to them by their order -- the first file, the second file, and so on. You could get used to it, but once you delete a file, it would get confusing. The second file would become the first file, the third file would be the second file, and so on.
+
+File names in a folder and JSX keys in an array serve a similar purpose. They let us uniquely identify an item between its siblings. A well-chosen key provides more information than the position within the array. Even if the _position_ changes due to reordering, the `key` lets React identify the item throughout its lifetime.
+
+<Pitfall>
+
+You might be tempted to use an item's index in the array as its key. In fact, that's what React will use if you don't specify a `key` at all. But the order in which you render items will change over time if an item is inserted, deleted, or if the array gets reordered. Index as a key often leads to subtle and confusing bugs.
+
+Similarly, do not generate keys on the fly, e.g. with `key={Math.random()}`. This will cause keys to never match up between renders, leading to all your components and DOM being recreated every time. Not only is this slow, but it will also lose any user input inside the list items. Instead, use a stable ID based on the data.
+
+Note that your components won't receive `key` as a prop. It's only used as a hint by React itself. If your component needs an ID, you have to pass it as a separate prop: `<Profile key={id} userId={id} />`.
+
+</Pitfall>
+
+<Recap>
+
+On this page you learned:
+
+-   How to move data out of components and into data structures like arrays and objects.
+-   How to generate sets of similar components with JavaScript's `map()`.
+-   How to create arrays of filtered items with JavaScript's `filter()`.
+-   Why and how to set `key` on each component in a collection so React can keep track of each of them even if their position or data changes.
+
+</Recap>
+
+<Challenges>
+
+#### Splitting a list in two
+
+This example shows a list of all people.
+
+Change it to show two separate lists one after another: **Chemists** and **Everyone Else.** Like previously, you can determine whether a person is a chemist by checking if `person.profession === 'chemist'`.
+
+```js
+import { people } from "./data.js";
+import { getImageUrl } from "./utils.js";
+
+export default function List() {
+	const listItems = people.map((person) => (
+		<li key={person.id}>
+			<img src={getImageUrl(person)} alt={person.name} />
+			<p>
+				<b>{person.name}:</b>
+				{" " + person.profession + " "}
+				known for {person.accomplishment}
+			</p>
+		</li>
+	));
+	return (
+		<article>
+			<h1>Scientists</h1>
+			<ul>{listItems}</ul>
+		</article>
+	);
+}
+```
+
+```js
+export const people = [
+	{
+		id: 0,
+		name: "Creola Katherine Johnson",
+		profession: "mathematician",
+		accomplishment: "spaceflight calculations",
+		imageId: "MK3eW3A",
+	},
+	{
+		id: 1,
+		name: "Mario José Molina-Pasquel Henríquez",
+		profession: "chemist",
+		accomplishment: "discovery of Arctic ozone hole",
+		imageId: "mynHUSa",
+	},
+	{
+		id: 2,
+		name: "Mohammad Abdus Salam",
+		profession: "physicist",
+		accomplishment: "electromagnetism theory",
+		imageId: "bE7W1ji",
+	},
+	{
+		id: 3,
+		name: "Percy Lavon Julian",
+		profession: "chemist",
+		accomplishment:
+			"pioneering cortisone drugs, steroids and birth control pills",
+		imageId: "IOjWm71",
+	},
+	{
+		id: 4,
+		name: "Subrahmanyan Chandrasekhar",
+		profession: "astrophysicist",
+		accomplishment: "white dwarf star mass calculations",
+		imageId: "lrWQx8l",
+	},
+];
+```
+
+```js
+export function getImageUrl(person) {
+	return "https://i.imgur.com/" + person.imageId + "s.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+img {
+	width: 100px;
+	height: 100px;
+	border-radius: 50%;
+}
+```
+
+<Solution>
+
+You could use `filter()` twice, creating two separate arrays, and then `map` over both of them:
+
+```js
+import { people } from "./data.js";
+import { getImageUrl } from "./utils.js";
+
+export default function List() {
+	const chemists = people.filter((person) => person.profession === "chemist");
+	const everyoneElse = people.filter(
+		(person) => person.profession !== "chemist"
+	);
+	return (
+		<article>
+			<h1>Scientists</h1>
+			<h2>Chemists</h2>
+			<ul>
+				{chemists.map((person) => (
+					<li key={person.id}>
+						<img src={getImageUrl(person)} alt={person.name} />
+						<p>
+							<b>{person.name}:</b>
+							{" " + person.profession + " "}
+							known for {person.accomplishment}
+						</p>
+					</li>
+				))}
+			</ul>
+			<h2>Everyone Else</h2>
+			<ul>
+				{everyoneElse.map((person) => (
+					<li key={person.id}>
+						<img src={getImageUrl(person)} alt={person.name} />
+						<p>
+							<b>{person.name}:</b>
+							{" " + person.profession + " "}
+							known for {person.accomplishment}
+						</p>
+					</li>
+				))}
+			</ul>
+		</article>
+	);
+}
+```
+
+```js
+export const people = [
+	{
+		id: 0,
+		name: "Creola Katherine Johnson",
+		profession: "mathematician",
+		accomplishment: "spaceflight calculations",
+		imageId: "MK3eW3A",
+	},
+	{
+		id: 1,
+		name: "Mario José Molina-Pasquel Henríquez",
+		profession: "chemist",
+		accomplishment: "discovery of Arctic ozone hole",
+		imageId: "mynHUSa",
+	},
+	{
+		id: 2,
+		name: "Mohammad Abdus Salam",
+		profession: "physicist",
+		accomplishment: "electromagnetism theory",
+		imageId: "bE7W1ji",
+	},
+	{
+		id: 3,
+		name: "Percy Lavon Julian",
+		profession: "chemist",
+		accomplishment:
+			"pioneering cortisone drugs, steroids and birth control pills",
+		imageId: "IOjWm71",
+	},
+	{
+		id: 4,
+		name: "Subrahmanyan Chandrasekhar",
+		profession: "astrophysicist",
+		accomplishment: "white dwarf star mass calculations",
+		imageId: "lrWQx8l",
+	},
+];
+```
+
+```js
+export function getImageUrl(person) {
+	return "https://i.imgur.com/" + person.imageId + "s.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+img {
+	width: 100px;
+	height: 100px;
+	border-radius: 50%;
+}
+```
+
+In this solution, the `map` calls are placed directly inline into the parent `<ul>` elements, but you could introduce variables for them if you find that more readable.
+
+There is still a bit duplication between the rendered lists. You can go further and extract the repetitive parts into a `<ListSection>` component:
+
+```js
+import { people } from "./data.js";
+import { getImageUrl } from "./utils.js";
+
+function ListSection({ title, people }) {
+	return (
+		<>
+			<h2>{title}</h2>
+			<ul>
+				{people.map((person) => (
+					<li key={person.id}>
+						<img src={getImageUrl(person)} alt={person.name} />
+						<p>
+							<b>{person.name}:</b>
+							{" " + person.profession + " "}
+							known for {person.accomplishment}
+						</p>
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+
+export default function List() {
+	const chemists = people.filter((person) => person.profession === "chemist");
+	const everyoneElse = people.filter(
+		(person) => person.profession !== "chemist"
+	);
+	return (
+		<article>
+			<h1>Scientists</h1>
+			<ListSection title="Chemists" people={chemists} />
+			<ListSection title="Everyone Else" people={everyoneElse} />
+		</article>
+	);
+}
+```
+
+```js
+export const people = [
+	{
+		id: 0,
+		name: "Creola Katherine Johnson",
+		profession: "mathematician",
+		accomplishment: "spaceflight calculations",
+		imageId: "MK3eW3A",
+	},
+	{
+		id: 1,
+		name: "Mario José Molina-Pasquel Henríquez",
+		profession: "chemist",
+		accomplishment: "discovery of Arctic ozone hole",
+		imageId: "mynHUSa",
+	},
+	{
+		id: 2,
+		name: "Mohammad Abdus Salam",
+		profession: "physicist",
+		accomplishment: "electromagnetism theory",
+		imageId: "bE7W1ji",
+	},
+	{
+		id: 3,
+		name: "Percy Lavon Julian",
+		profession: "chemist",
+		accomplishment:
+			"pioneering cortisone drugs, steroids and birth control pills",
+		imageId: "IOjWm71",
+	},
+	{
+		id: 4,
+		name: "Subrahmanyan Chandrasekhar",
+		profession: "astrophysicist",
+		accomplishment: "white dwarf star mass calculations",
+		imageId: "lrWQx8l",
+	},
+];
+```
+
+```js
+export function getImageUrl(person) {
+	return "https://i.imgur.com/" + person.imageId + "s.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+img {
+	width: 100px;
+	height: 100px;
+	border-radius: 50%;
+}
+```
+
+A very attentive reader might notice that with two `filter` calls, we check each person's profession twice. Checking a property is very fast, so in this example it's fine. If your logic was more expensive than that, you could replace the `filter` calls with a loop that manually constructs the arrays and checks each person once.
+
+In fact, if `people` never change, you could move this code out of your component. From React's perspective, all that matters is that you give it an array of JSX nodes in the end. It doesn't care how you produce that array:
+
+```js
+import { people } from "./data.js";
+import { getImageUrl } from "./utils.js";
+
+let chemists = [];
+let everyoneElse = [];
+people.forEach((person) => {
+	if (person.profession === "chemist") {
+		chemists.push(person);
+	} else {
+		everyoneElse.push(person);
+	}
+});
+
+function ListSection({ title, people }) {
+	return (
+		<>
+			<h2>{title}</h2>
+			<ul>
+				{people.map((person) => (
+					<li key={person.id}>
+						<img src={getImageUrl(person)} alt={person.name} />
+						<p>
+							<b>{person.name}:</b>
+							{" " + person.profession + " "}
+							known for {person.accomplishment}
+						</p>
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+
+export default function List() {
+	return (
+		<article>
+			<h1>Scientists</h1>
+			<ListSection title="Chemists" people={chemists} />
+			<ListSection title="Everyone Else" people={everyoneElse} />
+		</article>
+	);
+}
+```
+
+```js
+export const people = [
+	{
+		id: 0,
+		name: "Creola Katherine Johnson",
+		profession: "mathematician",
+		accomplishment: "spaceflight calculations",
+		imageId: "MK3eW3A",
+	},
+	{
+		id: 1,
+		name: "Mario José Molina-Pasquel Henríquez",
+		profession: "chemist",
+		accomplishment: "discovery of Arctic ozone hole",
+		imageId: "mynHUSa",
+	},
+	{
+		id: 2,
+		name: "Mohammad Abdus Salam",
+		profession: "physicist",
+		accomplishment: "electromagnetism theory",
+		imageId: "bE7W1ji",
+	},
+	{
+		id: 3,
+		name: "Percy Lavon Julian",
+		profession: "chemist",
+		accomplishment:
+			"pioneering cortisone drugs, steroids and birth control pills",
+		imageId: "IOjWm71",
+	},
+	{
+		id: 4,
+		name: "Subrahmanyan Chandrasekhar",
+		profession: "astrophysicist",
+		accomplishment: "white dwarf star mass calculations",
+		imageId: "lrWQx8l",
+	},
+];
+```
+
+```js
+export function getImageUrl(person) {
+	return "https://i.imgur.com/" + person.imageId + "s.jpg";
+}
+```
+
+```css
+ul {
+	list-style-type: none;
+	padding: 0px 10px;
+}
+li {
+	margin-bottom: 10px;
+	display: grid;
+	grid-template-columns: auto 1fr;
+	gap: 20px;
+	align-items: center;
+}
+img {
+	width: 100px;
+	height: 100px;
+	border-radius: 50%;
+}
+```
+
+</Solution>
+
+#### Nested lists in one component
+
+Make a list of recipes from this array! For each recipe in the array, display its name as an `<h2>` and list its ingredients in a `<ul>`.
+
+<Hint>
+
+This will require nesting two different `map` calls.
+
+</Hint>
+
+```js
+import { recipes } from "./data.js";
+
+export default function RecipeList() {
+	return (
+		<div>
+			<h1>Recipes</h1>
+		</div>
+	);
+}
+```
+
+```js
+export const recipes = [
+	{
+		id: "greek-salad",
+		name: "Greek Salad",
+		ingredients: ["tomatoes", "cucumber", "onion", "olives", "feta"],
+	},
+	{
+		id: "hawaiian-pizza",
+		name: "Hawaiian Pizza",
+		ingredients: [
+			"pizza crust",
+			"pizza sauce",
+			"mozzarella",
+			"ham",
+			"pineapple",
+		],
+	},
+	{
+		id: "hummus",
+		name: "Hummus",
+		ingredients: [
+			"chickpeas",
+			"olive oil",
+			"garlic cloves",
+			"lemon",
+			"tahini",
+		],
+	},
+];
+```
+
+<Solution>
+
+Here is one way you could go about it:
+
+```js
+import { recipes } from "./data.js";
+
+export default function RecipeList() {
+	return (
+		<div>
+			<h1>Recipes</h1>
+			{recipes.map((recipe) => (
+				<div key={recipe.id}>
+					<h2>{recipe.name}</h2>
+					<ul>
+						{recipe.ingredients.map((ingredient) => (
+							<li key={ingredient}>{ingredient}</li>
+						))}
+					</ul>
+				</div>
+			))}
+		</div>
+	);
+}
+```
+
+```js
+export const recipes = [
+	{
+		id: "greek-salad",
+		name: "Greek Salad",
+		ingredients: ["tomatoes", "cucumber", "onion", "olives", "feta"],
+	},
+	{
+		id: "hawaiian-pizza",
+		name: "Hawaiian Pizza",
+		ingredients: [
+			"pizza crust",
+			"pizza sauce",
+			"mozzarella",
+			"ham",
+			"pineapple",
+		],
+	},
+	{
+		id: "hummus",
+		name: "Hummus",
+		ingredients: [
+			"chickpeas",
+			"olive oil",
+			"garlic cloves",
+			"lemon",
+			"tahini",
+		],
+	},
+];
+```
+
+Each of the `recipes` already includes an `id` field, so that's what the outer loop uses for its `key`. There is no ID you could use to loop over ingredients. However, it's reasonable to assume that the same ingredient won't be listed twice within the same recipe, so its name can serve as a `key`. Alternatively, you could change the data structure to add IDs, or use index as a `key` (with the caveat that you can't safely reorder ingredients).
+
+</Solution>
+
+#### Extracting a list item component
+
+This `RecipeList` component contains two nested `map` calls. To simplify it, extract a `Recipe` component from it which will accept `id`, `name`, and `ingredients` props. Where do you place the outer `key` and why?
+
+```js
+import { recipes } from "./data.js";
+
+export default function RecipeList() {
+	return (
+		<div>
+			<h1>Recipes</h1>
+			{recipes.map((recipe) => (
+				<div key={recipe.id}>
+					<h2>{recipe.name}</h2>
+					<ul>
+						{recipe.ingredients.map((ingredient) => (
+							<li key={ingredient}>{ingredient}</li>
+						))}
+					</ul>
+				</div>
+			))}
+		</div>
+	);
+}
+```
+
+```js
+export const recipes = [
+	{
+		id: "greek-salad",
+		name: "Greek Salad",
+		ingredients: ["tomatoes", "cucumber", "onion", "olives", "feta"],
+	},
+	{
+		id: "hawaiian-pizza",
+		name: "Hawaiian Pizza",
+		ingredients: [
+			"pizza crust",
+			"pizza sauce",
+			"mozzarella",
+			"ham",
+			"pineapple",
+		],
+	},
+	{
+		id: "hummus",
+		name: "Hummus",
+		ingredients: [
+			"chickpeas",
+			"olive oil",
+			"garlic cloves",
+			"lemon",
+			"tahini",
+		],
+	},
+];
+```
+
+<Solution>
+
+You can copy-paste the JSX from the outer `map` into a new `Recipe` component and return that JSX. Then you can change `recipe.name` to `name`, `recipe.id` to `id`, and so on, and pass them as props to the `Recipe`:
+
+```js
+import { recipes } from "./data.js";
+
+function Recipe({ id, name, ingredients }) {
+	return (
+		<div>
+			<h2>{name}</h2>
+			<ul>
+				{ingredients.map((ingredient) => (
+					<li key={ingredient}>{ingredient}</li>
+				))}
+			</ul>
+		</div>
+	);
+}
+
+export default function RecipeList() {
+	return (
+		<div>
+			<h1>Recipes</h1>
+			{recipes.map((recipe) => (
+				<Recipe {...recipe} key={recipe.id} />
+			))}
+		</div>
+	);
+}
+```
+
+```js
+export const recipes = [
+	{
+		id: "greek-salad",
+		name: "Greek Salad",
+		ingredients: ["tomatoes", "cucumber", "onion", "olives", "feta"],
+	},
+	{
+		id: "hawaiian-pizza",
+		name: "Hawaiian Pizza",
+		ingredients: [
+			"pizza crust",
+			"pizza sauce",
+			"mozzarella",
+			"ham",
+			"pineapple",
+		],
+	},
+	{
+		id: "hummus",
+		name: "Hummus",
+		ingredients: [
+			"chickpeas",
+			"olive oil",
+			"garlic cloves",
+			"lemon",
+			"tahini",
+		],
+	},
+];
+```
+
+Here, `<Recipe {...recipe} key={recipe.id} />` is a syntax shortcut saying "pass all properties of the `recipe` object as props to the `Recipe` component". You could also write each prop explicitly: `<Recipe id={recipe.id} name={recipe.name} ingredients={recipe.ingredients} key={recipe.id} />`.
+
+**Note that the `key` is specified on the `<Recipe>` itself rather than on the root `<div>` returned from `Recipe`.** This is because this `key` is needed directly within the context of the surrounding array. Previously, you had an array of `<div>`s so each of them needed a `key`, but now you have an array of `<Recipe>`s. In other words, when you extract a component, don't forget to leave the `key` outside the JSX you copy and paste.
+
+</Solution>
+
+#### List with a separator
+
+This example renders a famous haiku by Katsushika Hokusai, with each line wrapped in a `<p>` tag. Your job is to insert an `<hr />` separator between each paragraph. Your resulting structure should look like this:
+
+```js
+<article>
+	<p>I write, erase, rewrite</p>
+	<hr />
+	<p>Erase again, and then</p>
+	<hr />
+	<p>A poppy blooms.</p>
+</article>
+```
+
+A haiku only contains three lines, but your solution should work with any number of lines. Note that `<hr />` elements only appear _between_ the `<p>` elements, not in the beginning or the end!
+
+```js
+const poem = {
+	lines: [
+		"I write, erase, rewrite",
+		"Erase again, and then",
+		"A poppy blooms.",
+	],
+};
+
+export default function Poem() {
+	return (
+		<article>
+			{poem.lines.map((line, index) => (
+				<p key={index}>{line}</p>
+			))}
+		</article>
+	);
+}
+```
+
+```css
+body {
+	text-align: center;
+}
+p {
+	font-family: Georgia, serif;
+	font-size: 20px;
+	font-style: italic;
+}
+hr {
+	margin: 0 120px 0 120px;
+	border: 1px dashed #45c3d8;
+}
+```
+
+(This is a rare case where index as a key is acceptable because a poem's lines will never reorder.)
+
+<Hint>
+
+You'll either need to convert `map` to a manual loop, or use a fragment.
+
+</Hint>
+
+<Solution>
+
+You can write a manual loop, inserting `<hr />` and `<p>...</p>` into the output array as you go:
+
+```js
+const poem = {
+	lines: [
+		"I write, erase, rewrite",
+		"Erase again, and then",
+		"A poppy blooms.",
+	],
+};
+
+export default function Poem() {
+	let output = [];
+
+	// Fill the output array
+	poem.lines.forEach((line, i) => {
+		output.push(<hr key={i + "-separator"} />);
+		output.push(<p key={i + "-text"}>{line}</p>);
+	});
+	// Remove the first <hr />
+	output.shift();
+
+	return <article>{output}</article>;
+}
+```
+
+```css
+body {
+	text-align: center;
+}
+p {
+	font-family: Georgia, serif;
+	font-size: 20px;
+	font-style: italic;
+}
+hr {
+	margin: 0 120px 0 120px;
+	border: 1px dashed #45c3d8;
+}
+```
+
+Using the original line index as a `key` doesn't work anymore because each separator and paragraph are now in the same array. However, you can give each of them a distinct key using a suffix, e.g. `key={i + '-text'}`.
+
+Alternatively, you could render a collection of fragments which contain `<hr />` and `<p>...</p>`. However, the `<>...</>` shorthand syntax doesn't support passing keys, so you'd have to write `<Fragment>` explicitly:
+
+```js
+import { Fragment } from "react";
+
+const poem = {
+	lines: [
+		"I write, erase, rewrite",
+		"Erase again, and then",
+		"A poppy blooms.",
+	],
+};
+
+export default function Poem() {
+	return (
+		<article>
+			{poem.lines.map((line, i) => (
+				<Fragment key={i}>
+					{i > 0 && <hr />}
+					<p>{line}</p>
+				</Fragment>
+			))}
+		</article>
+	);
+}
+```
+
+```css
+body {
+	text-align: center;
+}
+p {
+	font-family: Georgia, serif;
+	font-size: 20px;
+	font-style: italic;
+}
+hr {
+	margin: 0 120px 0 120px;
+	border: 1px dashed #45c3d8;
+}
+```
+
+Remember, fragments (often written as `<> </>`) let you group JSX nodes without adding extra `<div>`s!
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/responding-to-events.md b/docs/src/learn/responding-to-events.md
new file mode 100644
index 000000000..2e5385bd1
--- /dev/null
+++ b/docs/src/learn/responding-to-events.md
@@ -0,0 +1,648 @@
+---
+title: Responding to Events 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+React lets you add _event handlers_ to your JSX. Event handlers are your own functions that will be triggered in response to interactions like clicking, hovering, focusing form inputs, and so on.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   Different ways to write an event handler
+    -   How to pass event handling logic from a parent component
+    -   How events propagate and how to stop them
+
+## Adding event handlers
+
+To add an event handler, you will first define a function and then [pass it as a prop](/learn/passing-props-to-a-component) to the appropriate JSX tag. For example, here is a button that doesn't do anything yet:
+
+```js
+export default function Button() {
+	return <button>I don't do anything</button>;
+}
+```
+
+You can make it show a message when a user clicks by following these three steps:
+
+1. Declare a function called `handleClick` _inside_ your `Button` component.
+2. Implement the logic inside that function (use `alert` to show the message).
+3. Add `on_click={handleClick}` to the `<button>` JSX.
+
+```js
+export default function Button() {
+	function handleClick() {
+		alert("You clicked me!");
+	}
+
+	return <button on_click={handleClick}>Click me</button>;
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+```
+
+You defined the `handleClick` function and then [passed it as a prop](/learn/passing-props-to-a-component) to `<button>`. `handleClick` is an **event handler.** Event handler functions:
+
+-   Are usually defined _inside_ your components.
+-   Have names that start with `handle`, followed by the name of the event.
+
+By convention, it is common to name event handlers as `handle` followed by the event name. You'll often see `on_click={handleClick}`, `onMouseEnter={handleMouseEnter}`, and so on.
+
+Alternatively, you can define an event handler inline in the JSX:
+
+```jsx
+<button on_click={function handleClick() {
+  alert('You clicked me!');
+}}>
+```
+
+Or, more concisely, using an arrow function:
+
+```jsx
+<button on_click={() => {
+  alert('You clicked me!');
+}}>
+```
+
+All of these styles are equivalent. Inline event handlers are convenient for short functions.
+
+<Pitfall>
+
+Functions passed to event handlers must be passed, not called. For example:
+
+| passing a function (correct)      | calling a function (incorrect)      |
+| --------------------------------- | ----------------------------------- |
+| `<button on_click={handleClick}>` | `<button on_click={handleClick()}>` |
+
+The difference is subtle. In the first example, the `handleClick` function is passed as an `on_click` event handler. This tells React to remember it and only call your function when the user clicks the button.
+
+In the second example, the `()` at the end of `handleClick()` fires the function _immediately_ during [rendering](/learn/render-and-commit), without any clicks. This is because JavaScript inside the [JSX `{` and `}`](/learn/javascript-in-jsx-with-curly-braces) executes right away.
+
+When you write code inline, the same pitfall presents itself in a different way:
+
+| passing a function (correct) | calling a function (incorrect) |
+| --- | --- |
+| `<button on_click={() => alert('...')}>` | `<button on_click={alert('...')}>` |
+
+Passing inline code like this won't fire on click—it fires every time the component renders:
+
+```jsx
+// This alert fires when the component renders, not when clicked!
+<button on_click={alert('You clicked me!')}>
+```
+
+If you want to define your event handler inline, wrap it in an anonymous function like so:
+
+```jsx
+<button on_click={() => alert('You clicked me!')}>
+```
+
+Rather than executing the code inside with every render, this creates a function to be called later.
+
+In both cases, what you want to pass is a function:
+
+-   `<button on_click={handleClick}>` passes the `handleClick` function.
+-   `<button on_click={() => alert('...')}>` passes the `() => alert('...')` function.
+
+[Read more about arrow functions.](https://javascript.info/arrow-functions-basics)
+
+</Pitfall>
+
+### Reading props in event handlers
+
+Because event handlers are declared inside of a component, they have access to the component's props. Here is a button that, when clicked, shows an alert with its `message` prop:
+
+```js
+function AlertButton({ message, children }) {
+	return <button on_click={() => alert(message)}>{children}</button>;
+}
+
+export default function Toolbar() {
+	return (
+		<div>
+			<AlertButton message="Playing!">Play Movie</AlertButton>
+			<AlertButton message="Uploading!">Upload Image</AlertButton>
+		</div>
+	);
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+```
+
+This lets these two buttons show different messages. Try changing the messages passed to them.
+
+### Passing event handlers as props
+
+Often you'll want the parent component to specify a child's event handler. Consider buttons: depending on where you're using a `Button` component, you might want to execute a different function—perhaps one plays a movie and another uploads an image.
+
+To do this, pass a prop the component receives from its parent as the event handler like so:
+
+```js
+function Button({ on_click, children }) {
+	return <button on_click={on_click}>{children}</button>;
+}
+
+function PlayButton({ movieName }) {
+	function handlePlayClick() {
+		alert(`Playing ${movieName}!`);
+	}
+
+	return <Button on_click={handlePlayClick}>Play "{movieName}"</Button>;
+}
+
+function UploadButton() {
+	return <Button on_click={() => alert("Uploading!")}>Upload Image</Button>;
+}
+
+export default function Toolbar() {
+	return (
+		<div>
+			<PlayButton movieName="Kiki's Delivery Service" />
+			<UploadButton />
+		</div>
+	);
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+```
+
+Here, the `Toolbar` component renders a `PlayButton` and an `UploadButton`:
+
+-   `PlayButton` passes `handlePlayClick` as the `on_click` prop to the `Button` inside.
+-   `UploadButton` passes `() => alert('Uploading!')` as the `on_click` prop to the `Button` inside.
+
+Finally, your `Button` component accepts a prop called `on_click`. It passes that prop directly to the built-in browser `<button>` with `on_click={on_click}`. This tells React to call the passed function on click.
+
+If you use a [design system](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969), it's common for components like buttons to contain styling but not specify behavior. Instead, components like `PlayButton` and `UploadButton` will pass event handlers down.
+
+### Naming event handler props
+
+Built-in components like `<button>` and `<div>` only support [browser event names](/reference/react-dom/components/common#common-props) like `on_click`. However, when you're building your own components, you can name their event handler props any way that you like.
+
+By convention, event handler props should start with `on`, followed by a capital letter.
+
+For example, the `Button` component's `on_click` prop could have been called `onSmash`:
+
+```js
+function Button({ onSmash, children }) {
+	return <button on_click={onSmash}>{children}</button>;
+}
+
+export default function App() {
+	return (
+		<div>
+			<Button onSmash={() => alert("Playing!")}>Play Movie</Button>
+			<Button onSmash={() => alert("Uploading!")}>Upload Image</Button>
+		</div>
+	);
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+```
+
+In this example, `<button on_click={onSmash}>` shows that the browser `<button>` (lowercase) still needs a prop called `on_click`, but the prop name received by your custom `Button` component is up to you!
+
+When your component supports multiple interactions, you might name event handler props for app-specific concepts. For example, this `Toolbar` component receives `onPlayMovie` and `onUploadImage` event handlers:
+
+```js
+export default function App() {
+	return (
+		<Toolbar
+			onPlayMovie={() => alert("Playing!")}
+			onUploadImage={() => alert("Uploading!")}
+		/>
+	);
+}
+
+function Toolbar({ onPlayMovie, onUploadImage }) {
+	return (
+		<div>
+			<Button on_click={onPlayMovie}>Play Movie</Button>
+			<Button on_click={onUploadImage}>Upload Image</Button>
+		</div>
+	);
+}
+
+function Button({ on_click, children }) {
+	return <button on_click={on_click}>{children}</button>;
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+```
+
+Notice how the `App` component does not need to know _what_ `Toolbar` will do with `onPlayMovie` or `onUploadImage`. That's an implementation detail of the `Toolbar`. Here, `Toolbar` passes them down as `on_click` handlers to its `Button`s, but it could later also trigger them on a keyboard shortcut. Naming props after app-specific interactions like `onPlayMovie` gives you the flexibility to change how they're used later.
+
+<Note>
+
+Make sure that you use the appropriate HTML tags for your event handlers. For example, to handle clicks, use [`<button on_click={handleClick}>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button) instead of `<div on_click={handleClick}>`. Using a real browser `<button>` enables built-in browser behaviors like keyboard navigation. If you don't like the default browser styling of a button and want to make it look more like a link or a different UI element, you can achieve it with CSS. [Learn more about writing accessible markup.](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML)
+
+</Note>
+
+## Event propagation
+
+Event handlers will also catch events from any children your component might have. We say that an event "bubbles" or "propagates" up the tree: it starts with where the event happened, and then goes up the tree.
+
+This `<div>` contains two buttons. Both the `<div>` _and_ each button have their own `on_click` handlers. Which handlers do you think will fire when you click a button?
+
+```js
+export default function Toolbar() {
+	return (
+		<div
+			className="Toolbar"
+			on_click={() => {
+				alert("You clicked on the toolbar!");
+			}}
+		>
+			<button on_click={() => alert("Playing!")}>Play Movie</button>
+			<button on_click={() => alert("Uploading!")}>Upload Image</button>
+		</div>
+	);
+}
+```
+
+```css
+.Toolbar {
+	background: #aaa;
+	padding: 5px;
+}
+button {
+	margin: 5px;
+}
+```
+
+If you click on either button, its `on_click` will run first, followed by the parent `<div>`'s `on_click`. So two messages will appear. If you click the toolbar itself, only the parent `<div>`'s `on_click` will run.
+
+<Pitfall>
+
+All events propagate in React except `onScroll`, which only works on the JSX tag you attach it to.
+
+</Pitfall>
+
+### Stopping propagation
+
+Event handlers receive an **event object** as their only argument. By convention, it's usually called `e`, which stands for "event". You can use this object to read information about the event.
+
+That event object also lets you stop the propagation. If you want to prevent an event from reaching parent components, you need to call `e.stopPropagation()` like this `Button` component does:
+
+```js
+function Button({ on_click, children }) {
+	return (
+		<button
+			on_click={(e) => {
+				e.stopPropagation();
+				on_click();
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+
+export default function Toolbar() {
+	return (
+		<div
+			className="Toolbar"
+			on_click={() => {
+				alert("You clicked on the toolbar!");
+			}}
+		>
+			<Button on_click={() => alert("Playing!")}>Play Movie</Button>
+			<Button on_click={() => alert("Uploading!")}>Upload Image</Button>
+		</div>
+	);
+}
+```
+
+```css
+.Toolbar {
+	background: #aaa;
+	padding: 5px;
+}
+button {
+	margin: 5px;
+}
+```
+
+When you click on a button:
+
+1. React calls the `on_click` handler passed to `<button>`.
+2. That handler, defined in `Button`, does the following:
+    - Calls `e.stopPropagation()`, preventing the event from bubbling further.
+    - Calls the `on_click` function, which is a prop passed from the `Toolbar` component.
+3. That function, defined in the `Toolbar` component, displays the button's own alert.
+4. Since the propagation was stopped, the parent `<div>`'s `on_click` handler does _not_ run.
+
+As a result of `e.stopPropagation()`, clicking on the buttons now only shows a single alert (from the `<button>`) rather than the two of them (from the `<button>` and the parent toolbar `<div>`). Clicking a button is not the same thing as clicking the surrounding toolbar, so stopping the propagation makes sense for this UI.
+
+<DeepDive>
+
+#### Capture phase events
+
+In rare cases, you might need to catch all events on child elements, _even if they stopped propagation_. For example, maybe you want to log every click to analytics, regardless of the propagation logic. You can do this by adding `Capture` at the end of the event name:
+
+```js
+<div
+	on_clickCapture={() => {
+		/* this runs first */
+	}}
+>
+	<button on_click={(e) => e.stopPropagation()} />
+	<button on_click={(e) => e.stopPropagation()} />
+</div>
+```
+
+Each event propagates in three phases:
+
+1. It travels down, calling all `on_clickCapture` handlers.
+2. It runs the clicked element's `on_click` handler.
+3. It travels upwards, calling all `on_click` handlers.
+
+Capture events are useful for code like routers or analytics, but you probably won't use them in app code.
+
+</DeepDive>
+
+### Passing handlers as alternative to propagation
+
+Notice how this click handler runs a line of code _and then_ calls the `on_click` prop passed by the parent:
+
+```js
+function Button({ on_click, children }) {
+	return (
+		<button
+			on_click={(e) => {
+				e.stopPropagation();
+				on_click();
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+You could add more code to this handler before calling the parent `on_click` event handler, too. This pattern provides an _alternative_ to propagation. It lets the child component handle the event, while also letting the parent component specify some additional behavior. Unlike propagation, it's not automatic. But the benefit of this pattern is that you can clearly follow the whole chain of code that executes as a result of some event.
+
+If you rely on propagation and it's difficult to trace which handlers execute and why, try this approach instead.
+
+### Preventing default behavior
+
+Some browser events have default behavior associated with them. For example, a `<form>` submit event, which happens when a button inside of it is clicked, will reload the whole page by default:
+
+```js
+export default function Signup() {
+	return (
+		<form onSubmit={() => alert("Submitting!")}>
+			<input />
+			<button>Send</button>
+		</form>
+	);
+}
+```
+
+```css
+button {
+	margin-left: 5px;
+}
+```
+
+You can call `e.preventDefault()` on the event object to stop this from happening:
+
+```js
+export default function Signup() {
+	return (
+		<form
+			onSubmit={(e) => {
+				e.preventDefault();
+				alert("Submitting!");
+			}}
+		>
+			<input />
+			<button>Send</button>
+		</form>
+	);
+}
+```
+
+```css
+button {
+	margin-left: 5px;
+}
+```
+
+Don't confuse `e.stopPropagation()` and `e.preventDefault()`. They are both useful, but are unrelated:
+
+-   [`e.stopPropagation()`](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) stops the event handlers attached to the tags above from firing.
+-   [`e.preventDefault()` ](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) prevents the default browser behavior for the few events that have it.
+
+## Can event handlers have side effects?
+
+Absolutely! Event handlers are the best place for side effects.
+
+Unlike rendering functions, event handlers don't need to be [pure](/learn/keeping-components-pure), so it's a great place to _change_ something—for example, change an input's value in response to typing, or change a list in response to a button press. However, in order to change some information, you first need some way to store it. In React, this is done by using [state, a component's memory.](/learn/state-a-components-memory) You will learn all about it on the next page.
+
+<Recap>
+
+-   You can handle events by passing a function as a prop to an element like `<button>`.
+-   Event handlers must be passed, **not called!** `on_click={handleClick}`, not `on_click={handleClick()}`.
+-   You can define an event handler function separately or inline.
+-   Event handlers are defined inside a component, so they can access props.
+-   You can declare an event handler in a parent and pass it as a prop to a child.
+-   You can define your own event handler props with application-specific names.
+-   Events propagate upwards. Call `e.stopPropagation()` on the first argument to prevent that.
+-   Events may have unwanted default browser behavior. Call `e.preventDefault()` to prevent that.
+-   Explicitly calling an event handler prop from a child handler is a good alternative to propagation.
+
+</Recap>
+
+<Challenges>
+
+#### Fix an event handler
+
+Clicking this button is supposed to switch the page background between white and black. However, nothing happens when you click it. Fix the problem. (Don't worry about the logic inside `handleClick`—that part is fine.)
+
+```js
+export default function LightSwitch() {
+	function handleClick() {
+		let bodyStyle = document.body.style;
+		if (bodyStyle.backgroundColor === "black") {
+			bodyStyle.backgroundColor = "white";
+		} else {
+			bodyStyle.backgroundColor = "black";
+		}
+	}
+
+	return <button on_click={handleClick()}>Toggle the lights</button>;
+}
+```
+
+<Solution>
+
+The problem is that `<button on_click={handleClick()}>` _calls_ the `handleClick` function while rendering instead of _passing_ it. Removing the `()` call so that it's `<button on_click={handleClick}>` fixes the issue:
+
+```js
+export default function LightSwitch() {
+	function handleClick() {
+		let bodyStyle = document.body.style;
+		if (bodyStyle.backgroundColor === "black") {
+			bodyStyle.backgroundColor = "white";
+		} else {
+			bodyStyle.backgroundColor = "black";
+		}
+	}
+
+	return <button on_click={handleClick}>Toggle the lights</button>;
+}
+```
+
+Alternatively, you could wrap the call into another function, like `<button on_click={() => handleClick()}>`:
+
+```js
+export default function LightSwitch() {
+	function handleClick() {
+		let bodyStyle = document.body.style;
+		if (bodyStyle.backgroundColor === "black") {
+			bodyStyle.backgroundColor = "white";
+		} else {
+			bodyStyle.backgroundColor = "black";
+		}
+	}
+
+	return <button on_click={() => handleClick()}>Toggle the lights</button>;
+}
+```
+
+</Solution>
+
+#### Wire up the events
+
+This `ColorSwitch` component renders a button. It's supposed to change the page color. Wire it up to the `onChangeColor` event handler prop it receives from the parent so that clicking the button changes the color.
+
+After you do this, notice that clicking the button also increments the page click counter. Your colleague who wrote the parent component insists that `onChangeColor` does not increment any counters. What else might be happening? Fix it so that clicking the button _only_ changes the color, and does _not_ increment the counter.
+
+```js
+export default function ColorSwitch({ onChangeColor }) {
+	return <button>Change color</button>;
+}
+```
+
+```js
+import { useState } from "react";
+import ColorSwitch from "./ColorSwitch.js";
+
+export default function App() {
+	const [clicks, setClicks] = useState(0);
+
+	function handleClickOutside() {
+		setClicks((c) => c + 1);
+	}
+
+	function getRandomLightColor() {
+		let r = 150 + Math.round(100 * Math.random());
+		let g = 150 + Math.round(100 * Math.random());
+		let b = 150 + Math.round(100 * Math.random());
+		return `rgb(${r}, ${g}, ${b})`;
+	}
+
+	function handleChangeColor() {
+		let bodyStyle = document.body.style;
+		bodyStyle.backgroundColor = getRandomLightColor();
+	}
+
+	return (
+		<div
+			style={{ width: "100%", height: "100%" }}
+			on_click={handleClickOutside}
+		>
+			<ColorSwitch onChangeColor={handleChangeColor} />
+			<br />
+			<br />
+			<h2>Clicks on the page: {clicks}</h2>
+		</div>
+	);
+}
+```
+
+<Solution>
+
+First, you need to add the event handler, like `<button on_click={onChangeColor}>`.
+
+However, this introduces the problem of the incrementing counter. If `onChangeColor` does not do this, as your colleague insists, then the problem is that this event propagates up, and some handler above does it. To solve this problem, you need to stop the propagation. But don't forget that you should still call `onChangeColor`.
+
+```js
+export default function ColorSwitch({ onChangeColor }) {
+	return (
+		<button
+			on_click={(e) => {
+				e.stopPropagation();
+				onChangeColor();
+			}}
+		>
+			Change color
+		</button>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+import ColorSwitch from "./ColorSwitch.js";
+
+export default function App() {
+	const [clicks, setClicks] = useState(0);
+
+	function handleClickOutside() {
+		setClicks((c) => c + 1);
+	}
+
+	function getRandomLightColor() {
+		let r = 150 + Math.round(100 * Math.random());
+		let g = 150 + Math.round(100 * Math.random());
+		let b = 150 + Math.round(100 * Math.random());
+		return `rgb(${r}, ${g}, ${b})`;
+	}
+
+	function handleChangeColor() {
+		let bodyStyle = document.body.style;
+		bodyStyle.backgroundColor = getRandomLightColor();
+	}
+
+	return (
+		<div
+			style={{ width: "100%", height: "100%" }}
+			on_click={handleClickOutside}
+		>
+			<ColorSwitch onChangeColor={handleChangeColor} />
+			<br />
+			<br />
+			<h2>Clicks on the page: {clicks}</h2>
+		</div>
+	);
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/reusing-logic-with-custom-hooks.md b/docs/src/learn/reusing-logic-with-custom-hooks.md
new file mode 100644
index 000000000..a9c16248f
--- /dev/null
+++ b/docs/src/learn/reusing-logic-with-custom-hooks.md
@@ -0,0 +1,2519 @@
+---
+title: "Reusing Logic with Custom Hooks 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+React comes with several built-in Hooks like `useState`, `useContext`, and `useEffect`. Sometimes, you'll wish that there was a Hook for some more specific purpose: for example, to fetch data, to keep track of whether the user is online, or to connect to a chat room. You might not find these Hooks in React, but you can create your own Hooks for your application's needs.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What custom Hooks are, and how to write your own
+    -   How to reuse logic between components
+    -   How to name and structure your custom Hooks
+    -   When and why to extract custom Hooks
+
+## Custom Hooks: Sharing logic between components
+
+Imagine you're developing an app that heavily relies on the network (as most apps do). You want to warn the user if their network connection has accidentally gone off while they were using your app. How would you go about it? It seems like you'll need two things in your component:
+
+1. A piece of state that tracks whether the network is online.
+2. An Effect that subscribes to the global [`online`](https://developer.mozilla.org/en-US/docs/Web/API/Window/online_event) and [`offline`](https://developer.mozilla.org/en-US/docs/Web/API/Window/offline_event) events, and updates that state.
+
+This will keep your component [synchronized](/learn/synchronizing-with-effects) with the network status. You might start with something like this:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function StatusBar() {
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		function handleOnline() {
+			setIsOnline(true);
+		}
+		function handleOffline() {
+			setIsOnline(false);
+		}
+		window.addEventListener("online", handleOnline);
+		window.addEventListener("offline", handleOffline);
+		return () => {
+			window.removeEventListener("online", handleOnline);
+			window.removeEventListener("offline", handleOffline);
+		};
+	}, []);
+
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+```
+
+Try turning your network on and off, and notice how this `StatusBar` updates in response to your actions.
+
+Now imagine you _also_ want to use the same logic in a different component. You want to implement a Save button that will become disabled and show "Reconnecting..." instead of "Save" while the network is off.
+
+To start, you can copy and paste the `isOnline` state and the Effect into `SaveButton`:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function SaveButton() {
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		function handleOnline() {
+			setIsOnline(true);
+		}
+		function handleOffline() {
+			setIsOnline(false);
+		}
+		window.addEventListener("online", handleOnline);
+		window.addEventListener("offline", handleOffline);
+		return () => {
+			window.removeEventListener("online", handleOnline);
+			window.removeEventListener("offline", handleOffline);
+		};
+	}, []);
+
+	function handleSaveClick() {
+		console.log("✅ Progress saved");
+	}
+
+	return (
+		<button disabled={!isOnline} on_click={handleSaveClick}>
+			{isOnline ? "Save progress" : "Reconnecting..."}
+		</button>
+	);
+}
+```
+
+Verify that, if you turn off the network, the button will change its appearance.
+
+These two components work fine, but the duplication in logic between them is unfortunate. It seems like even though they have different _visual appearance,_ you want to reuse the logic between them.
+
+### Extracting your own custom Hook from a component
+
+Imagine for a moment that, similar to [`useState`](/reference/react/useState) and [`useEffect`](/reference/react/useEffect), there was a built-in `useOnlineStatus` Hook. Then both of these components could be simplified and you could remove the duplication between them:
+
+```js
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+
+function SaveButton() {
+	const isOnline = useOnlineStatus();
+
+	function handleSaveClick() {
+		console.log("✅ Progress saved");
+	}
+
+	return (
+		<button disabled={!isOnline} on_click={handleSaveClick}>
+			{isOnline ? "Save progress" : "Reconnecting..."}
+		</button>
+	);
+}
+```
+
+Although there is no such built-in Hook, you can write it yourself. Declare a function called `useOnlineStatus` and move all the duplicated code into it from the components you wrote earlier:
+
+```js
+function useOnlineStatus() {
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		function handleOnline() {
+			setIsOnline(true);
+		}
+		function handleOffline() {
+			setIsOnline(false);
+		}
+		window.addEventListener("online", handleOnline);
+		window.addEventListener("offline", handleOffline);
+		return () => {
+			window.removeEventListener("online", handleOnline);
+			window.removeEventListener("offline", handleOffline);
+		};
+	}, []);
+	return isOnline;
+}
+```
+
+At the end of the function, return `isOnline`. This lets your components read that value:
+
+```js
+import { useOnlineStatus } from "./useOnlineStatus.js";
+
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+
+function SaveButton() {
+	const isOnline = useOnlineStatus();
+
+	function handleSaveClick() {
+		console.log("✅ Progress saved");
+	}
+
+	return (
+		<button disabled={!isOnline} on_click={handleSaveClick}>
+			{isOnline ? "Save progress" : "Reconnecting..."}
+		</button>
+	);
+}
+
+export default function App() {
+	return (
+		<>
+			<SaveButton />
+			<StatusBar />
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useOnlineStatus() {
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		function handleOnline() {
+			setIsOnline(true);
+		}
+		function handleOffline() {
+			setIsOnline(false);
+		}
+		window.addEventListener("online", handleOnline);
+		window.addEventListener("offline", handleOffline);
+		return () => {
+			window.removeEventListener("online", handleOnline);
+			window.removeEventListener("offline", handleOffline);
+		};
+	}, []);
+	return isOnline;
+}
+```
+
+Verify that switching the network on and off updates both components.
+
+Now your components don't have as much repetitive logic. **More importantly, the code inside them describes _what they want to do_ (use the online status!) rather than _how to do it_ (by subscribing to the browser events).**
+
+When you extract logic into custom Hooks, you can hide the gnarly details of how you deal with some external system or a browser API. The code of your components expresses your intent, not the implementation.
+
+### Hook names always start with `use`
+
+React applications are built from components. Components are built from Hooks, whether built-in or custom. You'll likely often use custom Hooks created by others, but occasionally you might write one yourself!
+
+You must follow these naming conventions:
+
+1. **React component names must start with a capital letter,** like `StatusBar` and `SaveButton`. React components also need to return something that React knows how to display, like a piece of JSX.
+2. **Hook names must start with `use` followed by a capital letter,** like [`useState`](/reference/react/useState) (built-in) or `useOnlineStatus` (custom, like earlier on the page). Hooks may return arbitrary values.
+
+This convention guarantees that you can always look at a component and know where its state, Effects, and other React features might "hide". For example, if you see a `getColor()` function call inside your component, you can be sure that it can't possibly contain React state inside because its name doesn't start with `use`. However, a function call like `useOnlineStatus()` will most likely contain calls to other Hooks inside!
+
+<Note>
+
+If your linter is [configured for React,](/learn/editor-setup#linting) it will enforce this naming convention. Scroll up to the sandbox above and rename `useOnlineStatus` to `getOnlineStatus`. Notice that the linter won't allow you to call `useState` or `useEffect` inside of it anymore. Only Hooks and components can call other Hooks!
+
+</Note>
+
+<DeepDive>
+
+#### Should all functions called during rendering start with the use prefix?
+
+No. Functions that don't _call_ Hooks don't need to _be_ Hooks.
+
+If your function doesn't call any Hooks, avoid the `use` prefix. Instead, write it as a regular function _without_ the `use` prefix. For example, `useSorted` below doesn't call Hooks, so call it `getSorted` instead:
+
+```js
+// 🔴 Avoid: A Hook that doesn't use Hooks
+function useSorted(items) {
+	return items.slice().sort();
+}
+
+// ✅ Good: A regular function that doesn't use Hooks
+function getSorted(items) {
+	return items.slice().sort();
+}
+```
+
+This ensures that your code can call this regular function anywhere, including conditions:
+
+```js
+function List({ items, shouldSort }) {
+	let displayedItems = items;
+	if (shouldSort) {
+		// ✅ It's ok to call getSorted() conditionally because it's not a Hook
+		displayedItems = getSorted(items);
+	}
+	// ...
+}
+```
+
+You should give `use` prefix to a function (and thus make it a Hook) if it uses at least one Hook inside of it:
+
+```js
+// ✅ Good: A Hook that uses other Hooks
+function useAuth() {
+	return useContext(Auth);
+}
+```
+
+Technically, this isn't enforced by React. In principle, you could make a Hook that doesn't call other Hooks. This is often confusing and limiting so it's best to avoid that pattern. However, there may be rare cases where it is helpful. For example, maybe your function doesn't use any Hooks right now, but you plan to add some Hook calls to it in the future. Then it makes sense to name it with the `use` prefix:
+
+```js
+// ✅ Good: A Hook that will likely use some other Hooks later
+function useAuth() {
+	// TODO: Replace with this line when authentication is implemented:
+	// return useContext(Auth);
+	return TEST_USER;
+}
+```
+
+Then components won't be able to call it conditionally. This will become important when you actually add Hook calls inside. If you don't plan to use Hooks inside it (now or later), don't make it a Hook.
+
+</DeepDive>
+
+### Custom Hooks let you share stateful logic, not state itself
+
+In the earlier example, when you turned the network on and off, both components updated together. However, it's wrong to think that a single `isOnline` state variable is shared between them. Look at this code:
+
+```js
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	// ...
+}
+
+function SaveButton() {
+	const isOnline = useOnlineStatus();
+	// ...
+}
+```
+
+It works the same way as before you extracted the duplication:
+
+```js
+function StatusBar() {
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		// ...
+	}, []);
+	// ...
+}
+
+function SaveButton() {
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		// ...
+	}, []);
+	// ...
+}
+```
+
+These are two completely independent state variables and Effects! They happened to have the same value at the same time because you synchronized them with the same external value (whether the network is on).
+
+To better illustrate this, we'll need a different example. Consider this `Form` component:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [firstName, setFirstName] = useState("Mary");
+	const [lastName, setLastName] = useState("Poppins");
+
+	function handleFirstNameChange(e) {
+		setFirstName(e.target.value);
+	}
+
+	function handleLastNameChange(e) {
+		setLastName(e.target.value);
+	}
+
+	return (
+		<>
+			<label>
+				First name:
+				<input value={firstName} onChange={handleFirstNameChange} />
+			</label>
+			<label>
+				Last name:
+				<input value={lastName} onChange={handleLastNameChange} />
+			</label>
+			<p>
+				<b>
+					Good morning, {firstName} {lastName}.
+				</b>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 10px;
+}
+```
+
+There's some repetitive logic for each form field:
+
+1. There's a piece of state (`firstName` and `lastName`).
+1. There's a change handler (`handleFirstNameChange` and `handleLastNameChange`).
+1. There's a piece of JSX that specifies the `value` and `onChange` attributes for that input.
+
+You can extract the repetitive logic into this `useFormInput` custom Hook:
+
+```js
+import { useFormInput } from "./useFormInput.js";
+
+export default function Form() {
+	const firstNameProps = useFormInput("Mary");
+	const lastNameProps = useFormInput("Poppins");
+
+	return (
+		<>
+			<label>
+				First name:
+				<input {...firstNameProps} />
+			</label>
+			<label>
+				Last name:
+				<input {...lastNameProps} />
+			</label>
+			<p>
+				<b>
+					Good morning, {firstNameProps.value} {lastNameProps.value}.
+				</b>
+			</p>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export function useFormInput(initialValue) {
+	const [value, setValue] = useState(initialValue);
+
+	function handleChange(e) {
+		setValue(e.target.value);
+	}
+
+	const inputProps = {
+		value: value,
+		onChange: handleChange,
+	};
+
+	return inputProps;
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 10px;
+}
+```
+
+Notice that it only declares _one_ state variable called `value`.
+
+However, the `Form` component calls `useFormInput` _two times:_
+
+```js
+function Form() {
+  const firstNameProps = useFormInput('Mary');
+  const lastNameProps = useFormInput('Poppins');
+  // ...
+```
+
+This is why it works like declaring two separate state variables!
+
+**Custom Hooks let you share _stateful logic_ but not _state itself._ Each call to a Hook is completely independent from every other call to the same Hook.** This is why the two sandboxes above are completely equivalent. If you'd like, scroll back up and compare them. The behavior before and after extracting a custom Hook is identical.
+
+When you need to share the state itself between multiple components, [lift it up and pass it down](/learn/sharing-state-between-components) instead.
+
+## Passing reactive values between Hooks
+
+The code inside your custom Hooks will re-run during every re-render of your component. This is why, like components, custom Hooks [need to be pure.](/learn/keeping-components-pure) Think of custom Hooks' code as part of your component's body!
+
+Because custom Hooks re-render together with your component, they always receive the latest props and state. To see what this means, consider this chat room example. Change the server URL or the chat room:
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+export default function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.on("message", (msg) => {
+			showNotification("New message: " + msg);
+		});
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+
+	return (
+		<>
+			<label>
+				Server URL:
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	let intervalId;
+	let messageCallback;
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+			clearInterval(intervalId);
+			intervalId = setInterval(() => {
+				if (messageCallback) {
+					if (Math.random() > 0.5) {
+						messageCallback("hey");
+					} else {
+						messageCallback("lol");
+					}
+				}
+			}, 3000);
+		},
+		disconnect() {
+			clearInterval(intervalId);
+			messageCallback = null;
+			console.log(
+				'❌ Disconnected from "' +
+					roomId +
+					'" room at ' +
+					serverUrl +
+					""
+			);
+		},
+		on(event, callback) {
+			if (messageCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "message") {
+				throw Error('Only "message" event is supported.');
+			}
+			messageCallback = callback;
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme = "dark") {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```json
+{
+	"dependencies": {
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+When you change `serverUrl` or `roomId`, the Effect ["reacts" to your changes](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) and re-synchronizes. You can tell by the console messages that the chat re-connects every time that you change your Effect's dependencies.
+
+Now move the Effect's code into a custom Hook:
+
+```js
+export function useChatRoom({ serverUrl, roomId }) {
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		connection.on("message", (msg) => {
+			showNotification("New message: " + msg);
+		});
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+}
+```
+
+This lets your `ChatRoom` component call your custom Hook without worrying about how it works inside:
+
+```js
+export default function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useChatRoom({
+		roomId: roomId,
+		serverUrl: serverUrl,
+	});
+
+	return (
+		<>
+			<label>
+				Server URL:
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+```
+
+This looks much simpler! (But it does the same thing.)
+
+Notice that the logic _still responds_ to prop and state changes. Try editing the server URL or the selected room:
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+import { useChatRoom } from "./useChatRoom.js";
+
+export default function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useChatRoom({
+		roomId: roomId,
+		serverUrl: serverUrl,
+	});
+
+	return (
+		<>
+			<label>
+				Server URL:
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+```
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+export function useChatRoom({ serverUrl, roomId }) {
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		connection.on("message", (msg) => {
+			showNotification("New message: " + msg);
+		});
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	let intervalId;
+	let messageCallback;
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+			clearInterval(intervalId);
+			intervalId = setInterval(() => {
+				if (messageCallback) {
+					if (Math.random() > 0.5) {
+						messageCallback("hey");
+					} else {
+						messageCallback("lol");
+					}
+				}
+			}, 3000);
+		},
+		disconnect() {
+			clearInterval(intervalId);
+			messageCallback = null;
+			console.log(
+				'❌ Disconnected from "' +
+					roomId +
+					'" room at ' +
+					serverUrl +
+					""
+			);
+		},
+		on(event, callback) {
+			if (messageCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "message") {
+				throw Error('Only "message" event is supported.');
+			}
+			messageCallback = callback;
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme = "dark") {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```json
+{
+	"dependencies": {
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Notice how you're taking the return value of one Hook:
+
+```js
+export default function ChatRoom({ roomId }) {
+  const [serverUrl, setServerUrl] = useState('https://localhost:1234');
+
+  useChatRoom({
+    roomId: roomId,
+    serverUrl: serverUrl
+  });
+  // ...
+```
+
+and pass it as an input to another Hook:
+
+```js
+export default function ChatRoom({ roomId }) {
+  const [serverUrl, setServerUrl] = useState('https://localhost:1234');
+
+  useChatRoom({
+    roomId: roomId,
+    serverUrl: serverUrl
+  });
+  // ...
+```
+
+Every time your `ChatRoom` component re-renders, it passes the latest `roomId` and `serverUrl` to your Hook. This is why your Effect re-connects to the chat whenever their values are different after a re-render. (If you ever worked with audio or video processing software, chaining Hooks like this might remind you of chaining visual or audio effects. It's as if the output of `useState` "feeds into" the input of the `useChatRoom`.)
+
+### Passing event handlers to custom Hooks
+
+<Wip>
+
+This section describes an **experimental API that has not yet been released** in a stable version of React.
+
+</Wip>
+
+As you start using `useChatRoom` in more components, you might want to let components customize its behavior. For example, currently, the logic for what to do when a message arrives is hardcoded inside the Hook:
+
+```js
+export function useChatRoom({ serverUrl, roomId }) {
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		connection.on("message", (msg) => {
+			showNotification("New message: " + msg);
+		});
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+}
+```
+
+Let's say you want to move this logic back to your component:
+
+```js
+export default function ChatRoom({ roomId }) {
+  const [serverUrl, setServerUrl] = useState('https://localhost:1234');
+
+  useChatRoom({
+    roomId: roomId,
+    serverUrl: serverUrl,
+    onReceiveMessage(msg) {
+      showNotification('New message: ' + msg);
+    }
+  });
+  // ...
+```
+
+To make this work, change your custom Hook to take `onReceiveMessage` as one of its named options:
+
+```js
+export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		connection.on("message", (msg) => {
+			onReceiveMessage(msg);
+		});
+		return () => connection.disconnect();
+	}, [roomId, serverUrl, onReceiveMessage]); // ✅ All dependencies declared
+}
+```
+
+This will work, but there's one more improvement you can do when your custom Hook accepts event handlers.
+
+Adding a dependency on `onReceiveMessage` is not ideal because it will cause the chat to re-connect every time the component re-renders. [Wrap this event handler into an Effect Event to remove it from the dependencies:](/learn/removing-effect-dependencies#wrapping-an-event-handler-from-the-props)
+
+```js
+import { useEffect, useEffectEvent } from "react";
+// ...
+
+export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
+	const onMessage = useEffectEvent(onReceiveMessage);
+
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		connection.on("message", (msg) => {
+			onMessage(msg);
+		});
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]); // ✅ All dependencies declared
+}
+```
+
+Now the chat won't re-connect every time that the `ChatRoom` component re-renders. Here is a fully working demo of passing an event handler to a custom Hook that you can play with:
+
+```js
+import { useState } from "react";
+import ChatRoom from "./ChatRoom.js";
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+import { useChatRoom } from "./useChatRoom.js";
+import { showNotification } from "./notifications.js";
+
+export default function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useChatRoom({
+		roomId: roomId,
+		serverUrl: serverUrl,
+		onReceiveMessage(msg) {
+			showNotification("New message: " + msg);
+		},
+	});
+
+	return (
+		<>
+			<label>
+				Server URL:
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+```
+
+```js
+import { useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+import { createConnection } from "./chat.js";
+
+export function useChatRoom({ serverUrl, roomId, onReceiveMessage }) {
+	const onMessage = useEffectEvent(onReceiveMessage);
+
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		connection.on("message", (msg) => {
+			onMessage(msg);
+		});
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	if (typeof serverUrl !== "string") {
+		throw Error(
+			"Expected serverUrl to be a string. Received: " + serverUrl
+		);
+	}
+	if (typeof roomId !== "string") {
+		throw Error("Expected roomId to be a string. Received: " + roomId);
+	}
+	let intervalId;
+	let messageCallback;
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+			clearInterval(intervalId);
+			intervalId = setInterval(() => {
+				if (messageCallback) {
+					if (Math.random() > 0.5) {
+						messageCallback("hey");
+					} else {
+						messageCallback("lol");
+					}
+				}
+			}, 3000);
+		},
+		disconnect() {
+			clearInterval(intervalId);
+			messageCallback = null;
+			console.log(
+				'❌ Disconnected from "' +
+					roomId +
+					'" room at ' +
+					serverUrl +
+					""
+			);
+		},
+		on(event, callback) {
+			if (messageCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "message") {
+				throw Error('Only "message" event is supported.');
+			}
+			messageCallback = callback;
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme = "dark") {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Notice how you no longer need to know _how_ `useChatRoom` works in order to use it. You could add it to any other component, pass any other options, and it would work the same way. That's the power of custom Hooks.
+
+## When to use custom Hooks
+
+You don't need to extract a custom Hook for every little duplicated bit of code. Some duplication is fine. For example, extracting a `useFormInput` Hook to wrap a single `useState` call like earlier is probably unnecessary.
+
+However, whenever you write an Effect, consider whether it would be clearer to also wrap it in a custom Hook. [You shouldn't need Effects very often,](/learn/you-might-not-need-an-effect) so if you're writing one, it means that you need to "step outside React" to synchronize with some external system or to do something that React doesn't have a built-in API for. Wrapping it into a custom Hook lets you precisely communicate your intent and how the data flows through it.
+
+For example, consider a `ShippingForm` component that displays two dropdowns: one shows the list of cities, and another shows the list of areas in the selected city. You might start with some code that looks like this:
+
+```js
+function ShippingForm({ country }) {
+  const [cities, setCities] = useState(null);
+  // This Effect fetches cities for a country
+  useEffect(() => {
+    let ignore = false;
+    fetch(`/api/cities?country=${country}`)
+      .then(response => response.json())
+      .then(json => {
+        if (!ignore) {
+          setCities(json);
+        }
+      });
+    return () => {
+      ignore = true;
+    };
+  }, [country]);
+
+  const [city, setCity] = useState(null);
+  const [areas, setAreas] = useState(null);
+  // This Effect fetches areas for the selected city
+  useEffect(() => {
+    if (city) {
+      let ignore = false;
+      fetch(`/api/areas?city=${city}`)
+        .then(response => response.json())
+        .then(json => {
+          if (!ignore) {
+            setAreas(json);
+          }
+        });
+      return () => {
+        ignore = true;
+      };
+    }
+  }, [city]);
+
+  // ...
+```
+
+Although this code is quite repetitive, [it's correct to keep these Effects separate from each other.](/learn/removing-effect-dependencies#is-your-effect-doing-several-unrelated-things) They synchronize two different things, so you shouldn't merge them into one Effect. Instead, you can simplify the `ShippingForm` component above by extracting the common logic between them into your own `useData` Hook:
+
+```js
+function useData(url) {
+	const [data, setData] = useState(null);
+	useEffect(() => {
+		if (url) {
+			let ignore = false;
+			fetch(url)
+				.then((response) => response.json())
+				.then((json) => {
+					if (!ignore) {
+						setData(json);
+					}
+				});
+			return () => {
+				ignore = true;
+			};
+		}
+	}, [url]);
+	return data;
+}
+```
+
+Now you can replace both Effects in the `ShippingForm` components with calls to `useData`:
+
+```js
+function ShippingForm({ country }) {
+  const cities = useData(`/api/cities?country=${country}`);
+  const [city, setCity] = useState(null);
+  const areas = useData(city ? `/api/areas?city=${city}` : null);
+  // ...
+```
+
+Extracting a custom Hook makes the data flow explicit. You feed the `url` in and you get the `data` out. By "hiding" your Effect inside `useData`, you also prevent someone working on the `ShippingForm` component from adding [unnecessary dependencies](/learn/removing-effect-dependencies) to it. With time, most of your app's Effects will be in custom Hooks.
+
+<DeepDive>
+
+#### Keep your custom Hooks focused on concrete high-level use cases
+
+Start by choosing your custom Hook's name. If you struggle to pick a clear name, it might mean that your Effect is too coupled to the rest of your component's logic, and is not yet ready to be extracted.
+
+Ideally, your custom Hook's name should be clear enough that even a person who doesn't write code often could have a good guess about what your custom Hook does, what it takes, and what it returns:
+
+-   ✅ `useData(url)`
+-   ✅ `useImpressionLog(eventName, extraData)`
+-   ✅ `useChatRoom(options)`
+
+When you synchronize with an external system, your custom Hook name may be more technical and use jargon specific to that system. It's good as long as it would be clear to a person familiar with that system:
+
+-   ✅ `useMediaQuery(query)`
+-   ✅ `useSocket(url)`
+-   ✅ `useIntersectionObserver(ref, options)`
+
+**Keep custom Hooks focused on concrete high-level use cases.** Avoid creating and using custom "lifecycle" Hooks that act as alternatives and convenience wrappers for the `useEffect` API itself:
+
+-   🔴 `useMount(fn)`
+-   🔴 `useEffectOnce(fn)`
+-   🔴 `useUpdateEffect(fn)`
+
+For example, this `useMount` Hook tries to ensure some code only runs "on mount":
+
+```js
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	// 🔴 Avoid: using custom "lifecycle" Hooks
+	useMount(() => {
+		const connection = createConnection({ roomId, serverUrl });
+		connection.connect();
+
+		post("/analytics/event", { eventName: "visit_chat" });
+	});
+	// ...
+}
+
+// 🔴 Avoid: creating custom "lifecycle" Hooks
+function useMount(fn) {
+	useEffect(() => {
+		fn();
+	}, []); // 🔴 React Hook useEffect has a missing dependency: 'fn'
+}
+```
+
+**Custom "lifecycle" Hooks like `useMount` don't fit well into the React paradigm.** For example, this code example has a mistake (it doesn't "react" to `roomId` or `serverUrl` changes), but the linter won't warn you about it because the linter only checks direct `useEffect` calls. It won't know about your Hook.
+
+If you're writing an Effect, start by using the React API directly:
+
+```js
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	// ✅ Good: two raw Effects separated by purpose
+
+	useEffect(() => {
+		const connection = createConnection({ serverUrl, roomId });
+		connection.connect();
+		return () => connection.disconnect();
+	}, [serverUrl, roomId]);
+
+	useEffect(() => {
+		post("/analytics/event", { eventName: "visit_chat", roomId });
+	}, [roomId]);
+
+	// ...
+}
+```
+
+Then, you can (but don't have to) extract custom Hooks for different high-level use cases:
+
+```js
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	// ✅ Great: custom Hooks named after their purpose
+	useChatRoom({ serverUrl, roomId });
+	useImpressionLog("visit_chat", { roomId });
+	// ...
+}
+```
+
+**A good custom Hook makes the calling code more declarative by constraining what it does.** For example, `useChatRoom(options)` can only connect to the chat room, while `useImpressionLog(eventName, extraData)` can only send an impression log to the analytics. If your custom Hook API doesn't constrain the use cases and is very abstract, in the long run it's likely to introduce more problems than it solves.
+
+</DeepDive>
+
+### Custom Hooks help you migrate to better patterns
+
+Effects are an ["escape hatch"](/learn/escape-hatches): you use them when you need to "step outside React" and when there is no better built-in solution for your use case. With time, the React team's goal is to reduce the number of the Effects in your app to the minimum by providing more specific solutions to more specific problems. Wrapping your Effects in custom Hooks makes it easier to upgrade your code when these solutions become available.
+
+Let's return to this example:
+
+```js
+import { useOnlineStatus } from "./useOnlineStatus.js";
+
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+
+function SaveButton() {
+	const isOnline = useOnlineStatus();
+
+	function handleSaveClick() {
+		console.log("✅ Progress saved");
+	}
+
+	return (
+		<button disabled={!isOnline} on_click={handleSaveClick}>
+			{isOnline ? "Save progress" : "Reconnecting..."}
+		</button>
+	);
+}
+
+export default function App() {
+	return (
+		<>
+			<SaveButton />
+			<StatusBar />
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useOnlineStatus() {
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		function handleOnline() {
+			setIsOnline(true);
+		}
+		function handleOffline() {
+			setIsOnline(false);
+		}
+		window.addEventListener("online", handleOnline);
+		window.addEventListener("offline", handleOffline);
+		return () => {
+			window.removeEventListener("online", handleOnline);
+			window.removeEventListener("offline", handleOffline);
+		};
+	}, []);
+	return isOnline;
+}
+```
+
+In the above example, `useOnlineStatus` is implemented with a pair of [`useState`](/reference/react/useState) and [`useEffect`.](/reference/react/useEffect) However, this isn't the best possible solution. There is a number of edge cases it doesn't consider. For example, it assumes that when the component mounts, `isOnline` is already `true`, but this may be wrong if the network already went offline. You can use the browser [`navigator.onLine`](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine) API to check for that, but using it directly would not work on the server for generating the initial HTML. In short, this code could be improved.
+
+Luckily, React 18 includes a dedicated API called [`useSyncExternalStore`](/reference/react/useSyncExternalStore) which takes care of all of these problems for you. Here is how your `useOnlineStatus` Hook, rewritten to take advantage of this new API:
+
+```js
+import { useOnlineStatus } from "./useOnlineStatus.js";
+
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+
+function SaveButton() {
+	const isOnline = useOnlineStatus();
+
+	function handleSaveClick() {
+		console.log("✅ Progress saved");
+	}
+
+	return (
+		<button disabled={!isOnline} on_click={handleSaveClick}>
+			{isOnline ? "Save progress" : "Reconnecting..."}
+		</button>
+	);
+}
+
+export default function App() {
+	return (
+		<>
+			<SaveButton />
+			<StatusBar />
+		</>
+	);
+}
+```
+
+```js
+import { useSyncExternalStore } from "react";
+
+function subscribe(callback) {
+	window.addEventListener("online", callback);
+	window.addEventListener("offline", callback);
+	return () => {
+		window.removeEventListener("online", callback);
+		window.removeEventListener("offline", callback);
+	};
+}
+
+export function useOnlineStatus() {
+	return useSyncExternalStore(
+		subscribe,
+		() => navigator.onLine, // How to get the value on the client
+		() => true // How to get the value on the server
+	);
+}
+```
+
+Notice how **you didn't need to change any of the components** to make this migration:
+
+```js
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	// ...
+}
+
+function SaveButton() {
+	const isOnline = useOnlineStatus();
+	// ...
+}
+```
+
+This is another reason for why wrapping Effects in custom Hooks is often beneficial:
+
+1. You make the data flow to and from your Effects very explicit.
+2. You let your components focus on the intent rather than on the exact implementation of your Effects.
+3. When React adds new features, you can remove those Effects without changing any of your components.
+
+Similar to a [design system,](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969) you might find it helpful to start extracting common idioms from your app's components into custom Hooks. This will keep your components' code focused on the intent, and let you avoid writing raw Effects very often. Many excellent custom Hooks are maintained by the React community.
+
+<DeepDive>
+
+#### Will React provide any built-in solution for data fetching?
+
+We're still working out the details, but we expect that in the future, you'll write data fetching like this:
+
+```js
+import { use } from 'react'; // Not available yet!
+
+function ShippingForm({ country }) {
+  const cities = use(fetch(`/api/cities?country=${country}`));
+  const [city, setCity] = useState(null);
+  const areas = city ? use(fetch(`/api/areas?city=${city}`)) : null;
+  // ...
+```
+
+If you use custom Hooks like `useData` above in your app, it will require fewer changes to migrate to the eventually recommended approach than if you write raw Effects in every component manually. However, the old approach will still work fine, so if you feel happy writing raw Effects, you can continue to do that.
+
+</DeepDive>
+
+### There is more than one way to do it
+
+Let's say you want to implement a fade-in animation _from scratch_ using the browser [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) API. You might start with an Effect that sets up an animation loop. During each frame of the animation, you could change the opacity of the DOM node you [hold in a ref](/learn/manipulating-the-dom-with-refs) until it reaches `1`. Your code might start like this:
+
+```js
+import { useState, useEffect, useRef } from "react";
+
+function Welcome() {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		const duration = 1000;
+		const node = ref.current;
+
+		let startTime = performance.now();
+		let frameId = null;
+
+		function onFrame(now) {
+			const timePassed = now - startTime;
+			const progress = Math.min(timePassed / duration, 1);
+			onProgress(progress);
+			if (progress < 1) {
+				// We still have more frames to paint
+				frameId = requestAnimationFrame(onFrame);
+			}
+		}
+
+		function onProgress(progress) {
+			node.style.opacity = progress;
+		}
+
+		function start() {
+			onProgress(0);
+			startTime = performance.now();
+			frameId = requestAnimationFrame(onFrame);
+		}
+
+		function stop() {
+			cancelAnimationFrame(frameId);
+			startTime = null;
+			frameId = null;
+		}
+
+		start();
+		return () => stop();
+	}, []);
+
+	return (
+		<h1 className="welcome" ref={ref}>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome />}
+		</>
+	);
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+.welcome {
+	opacity: 0;
+	color: white;
+	padding: 50px;
+	text-align: center;
+	font-size: 50px;
+	background-image: radial-gradient(
+		circle,
+		rgba(63, 94, 251, 1) 0%,
+		rgba(252, 70, 107, 1) 100%
+	);
+}
+```
+
+To make the component more readable, you might extract the logic into a `useFadeIn` custom Hook:
+
+```js
+import { useState, useEffect, useRef } from "react";
+import { useFadeIn } from "./useFadeIn.js";
+
+function Welcome() {
+	const ref = useRef(null);
+
+	useFadeIn(ref, 1000);
+
+	return (
+		<h1 className="welcome" ref={ref}>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome />}
+		</>
+	);
+}
+```
+
+```js
+import { useEffect } from "react";
+
+export function useFadeIn(ref, duration) {
+	useEffect(() => {
+		const node = ref.current;
+
+		let startTime = performance.now();
+		let frameId = null;
+
+		function onFrame(now) {
+			const timePassed = now - startTime;
+			const progress = Math.min(timePassed / duration, 1);
+			onProgress(progress);
+			if (progress < 1) {
+				// We still have more frames to paint
+				frameId = requestAnimationFrame(onFrame);
+			}
+		}
+
+		function onProgress(progress) {
+			node.style.opacity = progress;
+		}
+
+		function start() {
+			onProgress(0);
+			startTime = performance.now();
+			frameId = requestAnimationFrame(onFrame);
+		}
+
+		function stop() {
+			cancelAnimationFrame(frameId);
+			startTime = null;
+			frameId = null;
+		}
+
+		start();
+		return () => stop();
+	}, [ref, duration]);
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+.welcome {
+	opacity: 0;
+	color: white;
+	padding: 50px;
+	text-align: center;
+	font-size: 50px;
+	background-image: radial-gradient(
+		circle,
+		rgba(63, 94, 251, 1) 0%,
+		rgba(252, 70, 107, 1) 100%
+	);
+}
+```
+
+You could keep the `useFadeIn` code as is, but you could also refactor it more. For example, you could extract the logic for setting up the animation loop out of `useFadeIn` into a custom `useAnimationLoop` Hook:
+
+```js
+import { useState, useEffect, useRef } from "react";
+import { useFadeIn } from "./useFadeIn.js";
+
+function Welcome() {
+	const ref = useRef(null);
+
+	useFadeIn(ref, 1000);
+
+	return (
+		<h1 className="welcome" ref={ref}>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome />}
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export function useFadeIn(ref, duration) {
+	const [isRunning, setIsRunning] = useState(true);
+
+	useAnimationLoop(isRunning, (timePassed) => {
+		const progress = Math.min(timePassed / duration, 1);
+		ref.current.style.opacity = progress;
+		if (progress === 1) {
+			setIsRunning(false);
+		}
+	});
+}
+
+function useAnimationLoop(isRunning, drawFrame) {
+	const onFrame = useEffectEvent(drawFrame);
+
+	useEffect(() => {
+		if (!isRunning) {
+			return;
+		}
+
+		const startTime = performance.now();
+		let frameId = null;
+
+		function tick(now) {
+			const timePassed = now - startTime;
+			onFrame(timePassed);
+			frameId = requestAnimationFrame(tick);
+		}
+
+		tick();
+		return () => cancelAnimationFrame(frameId);
+	}, [isRunning]);
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+.welcome {
+	opacity: 0;
+	color: white;
+	padding: 50px;
+	text-align: center;
+	font-size: 50px;
+	background-image: radial-gradient(
+		circle,
+		rgba(63, 94, 251, 1) 0%,
+		rgba(252, 70, 107, 1) 100%
+	);
+}
+```
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+However, you didn't _have to_ do that. As with regular functions, ultimately you decide where to draw the boundaries between different parts of your code. You could also take a very different approach. Instead of keeping the logic in the Effect, you could move most of the imperative logic inside a JavaScript [class:](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)
+
+```js
+import { useState, useEffect, useRef } from "react";
+import { useFadeIn } from "./useFadeIn.js";
+
+function Welcome() {
+	const ref = useRef(null);
+
+	useFadeIn(ref, 1000);
+
+	return (
+		<h1 className="welcome" ref={ref}>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome />}
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { FadeInAnimation } from "./animation.js";
+
+export function useFadeIn(ref, duration) {
+	useEffect(() => {
+		const animation = new FadeInAnimation(ref.current);
+		animation.start(duration);
+		return () => {
+			animation.stop();
+		};
+	}, [ref, duration]);
+}
+```
+
+```js
+export class FadeInAnimation {
+	constructor(node) {
+		this.node = node;
+	}
+	start(duration) {
+		this.duration = duration;
+		this.onProgress(0);
+		this.startTime = performance.now();
+		this.frameId = requestAnimationFrame(() => this.onFrame());
+	}
+	onFrame() {
+		const timePassed = performance.now() - this.startTime;
+		const progress = Math.min(timePassed / this.duration, 1);
+		this.onProgress(progress);
+		if (progress === 1) {
+			this.stop();
+		} else {
+			// We still have more frames to paint
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onProgress(progress) {
+		this.node.style.opacity = progress;
+	}
+	stop() {
+		cancelAnimationFrame(this.frameId);
+		this.startTime = null;
+		this.frameId = null;
+		this.duration = 0;
+	}
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+.welcome {
+	opacity: 0;
+	color: white;
+	padding: 50px;
+	text-align: center;
+	font-size: 50px;
+	background-image: radial-gradient(
+		circle,
+		rgba(63, 94, 251, 1) 0%,
+		rgba(252, 70, 107, 1) 100%
+	);
+}
+```
+
+Effects let you connect React to external systems. The more coordination between Effects is needed (for example, to chain multiple animations), the more it makes sense to extract that logic out of Effects and Hooks _completely_ like in the sandbox above. Then, the code you extracted _becomes_ the "external system". This lets your Effects stay simple because they only need to send messages to the system you've moved outside React.
+
+The examples above assume that the fade-in logic needs to be written in JavaScript. However, this particular fade-in animation is both simpler and much more efficient to implement with a plain [CSS Animation:](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations)
+
+```js
+import { useState, useEffect, useRef } from "react";
+import "./welcome.css";
+
+function Welcome() {
+	return <h1 className="welcome">Welcome</h1>;
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome />}
+		</>
+	);
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+```
+
+```css
+.welcome {
+	color: white;
+	padding: 50px;
+	text-align: center;
+	font-size: 50px;
+	background-image: radial-gradient(
+		circle,
+		rgba(63, 94, 251, 1) 0%,
+		rgba(252, 70, 107, 1) 100%
+	);
+
+	animation: fadeIn 1000ms;
+}
+
+@keyframes fadeIn {
+	0% {
+		opacity: 0;
+	}
+	100% {
+		opacity: 1;
+	}
+}
+```
+
+Sometimes, you don't even need a Hook!
+
+<Recap>
+
+-   Custom Hooks let you share logic between components.
+-   Custom Hooks must be named starting with `use` followed by a capital letter.
+-   Custom Hooks only share stateful logic, not state itself.
+-   You can pass reactive values from one Hook to another, and they stay up-to-date.
+-   All Hooks re-run every time your component re-renders.
+-   The code of your custom Hooks should be pure, like your component's code.
+-   Wrap event handlers received by custom Hooks into Effect Events.
+-   Don't create custom Hooks like `useMount`. Keep their purpose specific.
+-   It's up to you how and where to choose the boundaries of your code.
+
+</Recap>
+
+<Challenges>
+
+#### Extract a `useCounter` Hook
+
+This component uses a state variable and an Effect to display a number that increments every second. Extract this logic into a custom Hook called `useCounter`. Your goal is to make the `Counter` component implementation look exactly like this:
+
+```js
+export default function Counter() {
+	const count = useCounter();
+	return <h1>Seconds passed: {count}</h1>;
+}
+```
+
+You'll need to write your custom Hook in `useCounter.js` and import it into the `Counter.js` file.
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Counter() {
+	const [count, setCount] = useState(0);
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + 1);
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return <h1>Seconds passed: {count}</h1>;
+}
+```
+
+```js
+// Write your custom Hook in this file!
+```
+
+<Solution>
+
+Your code should look like this:
+
+```js
+import { useCounter } from "./useCounter.js";
+
+export default function Counter() {
+	const count = useCounter();
+	return <h1>Seconds passed: {count}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useCounter() {
+	const [count, setCount] = useState(0);
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + 1);
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return count;
+}
+```
+
+Notice that `App.js` doesn't need to import `useState` or `useEffect` anymore.
+
+</Solution>
+
+#### Make the counter delay configurable
+
+In this example, there is a `delay` state variable controlled by a slider, but its value is not used. Pass the `delay` value to your custom `useCounter` Hook, and change the `useCounter` Hook to use the passed `delay` instead of hardcoding `1000` ms.
+
+```js
+import { useState } from "react";
+import { useCounter } from "./useCounter.js";
+
+export default function Counter() {
+	const [delay, setDelay] = useState(1000);
+	const count = useCounter();
+	return (
+		<>
+			<label>
+				Tick duration: {delay} ms
+				<br />
+				<input
+					type="range"
+					value={delay}
+					min="10"
+					max="2000"
+					onChange={(e) => setDelay(Number(e.target.value))}
+				/>
+			</label>
+			<hr />
+			<h1>Ticks: {count}</h1>
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useCounter() {
+	const [count, setCount] = useState(0);
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + 1);
+		}, 1000);
+		return () => clearInterval(id);
+	}, []);
+	return count;
+}
+```
+
+<Solution>
+
+Pass the `delay` to your Hook with `useCounter(delay)`. Then, inside the Hook, use `delay` instead of the hardcoded `1000` value. You'll need to add `delay` to your Effect's dependencies. This ensures that a change in `delay` will reset the interval.
+
+```js
+import { useState } from "react";
+import { useCounter } from "./useCounter.js";
+
+export default function Counter() {
+	const [delay, setDelay] = useState(1000);
+	const count = useCounter(delay);
+	return (
+		<>
+			<label>
+				Tick duration: {delay} ms
+				<br />
+				<input
+					type="range"
+					value={delay}
+					min="10"
+					max="2000"
+					onChange={(e) => setDelay(Number(e.target.value))}
+				/>
+			</label>
+			<hr />
+			<h1>Ticks: {count}</h1>
+		</>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useCounter(delay) {
+	const [count, setCount] = useState(0);
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + 1);
+		}, delay);
+		return () => clearInterval(id);
+	}, [delay]);
+	return count;
+}
+```
+
+</Solution>
+
+#### Extract `useInterval` out of `useCounter`
+
+Currently, your `useCounter` Hook does two things. It sets up an interval, and it also increments a state variable on every interval tick. Split out the logic that sets up the interval into a separate Hook called `useInterval`. It should take two arguments: the `onTick` callback, and the `delay`. After this change, your `useCounter` implementation should look like this:
+
+```js
+export function useCounter(delay) {
+	const [count, setCount] = useState(0);
+	useInterval(() => {
+		setCount((c) => c + 1);
+	}, delay);
+	return count;
+}
+```
+
+Write `useInterval` in the `useInterval.js` file and import it into the `useCounter.js` file.
+
+```js
+import { useState } from "react";
+import { useCounter } from "./useCounter.js";
+
+export default function Counter() {
+	const count = useCounter(1000);
+	return <h1>Seconds passed: {count}</h1>;
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useCounter(delay) {
+	const [count, setCount] = useState(0);
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + 1);
+		}, delay);
+		return () => clearInterval(id);
+	}, [delay]);
+	return count;
+}
+```
+
+```js
+// Write your Hook here!
+```
+
+<Solution>
+
+The logic inside `useInterval` should set up and clear the interval. It doesn't need to do anything else.
+
+```js
+import { useCounter } from "./useCounter.js";
+
+export default function Counter() {
+	const count = useCounter(1000);
+	return <h1>Seconds passed: {count}</h1>;
+}
+```
+
+```js
+import { useState } from "react";
+import { useInterval } from "./useInterval.js";
+
+export function useCounter(delay) {
+	const [count, setCount] = useState(0);
+	useInterval(() => {
+		setCount((c) => c + 1);
+	}, delay);
+	return count;
+}
+```
+
+```js
+import { useEffect } from "react";
+
+export function useInterval(onTick, delay) {
+	useEffect(() => {
+		const id = setInterval(onTick, delay);
+		return () => clearInterval(id);
+	}, [onTick, delay]);
+}
+```
+
+Note that there is a bit of a problem with this solution, which you'll solve in the next challenge.
+
+</Solution>
+
+#### Fix a resetting interval
+
+In this example, there are _two_ separate intervals.
+
+The `App` component calls `useCounter`, which calls `useInterval` to update the counter every second. But the `App` component _also_ calls `useInterval` to randomly update the page background color every two seconds.
+
+For some reason, the callback that updates the page background never runs. Add some logs inside `useInterval`:
+
+```js
+useEffect(() => {
+	console.log("✅ Setting up an interval with delay ", delay);
+	const id = setInterval(onTick, delay);
+	return () => {
+		console.log("❌ Clearing an interval with delay ", delay);
+		clearInterval(id);
+	};
+}, [onTick, delay]);
+```
+
+Do the logs match what you expect to happen? If some of your Effects seem to re-synchronize unnecessarily, can you guess which dependency is causing that to happen? Is there some way to [remove that dependency](/learn/removing-effect-dependencies) from your Effect?
+
+After you fix the issue, you should expect the page background to update every two seconds.
+
+<Hint>
+
+It looks like your `useInterval` Hook accepts an event listener as an argument. Can you think of some way to wrap that event listener so that it doesn't need to be a dependency of your Effect?
+
+</Hint>
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useCounter } from "./useCounter.js";
+import { useInterval } from "./useInterval.js";
+
+export default function Counter() {
+	const count = useCounter(1000);
+
+	useInterval(() => {
+		const randomColor = `hsla(${Math.random() * 360}, 100%, 50%, 0.2)`;
+		document.body.style.backgroundColor = randomColor;
+	}, 2000);
+
+	return <h1>Seconds passed: {count}</h1>;
+}
+```
+
+```js
+import { useState } from "react";
+import { useInterval } from "./useInterval.js";
+
+export function useCounter(delay) {
+	const [count, setCount] = useState(0);
+	useInterval(() => {
+		setCount((c) => c + 1);
+	}, delay);
+	return count;
+}
+```
+
+```js
+import { useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export function useInterval(onTick, delay) {
+	useEffect(() => {
+		const id = setInterval(onTick, delay);
+		return () => {
+			clearInterval(id);
+		};
+	}, [onTick, delay]);
+}
+```
+
+<Solution>
+
+Inside `useInterval`, wrap the tick callback into an Effect Event, as you did [earlier on this page.](/learn/reusing-logic-with-custom-hooks#passing-event-handlers-to-custom-hooks)
+
+This will allow you to omit `onTick` from dependencies of your Effect. The Effect won't re-synchronize on every re-render of the component, so the page background color change interval won't get reset every second before it has a chance to fire.
+
+With this change, both intervals work as expected and don't interfere with each other:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useCounter } from "./useCounter.js";
+import { useInterval } from "./useInterval.js";
+
+export default function Counter() {
+	const count = useCounter(1000);
+
+	useInterval(() => {
+		const randomColor = `hsla(${Math.random() * 360}, 100%, 50%, 0.2)`;
+		document.body.style.backgroundColor = randomColor;
+	}, 2000);
+
+	return <h1>Seconds passed: {count}</h1>;
+}
+```
+
+```js
+import { useState } from "react";
+import { useInterval } from "./useInterval.js";
+
+export function useCounter(delay) {
+	const [count, setCount] = useState(0);
+	useInterval(() => {
+		setCount((c) => c + 1);
+	}, delay);
+	return count;
+}
+```
+
+```js
+import { useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export function useInterval(callback, delay) {
+	const onTick = useEffectEvent(callback);
+	useEffect(() => {
+		const id = setInterval(onTick, delay);
+		return () => clearInterval(id);
+	}, [delay]);
+}
+```
+
+</Solution>
+
+#### Implement a staggering movement
+
+In this example, the `usePointerPosition()` Hook tracks the current pointer position. Try moving your cursor or your finger over the preview area and see the red dot follow your movement. Its position is saved in the `pos1` variable.
+
+In fact, there are five (!) different red dots being rendered. You don't see them because currently they all appear at the same position. This is what you need to fix. What you want to implement instead is a "staggered" movement: each dot should "follow" the previous dot's path. For example, if you quickly move your cursor, the first dot should follow it immediately, the second dot should follow the first dot with a small delay, the third dot should follow the second dot, and so on.
+
+You need to implement the `useDelayedValue` custom Hook. Its current implementation returns the `value` provided to it. Instead, you want to return the value back from `delay` milliseconds ago. You might need some state and an Effect to do this.
+
+After you implement `useDelayedValue`, you should see the dots move following one another.
+
+<Hint>
+
+You'll need to store the `delayedValue` as a state variable inside your custom Hook. When the `value` changes, you'll want to run an Effect. This Effect should update `delayedValue` after the `delay`. You might find it helpful to call `setTimeout`.
+
+Does this Effect need cleanup? Why or why not?
+
+</Hint>
+
+```js
+import { usePointerPosition } from "./usePointerPosition.js";
+
+function useDelayedValue(value, delay) {
+	// TODO: Implement this Hook
+	return value;
+}
+
+export default function Canvas() {
+	const pos1 = usePointerPosition();
+	const pos2 = useDelayedValue(pos1, 100);
+	const pos3 = useDelayedValue(pos2, 200);
+	const pos4 = useDelayedValue(pos3, 100);
+	const pos5 = useDelayedValue(pos3, 50);
+	return (
+		<>
+			<Dot position={pos1} opacity={1} />
+			<Dot position={pos2} opacity={0.8} />
+			<Dot position={pos3} opacity={0.6} />
+			<Dot position={pos4} opacity={0.4} />
+			<Dot position={pos5} opacity={0.2} />
+		</>
+	);
+}
+
+function Dot({ position, opacity }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				backgroundColor: "pink",
+				borderRadius: "50%",
+				opacity,
+				transform: `translate(${position.x}px, ${position.y}px)`,
+				pointerEvents: "none",
+				left: -20,
+				top: -20,
+				width: 40,
+				height: 40,
+			}}
+		/>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function usePointerPosition() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	useEffect(() => {
+		function handleMove(e) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+	}, []);
+	return position;
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+<Solution>
+
+Here is a working version. You keep the `delayedValue` as a state variable. When `value` updates, your Effect schedules a timeout to update the `delayedValue`. This is why the `delayedValue` always "lags behind" the actual `value`.
+
+```js
+import { useState, useEffect } from "react";
+import { usePointerPosition } from "./usePointerPosition.js";
+
+function useDelayedValue(value, delay) {
+	const [delayedValue, setDelayedValue] = useState(value);
+
+	useEffect(() => {
+		setTimeout(() => {
+			setDelayedValue(value);
+		}, delay);
+	}, [value, delay]);
+
+	return delayedValue;
+}
+
+export default function Canvas() {
+	const pos1 = usePointerPosition();
+	const pos2 = useDelayedValue(pos1, 100);
+	const pos3 = useDelayedValue(pos2, 200);
+	const pos4 = useDelayedValue(pos3, 100);
+	const pos5 = useDelayedValue(pos3, 50);
+	return (
+		<>
+			<Dot position={pos1} opacity={1} />
+			<Dot position={pos2} opacity={0.8} />
+			<Dot position={pos3} opacity={0.6} />
+			<Dot position={pos4} opacity={0.4} />
+			<Dot position={pos5} opacity={0.2} />
+		</>
+	);
+}
+
+function Dot({ position, opacity }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				backgroundColor: "pink",
+				borderRadius: "50%",
+				opacity,
+				transform: `translate(${position.x}px, ${position.y}px)`,
+				pointerEvents: "none",
+				left: -20,
+				top: -20,
+				width: 40,
+				height: 40,
+			}}
+		/>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function usePointerPosition() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	useEffect(() => {
+		function handleMove(e) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+	}, []);
+	return position;
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+Note that this Effect _does not_ need cleanup. If you called `clearTimeout` in the cleanup function, then each time the `value` changes, it would reset the already scheduled timeout. To keep the movement continuous, you want all the timeouts to fire.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/scaling-up-with-reducer-and-context.md b/docs/src/learn/scaling-up-with-reducer-and-context.md
new file mode 100644
index 000000000..755a27e29
--- /dev/null
+++ b/docs/src/learn/scaling-up-with-reducer-and-context.md
@@ -0,0 +1,1373 @@
+---
+title: Scaling Up with Reducer and Context 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Reducers let you consolidate a component's state update logic. Context lets you pass information deep down to other components. You can combine reducers and context together to manage state of a complex screen.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to combine a reducer with context
+    -   How to avoid passing state and dispatch through props
+    -   How to keep context and state logic in a separate file
+
+## Combining a reducer with context
+
+In this example from [the introduction to reducers](/learn/extracting-state-logic-into-a-reducer), the state is managed by a reducer. The reducer function contains all of the state update logic and is declared at the bottom of this file:
+
+```js
+import { useReducer } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<>
+			<h1>Day off in Kyoto</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Philosopher’s Path", done: true },
+	{ id: 1, text: "Visit the temple", done: false },
+	{ id: 2, text: "Drink matcha", done: false },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button on_click={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+A reducer helps keep the event handlers short and concise. However, as your app grows, you might run into another difficulty. **Currently, the `tasks` state and the `dispatch` function are only available in the top-level `TaskApp` component.** To let other components read the list of tasks or change it, you have to explicitly [pass down](/learn/passing-props-to-a-component) the current state and the event handlers that change it as props.
+
+For example, `TaskApp` passes a list of tasks and the event handlers to `TaskList`:
+
+```js
+<TaskList
+	tasks={tasks}
+	onChangeTask={handleChangeTask}
+	onDeleteTask={handleDeleteTask}
+/>
+```
+
+And `TaskList` passes the event handlers to `Task`:
+
+```js
+<Task task={task} onChange={onChangeTask} onDelete={onDeleteTask} />
+```
+
+In a small example like this, this works well, but if you have tens or hundreds of components in the middle, passing down all state and functions can be quite frustrating!
+
+This is why, as an alternative to passing them through props, you might want to put both the `tasks` state and the `dispatch` function [into context.](/learn/passing-data-deeply-with-context) **This way, any component below `TaskApp` in the tree can read the tasks and dispatch actions without the repetitive "prop drilling".**
+
+Here is how you can combine a reducer with context:
+
+1. **Create** the context.
+2. **Put** state and dispatch into context.
+3. **Use** context anywhere in the tree.
+
+### Step 1: Create the context
+
+The `useReducer` Hook returns the current `tasks` and the `dispatch` function that lets you update them:
+
+```js
+const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+```
+
+To pass them down the tree, you will [create](/learn/passing-data-deeply-with-context#step-2-use-the-context) two separate contexts:
+
+-   `TasksContext` provides the current list of tasks.
+-   `TasksDispatchContext` provides the function that lets components dispatch actions.
+
+Export them from a separate file so that you can later import them from other files:
+
+```js
+import { useReducer } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<>
+			<h1>Day off in Kyoto</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Philosopher’s Path", done: true },
+	{ id: 1, text: "Visit the temple", done: false },
+	{ id: 2, text: "Drink matcha", done: false },
+];
+```
+
+```js
+import { createContext } from "react";
+
+export const TasksContext = createContext(null);
+export const TasksDispatchContext = createContext(null);
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button on_click={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+Here, you're passing `null` as the default value to both contexts. The actual values will be provided by the `TaskApp` component.
+
+### Step 2: Put state and dispatch into context
+
+Now you can import both contexts in your `TaskApp` component. Take the `tasks` and `dispatch` returned by `useReducer()` and [provide them](/learn/passing-data-deeply-with-context#step-3-provide-the-context) to the entire tree below:
+
+```js
+import { TasksContext, TasksDispatchContext } from "./TasksContext.js";
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+	// ...
+	return (
+		<TasksContext.Provider value={tasks}>
+			<TasksDispatchContext.Provider value={dispatch}>
+				...
+			</TasksDispatchContext.Provider>
+		</TasksContext.Provider>
+	);
+}
+```
+
+For now, you pass the information both via props and in context:
+
+```js
+import { useReducer } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+import { TasksContext, TasksDispatchContext } from "./TasksContext.js";
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<TasksContext.Provider value={tasks}>
+			<TasksDispatchContext.Provider value={dispatch}>
+				<h1>Day off in Kyoto</h1>
+				<AddTask onAddTask={handleAddTask} />
+				<TaskList
+					tasks={tasks}
+					onChangeTask={handleChangeTask}
+					onDeleteTask={handleDeleteTask}
+				/>
+			</TasksDispatchContext.Provider>
+		</TasksContext.Provider>
+	);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Philosopher’s Path", done: true },
+	{ id: 1, text: "Visit the temple", done: false },
+	{ id: 2, text: "Drink matcha", done: false },
+];
+```
+
+```js
+import { createContext } from "react";
+
+export const TasksContext = createContext(null);
+export const TasksDispatchContext = createContext(null);
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button on_click={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+In the next step, you will remove prop passing.
+
+### Step 3: Use context anywhere in the tree
+
+Now you don't need to pass the list of tasks or the event handlers down the tree:
+
+```js
+<TasksContext.Provider value={tasks}>
+	<TasksDispatchContext.Provider value={dispatch}>
+		<h1>Day off in Kyoto</h1>
+		<AddTask />
+		<TaskList />
+	</TasksDispatchContext.Provider>
+</TasksContext.Provider>
+```
+
+Instead, any component that needs the task list can read it from the `TaskContext`:
+
+```js
+export default function TaskList() {
+  const tasks = useContext(TasksContext);
+  // ...
+```
+
+To update the task list, any component can read the `dispatch` function from context and call it:
+
+```js
+export default function AddTask() {
+  const [text, setText] = useState('');
+  const dispatch = useContext(TasksDispatchContext);
+  // ...
+  return (
+    // ...
+    <button on_click={() => {
+      setText('');
+      dispatch({
+        type: 'added',
+        id: nextId++,
+        text: text,
+      });
+    }}>Add</button>
+    // ...
+```
+
+**The `TaskApp` component does not pass any event handlers down, and the `TaskList` does not pass any event handlers to the `Task` component either.** Each component reads the context that it needs:
+
+```js
+import { useReducer } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+import { TasksContext, TasksDispatchContext } from "./TasksContext.js";
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	return (
+		<TasksContext.Provider value={tasks}>
+			<TasksDispatchContext.Provider value={dispatch}>
+				<h1>Day off in Kyoto</h1>
+				<AddTask />
+				<TaskList />
+			</TasksDispatchContext.Provider>
+		</TasksContext.Provider>
+	);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+const initialTasks = [
+	{ id: 0, text: "Philosopher’s Path", done: true },
+	{ id: 1, text: "Visit the temple", done: false },
+	{ id: 2, text: "Drink matcha", done: false },
+];
+```
+
+```js
+import { createContext } from "react";
+
+export const TasksContext = createContext(null);
+export const TasksDispatchContext = createContext(null);
+```
+
+```js
+import { useState, useContext } from "react";
+import { TasksDispatchContext } from "./TasksContext.js";
+
+export default function AddTask() {
+	const [text, setText] = useState("");
+	const dispatch = useContext(TasksDispatchContext);
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					dispatch({
+						type: "added",
+						id: nextId++,
+						text: text,
+					});
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+
+let nextId = 3;
+```
+
+```js
+import { useState, useContext } from "react";
+import { TasksContext, TasksDispatchContext } from "./TasksContext.js";
+
+export default function TaskList() {
+	const tasks = useContext(TasksContext);
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task task={task} />
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task }) {
+	const [isEditing, setIsEditing] = useState(false);
+	const dispatch = useContext(TasksDispatchContext);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						dispatch({
+							type: "changed",
+							task: {
+								...task,
+								text: e.target.value,
+							},
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					dispatch({
+						type: "changed",
+						task: {
+							...task,
+							done: e.target.checked,
+						},
+					});
+				}}
+			/>
+			{taskContent}
+			<button
+				on_click={() => {
+					dispatch({
+						type: "deleted",
+						id: task.id,
+					});
+				}}
+			>
+				Delete
+			</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+**The state still "lives" in the top-level `TaskApp` component, managed with `useReducer`.** But its `tasks` and `dispatch` are now available to every component below in the tree by importing and using these contexts.
+
+## Moving all wiring into a single file
+
+You don't have to do this, but you could further declutter the components by moving both reducer and context into a single file. Currently, `TasksContext.js` contains only two context declarations:
+
+```js
+import { createContext } from "react";
+
+export const TasksContext = createContext(null);
+export const TasksDispatchContext = createContext(null);
+```
+
+This file is about to get crowded! You'll move the reducer into that same file. Then you'll declare a new `TasksProvider` component in the same file. This component will tie all the pieces together:
+
+1. It will manage the state with a reducer.
+2. It will provide both contexts to components below.
+3. It will [take `children` as a prop](/learn/passing-props-to-a-component#passing-jsx-as-children) so you can pass JSX to it.
+
+```js
+export function TasksProvider({ children }) {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	return (
+		<TasksContext.Provider value={tasks}>
+			<TasksDispatchContext.Provider value={dispatch}>
+				{children}
+			</TasksDispatchContext.Provider>
+		</TasksContext.Provider>
+	);
+}
+```
+
+**This removes all the complexity and wiring from your `TaskApp` component:**
+
+```js
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+import { TasksProvider } from "./TasksContext.js";
+
+export default function TaskApp() {
+	return (
+		<TasksProvider>
+			<h1>Day off in Kyoto</h1>
+			<AddTask />
+			<TaskList />
+		</TasksProvider>
+	);
+}
+```
+
+```js
+import { createContext, useReducer } from "react";
+
+export const TasksContext = createContext(null);
+export const TasksDispatchContext = createContext(null);
+
+export function TasksProvider({ children }) {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	return (
+		<TasksContext.Provider value={tasks}>
+			<TasksDispatchContext.Provider value={dispatch}>
+				{children}
+			</TasksDispatchContext.Provider>
+		</TasksContext.Provider>
+	);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+const initialTasks = [
+	{ id: 0, text: "Philosopher’s Path", done: true },
+	{ id: 1, text: "Visit the temple", done: false },
+	{ id: 2, text: "Drink matcha", done: false },
+];
+```
+
+```js
+import { useState, useContext } from "react";
+import { TasksDispatchContext } from "./TasksContext.js";
+
+export default function AddTask() {
+	const [text, setText] = useState("");
+	const dispatch = useContext(TasksDispatchContext);
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					dispatch({
+						type: "added",
+						id: nextId++,
+						text: text,
+					});
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+
+let nextId = 3;
+```
+
+```js
+import { useState, useContext } from "react";
+import { TasksContext, TasksDispatchContext } from "./TasksContext.js";
+
+export default function TaskList() {
+	const tasks = useContext(TasksContext);
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task task={task} />
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task }) {
+	const [isEditing, setIsEditing] = useState(false);
+	const dispatch = useContext(TasksDispatchContext);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						dispatch({
+							type: "changed",
+							task: {
+								...task,
+								text: e.target.value,
+							},
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					dispatch({
+						type: "changed",
+						task: {
+							...task,
+							done: e.target.checked,
+						},
+					});
+				}}
+			/>
+			{taskContent}
+			<button
+				on_click={() => {
+					dispatch({
+						type: "deleted",
+						id: task.id,
+					});
+				}}
+			>
+				Delete
+			</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+You can also export functions that _use_ the context from `TasksContext.js`:
+
+```js
+export function useTasks() {
+	return useContext(TasksContext);
+}
+
+export function useTasksDispatch() {
+	return useContext(TasksDispatchContext);
+}
+```
+
+When a component needs to read context, it can do it through these functions:
+
+```js
+const tasks = useTasks();
+const dispatch = useTasksDispatch();
+```
+
+This doesn't change the behavior in any way, but it lets you later split these contexts further or add some logic to these functions. **Now all of the context and reducer wiring is in `TasksContext.js`. This keeps the components clean and uncluttered, focused on what they display rather than where they get the data:**
+
+```js
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+import { TasksProvider } from "./TasksContext.js";
+
+export default function TaskApp() {
+	return (
+		<TasksProvider>
+			<h1>Day off in Kyoto</h1>
+			<AddTask />
+			<TaskList />
+		</TasksProvider>
+	);
+}
+```
+
+```js
+import { createContext, useContext, useReducer } from "react";
+
+const TasksContext = createContext(null);
+
+const TasksDispatchContext = createContext(null);
+
+export function TasksProvider({ children }) {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	return (
+		<TasksContext.Provider value={tasks}>
+			<TasksDispatchContext.Provider value={dispatch}>
+				{children}
+			</TasksDispatchContext.Provider>
+		</TasksContext.Provider>
+	);
+}
+
+export function useTasks() {
+	return useContext(TasksContext);
+}
+
+export function useTasksDispatch() {
+	return useContext(TasksDispatchContext);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+const initialTasks = [
+	{ id: 0, text: "Philosopher’s Path", done: true },
+	{ id: 1, text: "Visit the temple", done: false },
+	{ id: 2, text: "Drink matcha", done: false },
+];
+```
+
+```js
+import { useState } from "react";
+import { useTasksDispatch } from "./TasksContext.js";
+
+export default function AddTask() {
+	const [text, setText] = useState("");
+	const dispatch = useTasksDispatch();
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setText("");
+					dispatch({
+						type: "added",
+						id: nextId++,
+						text: text,
+					});
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+
+let nextId = 3;
+```
+
+```js
+import { useState } from "react";
+import { useTasks, useTasksDispatch } from "./TasksContext.js";
+
+export default function TaskList() {
+	const tasks = useTasks();
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task task={task} />
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task }) {
+	const [isEditing, setIsEditing] = useState(false);
+	const dispatch = useTasksDispatch();
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						dispatch({
+							type: "changed",
+							task: {
+								...task,
+								text: e.target.value,
+							},
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					dispatch({
+						type: "changed",
+						task: {
+							...task,
+							done: e.target.checked,
+						},
+					});
+				}}
+			/>
+			{taskContent}
+			<button
+				on_click={() => {
+					dispatch({
+						type: "deleted",
+						id: task.id,
+					});
+				}}
+			>
+				Delete
+			</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+You can think of `TasksProvider` as a part of the screen that knows how to deal with tasks, `useTasks` as a way to read them, and `useTasksDispatch` as a way to update them from any component below in the tree.
+
+<Note>
+
+Functions like `useTasks` and `useTasksDispatch` are called _[Custom Hooks.](/learn/reusing-logic-with-custom-hooks)_ Your function is considered a custom Hook if its name starts with `use`. This lets you use other Hooks, like `useContext`, inside it.
+
+</Note>
+
+As your app grows, you may have many context-reducer pairs like this. This is a powerful way to scale your app and [lift state up](/learn/sharing-state-between-components) without too much work whenever you want to access the data deep in the tree.
+
+<Recap>
+
+-   You can combine reducer with context to let any component read and update state above it.
+-   To provide state and the dispatch function to components below:
+    1. Create two contexts (for state and for dispatch functions).
+    2. Provide both contexts from the component that uses the reducer.
+    3. Use either context from components that need to read them.
+-   You can further declutter the components by moving all wiring into one file.
+    -   You can export a component like `TasksProvider` that provides context.
+    -   You can also export custom Hooks like `useTasks` and `useTasksDispatch` to read it.
+-   You can have many context-reducer pairs like this in your app.
+
+</Recap>
diff --git a/docs/src/learn/separating-events-from-effects.md b/docs/src/learn/separating-events-from-effects.md
new file mode 100644
index 000000000..aaeb9c30a
--- /dev/null
+++ b/docs/src/learn/separating-events-from-effects.md
@@ -0,0 +1,1888 @@
+---
+title: "Separating Events from Effects 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Event handlers only re-run when you perform the same interaction again. Unlike event handlers, Effects re-synchronize if some value they read, like a prop or a state variable, is different from what it was during the last render. Sometimes, you also want a mix of both behaviors: an Effect that re-runs in response to some values but not others. This page will teach you how to do that.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to choose between an event handler and an Effect
+    -   Why Effects are reactive, and event handlers are not
+    -   What to do when you want a part of your Effect's code to not be reactive
+    -   What Effect Events are, and how to extract them from your Effects
+    -   How to read the latest props and state from Effects using Effect Events
+
+## Choosing between event handlers and Effects
+
+First, let's recap the difference between event handlers and Effects.
+
+Imagine you're implementing a chat room component. Your requirements look like this:
+
+1. Your component should automatically connect to the selected chat room.
+1. When you click the "Send" button, it should send a message to the chat.
+
+Let's say you've already implemented the code for them, but you're not sure where to put it. Should you use event handlers or Effects? Every time you need to answer this question, consider [_why_ the code needs to run.](/learn/synchronizing-with-effects#what-are-effects-and-how-are-they-different-from-events)
+
+### Event handlers run in response to specific interactions
+
+From the user's perspective, sending a message should happen _because_ the particular "Send" button was clicked. The user will get rather upset if you send their message at any other time or for any other reason. This is why sending a message should be an event handler. Event handlers let you handle specific interactions:
+
+```js
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+	// ...
+	function handleSendClick() {
+		sendMessage(message);
+	}
+	// ...
+	return (
+		<>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+			<button on_click={handleSendClick}>Send</button>;
+		</>
+	);
+}
+```
+
+With an event handler, you can be sure that `sendMessage(message)` will _only_ run if the user presses the button.
+
+### Effects run whenever synchronization is needed
+
+Recall that you also need to keep the component connected to the chat room. Where does that code go?
+
+The _reason_ to run this code is not some particular interaction. It doesn't matter why or how the user navigated to the chat room screen. Now that they're looking at it and could interact with it, the component needs to stay connected to the selected chat server. Even if the chat room component was the initial screen of your app, and the user has not performed any interactions at all, you would _still_ need to connect. This is why it's an Effect:
+
+```js
+function ChatRoom({ roomId }) {
+	// ...
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId]);
+	// ...
+}
+```
+
+With this code, you can be sure that there is always an active connection to the currently selected chat server, _regardless_ of the specific interactions performed by the user. Whether the user has only opened your app, selected a different room, or navigated to another screen and back, your Effect ensures that the component will _remain synchronized_ with the currently selected room, and will [re-connect whenever it's necessary.](/learn/lifecycle-of-reactive-effects#why-synchronization-may-need-to-happen-more-than-once)
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection, sendMessage } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	function handleSendClick() {
+		sendMessage(message);
+	}
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+			<button on_click={handleSendClick}>Send</button>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function sendMessage(message) {
+	console.log("🔵 You sent: " + message);
+}
+
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input,
+select {
+	margin-right: 20px;
+}
+```
+
+## Reactive values and reactive logic
+
+Intuitively, you could say that event handlers are always triggered "manually", for example by clicking a button. Effects, on the other hand, are "automatic": they run and re-run as often as it's needed to stay synchronized.
+
+There is a more precise way to think about this.
+
+Props, state, and variables declared inside your component's body are called <CodeStep step={2}>reactive values</CodeStep>. In this example, `serverUrl` is not a reactive value, but `roomId` and `message` are. They participate in the rendering data flow:
+
+```js
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	// ...
+}
+```
+
+Reactive values like these can change due to a re-render. For example, the user may edit the `message` or choose a different `roomId` in a dropdown. Event handlers and Effects respond to changes differently:
+
+-   **Logic inside event handlers is _not reactive._** It will not run again unless the user performs the same interaction (e.g. a click) again. Event handlers can read reactive values without "reacting" to their changes.
+-   **Logic inside Effects is _reactive._** If your Effect reads a reactive value, [you have to specify it as a dependency.](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) Then, if a re-render causes that value to change, React will re-run your Effect's logic with the new value.
+
+Let's revisit the previous example to illustrate this difference.
+
+### Logic inside event handlers is not reactive
+
+Take a look at this line of code. Should this logic be reactive or not?
+
+```js
+// ...
+sendMessage(message);
+// ...
+```
+
+From the user's perspective, **a change to the `message` does _not_ mean that they want to send a message.** It only means that the user is typing. In other words, the logic that sends a message should not be reactive. It should not run again only because the <CodeStep step={2}>reactive value</CodeStep> has changed. That's why it belongs in the event handler:
+
+```js
+function handleSendClick() {
+	sendMessage(message);
+}
+```
+
+Event handlers aren't reactive, so `sendMessage(message)` will only run when the user clicks the Send button.
+
+### Logic inside Effects is reactive
+
+Now let's return to these lines:
+
+```js
+// ...
+const connection = createConnection(serverUrl, roomId);
+connection.connect();
+// ...
+```
+
+From the user's perspective, **a change to the `roomId` _does_ mean that they want to connect to a different room.** In other words, the logic for connecting to the room should be reactive. You _want_ these lines of code to "keep up" with the <CodeStep step={2}>reactive value</CodeStep>, and to run again if that value is different. That's why it belongs in an Effect:
+
+```js
+useEffect(() => {
+	const connection = createConnection(serverUrl, roomId);
+	connection.connect();
+	return () => {
+		connection.disconnect();
+	};
+}, [roomId]);
+```
+
+Effects are reactive, so `createConnection(serverUrl, roomId)` and `connection.connect()` will run for every distinct value of `roomId`. Your Effect keeps the chat connection synchronized to the currently selected room.
+
+## Extracting non-reactive logic out of Effects
+
+Things get more tricky when you want to mix reactive logic with non-reactive logic.
+
+For example, imagine that you want to show a notification when the user connects to the chat. You read the current theme (dark or light) from the props so that you can show the notification in the correct color:
+
+```js
+function ChatRoom({ roomId, theme }) {
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId);
+    connection.on('connected', () => {
+      showNotification('Connected!', theme);
+    });
+    connection.connect();
+    // ...
+```
+
+However, `theme` is a reactive value (it can change as a result of re-rendering), and [every reactive value read by an Effect must be declared as its dependency.](/learn/lifecycle-of-reactive-effects#react-verifies-that-you-specified-every-reactive-value-as-a-dependency) Now you have to specify `theme` as a dependency of your Effect:
+
+```js
+function ChatRoom({ roomId, theme }) {
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId);
+    connection.on('connected', () => {
+      showNotification('Connected!', theme);
+    });
+    connection.connect();
+    return () => {
+      connection.disconnect()
+    };
+  }, [roomId, theme]); // ✅ All dependencies declared
+  // ...
+```
+
+Play with this example and see if you can spot the problem with this user experience:
+
+```json
+{
+	"dependencies": {
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection, sendMessage } from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId, theme }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.on("connected", () => {
+			showNotification("Connected!", theme);
+		});
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, theme]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Use dark theme
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} theme={isDark ? "dark" : "light"} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	let connectedCallback;
+	let timeout;
+	return {
+		connect() {
+			timeout = setTimeout(() => {
+				if (connectedCallback) {
+					connectedCallback();
+				}
+			}, 100);
+		},
+		on(event, callback) {
+			if (connectedCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "connected") {
+				throw Error('Only "connected" event is supported.');
+			}
+			connectedCallback = callback;
+		},
+		disconnect() {
+			clearTimeout(timeout);
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme) {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+When the `roomId` changes, the chat re-connects as you would expect. But since `theme` is also a dependency, the chat _also_ re-connects every time you switch between the dark and the light theme. That's not great!
+
+In other words, you _don't_ want this line to be reactive, even though it is inside an Effect (which is reactive):
+
+```js
+// ...
+showNotification("Connected!", theme);
+// ...
+```
+
+You need a way to separate this non-reactive logic from the reactive Effect around it.
+
+### Declaring an Effect Event
+
+<Wip>
+
+This section describes an **experimental API that has not yet been released** in a stable version of React.
+
+</Wip>
+
+Use a special Hook called [`useEffectEvent`](/reference/react/experimental_useEffectEvent) to extract this non-reactive logic out of your Effect:
+
+```js
+import { useEffect, useEffectEvent } from 'react';
+
+function ChatRoom({ roomId, theme }) {
+  const onConnected = useEffectEvent(() => {
+    showNotification('Connected!', theme);
+  });
+  // ...
+```
+
+Here, `onConnected` is called an _Effect Event._ It's a part of your Effect logic, but it behaves a lot more like an event handler. The logic inside it is not reactive, and it always "sees" the latest values of your props and state.
+
+Now you can call the `onConnected` Effect Event from inside your Effect:
+
+```js
+function ChatRoom({ roomId, theme }) {
+  const onConnected = useEffectEvent(() => {
+    showNotification('Connected!', theme);
+  });
+
+  useEffect(() => {
+    const connection = createConnection(serverUrl, roomId);
+    connection.on('connected', () => {
+      onConnected();
+    });
+    connection.connect();
+    return () => connection.disconnect();
+  }, [roomId]); // ✅ All dependencies declared
+  // ...
+```
+
+This solves the problem. Note that you had to _remove_ `onConnected` from the list of your Effect's dependencies. **Effect Events are not reactive and must be omitted from dependencies.**
+
+Verify that the new behavior works as you would expect:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+import { createConnection, sendMessage } from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId, theme }) {
+	const onConnected = useEffectEvent(() => {
+		showNotification("Connected!", theme);
+	});
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.on("connected", () => {
+			onConnected();
+		});
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Use dark theme
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} theme={isDark ? "dark" : "light"} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	let connectedCallback;
+	let timeout;
+	return {
+		connect() {
+			timeout = setTimeout(() => {
+				if (connectedCallback) {
+					connectedCallback();
+				}
+			}, 100);
+		},
+		on(event, callback) {
+			if (connectedCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "connected") {
+				throw Error('Only "connected" event is supported.');
+			}
+			connectedCallback = callback;
+		},
+		disconnect() {
+			clearTimeout(timeout);
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme) {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+You can think of Effect Events as being very similar to event handlers. The main difference is that event handlers run in response to a user interactions, whereas Effect Events are triggered by you from Effects. Effect Events let you "break the chain" between the reactivity of Effects and code that should not be reactive.
+
+### Reading latest props and state with Effect Events
+
+<Wip>
+
+This section describes an **experimental API that has not yet been released** in a stable version of React.
+
+</Wip>
+
+Effect Events let you fix many patterns where you might be tempted to suppress the dependency linter.
+
+For example, say you have an Effect to log the page visits:
+
+```js
+function Page() {
+	useEffect(() => {
+		logVisit();
+	}, []);
+	// ...
+}
+```
+
+Later, you add multiple routes to your site. Now your `Page` component receives a `url` prop with the current path. You want to pass the `url` as a part of your `logVisit` call, but the dependency linter complains:
+
+```js
+function Page({ url }) {
+	useEffect(() => {
+		logVisit(url);
+	}, []); // 🔴 React Hook useEffect has a missing dependency: 'url'
+	// ...
+}
+```
+
+Think about what you want the code to do. You _want_ to log a separate visit for different URLs since each URL represents a different page. In other words, this `logVisit` call _should_ be reactive with respect to the `url`. This is why, in this case, it makes sense to follow the dependency linter, and add `url` as a dependency:
+
+```js
+function Page({ url }) {
+	useEffect(() => {
+		logVisit(url);
+	}, [url]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+Now let's say you want to include the number of items in the shopping cart together with every page visit:
+
+```js
+function Page({ url }) {
+	const { items } = useContext(ShoppingCartContext);
+	const numberOfItems = items.length;
+
+	useEffect(() => {
+		logVisit(url, numberOfItems);
+	}, [url]); // 🔴 React Hook useEffect has a missing dependency: 'numberOfItems'
+	// ...
+}
+```
+
+You used `numberOfItems` inside the Effect, so the linter asks you to add it as a dependency. However, you _don't_ want the `logVisit` call to be reactive with respect to `numberOfItems`. If the user puts something into the shopping cart, and the `numberOfItems` changes, this _does not mean_ that the user visited the page again. In other words, _visiting the page_ is, in some sense, an "event". It happens at a precise moment in time.
+
+Split the code in two parts:
+
+```js
+function Page({ url }) {
+	const { items } = useContext(ShoppingCartContext);
+	const numberOfItems = items.length;
+
+	const onVisit = useEffectEvent((visitedUrl) => {
+		logVisit(visitedUrl, numberOfItems);
+	});
+
+	useEffect(() => {
+		onVisit(url);
+	}, [url]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+Here, `onVisit` is an Effect Event. The code inside it isn't reactive. This is why you can use `numberOfItems` (or any other reactive value!) without worrying that it will cause the surrounding code to re-execute on changes.
+
+On the other hand, the Effect itself remains reactive. Code inside the Effect uses the `url` prop, so the Effect will re-run after every re-render with a different `url`. This, in turn, will call the `onVisit` Effect Event.
+
+As a result, you will call `logVisit` for every change to the `url`, and always read the latest `numberOfItems`. However, if `numberOfItems` changes on its own, this will not cause any of the code to re-run.
+
+<Note>
+
+You might be wondering if you could call `onVisit()` with no arguments, and read the `url` inside it:
+
+```js
+const onVisit = useEffectEvent(() => {
+	logVisit(url, numberOfItems);
+});
+
+useEffect(() => {
+	onVisit();
+}, [url]);
+```
+
+This would work, but it's better to pass this `url` to the Effect Event explicitly. **By passing `url` as an argument to your Effect Event, you are saying that visiting a page with a different `url` constitutes a separate "event" from the user's perspective.** The `visitedUrl` is a _part_ of the "event" that happened:
+
+```js
+const onVisit = useEffectEvent((visitedUrl) => {
+	logVisit(visitedUrl, numberOfItems);
+});
+
+useEffect(() => {
+	onVisit(url);
+}, [url]);
+```
+
+Since your Effect Event explicitly "asks" for the `visitedUrl`, now you can't accidentally remove `url` from the Effect's dependencies. If you remove the `url` dependency (causing distinct page visits to be counted as one), the linter will warn you about it. You want `onVisit` to be reactive with regards to the `url`, so instead of reading the `url` inside (where it wouldn't be reactive), you pass it _from_ your Effect.
+
+This becomes especially important if there is some asynchronous logic inside the Effect:
+
+```js
+const onVisit = useEffectEvent((visitedUrl) => {
+	logVisit(visitedUrl, numberOfItems);
+});
+
+useEffect(() => {
+	setTimeout(() => {
+		onVisit(url);
+	}, 5000); // Delay logging visits
+}, [url]);
+```
+
+Here, `url` inside `onVisit` corresponds to the _latest_ `url` (which could have already changed), but `visitedUrl` corresponds to the `url` that originally caused this Effect (and this `onVisit` call) to run.
+
+</Note>
+
+<DeepDive>
+
+#### Is it okay to suppress the dependency linter instead?
+
+In the existing codebases, you may sometimes see the lint rule suppressed like this:
+
+```js
+function Page({ url }) {
+	const { items } = useContext(ShoppingCartContext);
+	const numberOfItems = items.length;
+
+	useEffect(() => {
+		logVisit(url, numberOfItems);
+		// 🔴 Avoid suppressing the linter like this:
+		// eslint-disable-next-line react-hooks/exhaustive-deps
+	}, [url]);
+	// ...
+}
+```
+
+After `useEffectEvent` becomes a stable part of React, we recommend **never suppressing the linter**.
+
+The first downside of suppressing the rule is that React will no longer warn you when your Effect needs to "react" to a new reactive dependency you've introduced to your code. In the earlier example, you added `url` to the dependencies _because_ React reminded you to do it. You will no longer get such reminders for any future edits to that Effect if you disable the linter. This leads to bugs.
+
+Here is an example of a confusing bug caused by suppressing the linter. In this example, the `handleMove` function is supposed to read the current `canMove` state variable value in order to decide whether the dot should follow the cursor. However, `canMove` is always `true` inside `handleMove`.
+
+Can you see why?
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	function handleMove(e) {
+		if (canMove) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+	}
+
+	useEffect(() => {
+		window.addEventListener("pointermove", handleMove);
+		return () => window.removeEventListener("pointermove", handleMove);
+		// eslint-disable-next-line react-hooks/exhaustive-deps
+	}, []);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+The problem with this code is in suppressing the dependency linter. If you remove the suppression, you'll see that this Effect should depend on the `handleMove` function. This makes sense: `handleMove` is declared inside the component body, which makes it a reactive value. Every reactive value must be specified as a dependency, or it can potentially get stale over time!
+
+The author of the original code has "lied" to React by saying that the Effect does not depend (`[]`) on any reactive values. This is why React did not re-synchronize the Effect after `canMove` has changed (and `handleMove` with it). Because React did not re-synchronize the Effect, the `handleMove` attached as a listener is the `handleMove` function created during the initial render. During the initial render, `canMove` was `true`, which is why `handleMove` from the initial render will forever see that value.
+
+**If you never suppress the linter, you will never see problems with stale values.**
+
+With `useEffectEvent`, there is no need to "lie" to the linter, and the code works as you would expect:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+	const [canMove, setCanMove] = useState(true);
+
+	const onMove = useEffectEvent((e) => {
+		if (canMove) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+	});
+
+	useEffect(() => {
+		window.addEventListener("pointermove", onMove);
+		return () => window.removeEventListener("pointermove", onMove);
+	}, []);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={canMove}
+					onChange={(e) => setCanMove(e.target.checked)}
+				/>
+				The dot is allowed to move
+			</label>
+			<hr />
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "pink",
+					borderRadius: "50%",
+					opacity: 0.6,
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					pointerEvents: "none",
+					left: -20,
+					top: -20,
+					width: 40,
+					height: 40,
+				}}
+			/>
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 200px;
+}
+```
+
+This doesn't mean that `useEffectEvent` is _always_ the correct solution. You should only apply it to the lines of code that you don't want to be reactive. In the above sandbox, you didn't want the Effect's code to be reactive with regards to `canMove`. That's why it made sense to extract an Effect Event.
+
+Read [Removing Effect Dependencies](/learn/removing-effect-dependencies) for other correct alternatives to suppressing the linter.
+
+</DeepDive>
+
+### Limitations of Effect Events
+
+<Wip>
+
+This section describes an **experimental API that has not yet been released** in a stable version of React.
+
+</Wip>
+
+Effect Events are very limited in how you can use them:
+
+-   **Only call them from inside Effects.**
+-   **Never pass them to other components or Hooks.**
+
+For example, don't declare and pass an Effect Event like this:
+
+```js
+function Timer() {
+	const [count, setCount] = useState(0);
+
+	const onTick = useEffectEvent(() => {
+		setCount(count + 1);
+	});
+
+	useTimer(onTick, 1000); // 🔴 Avoid: Passing Effect Events
+
+	return <h1>{count}</h1>;
+}
+
+function useTimer(callback, delay) {
+	useEffect(() => {
+		const id = setInterval(() => {
+			callback();
+		}, delay);
+		return () => {
+			clearInterval(id);
+		};
+	}, [delay, callback]); // Need to specify "callback" in dependencies
+}
+```
+
+Instead, always declare Effect Events directly next to the Effects that use them:
+
+```js
+function Timer() {
+	const [count, setCount] = useState(0);
+	useTimer(() => {
+		setCount(count + 1);
+	}, 1000);
+	return <h1>{count}</h1>;
+}
+
+function useTimer(callback, delay) {
+	const onTick = useEffectEvent(() => {
+		callback();
+	});
+
+	useEffect(() => {
+		const id = setInterval(() => {
+			onTick(); // ✅ Good: Only called locally inside an Effect
+		}, delay);
+		return () => {
+			clearInterval(id);
+		};
+	}, [delay]); // No need to specify "onTick" (an Effect Event) as a dependency
+}
+```
+
+Effect Events are non-reactive "pieces" of your Effect code. They should be next to the Effect using them.
+
+<Recap>
+
+-   Event handlers run in response to specific interactions.
+-   Effects run whenever synchronization is needed.
+-   Logic inside event handlers is not reactive.
+-   Logic inside Effects is reactive.
+-   You can move non-reactive logic from Effects into Effect Events.
+-   Only call Effect Events from inside Effects.
+-   Don't pass Effect Events to other components or Hooks.
+
+</Recap>
+
+<Challenges>
+
+#### Fix a variable that doesn't update
+
+This `Timer` component keeps a `count` state variable which increases every second. The value by which it's increasing is stored in the `increment` state variable. You can control the `increment` variable with the plus and minus buttons.
+
+However, no matter how many times you click the plus button, the counter is still incremented by one every second. What's wrong with this code? Why is `increment` always equal to `1` inside the Effect's code? Find the mistake and fix it.
+
+<Hint>
+
+To fix this code, it's enough to follow the rules.
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+	const [increment, setIncrement] = useState(1);
+
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + increment);
+		}, 1000);
+		return () => {
+			clearInterval(id);
+		};
+		// eslint-disable-next-line react-hooks/exhaustive-deps
+	}, []);
+
+	return (
+		<>
+			<h1>
+				Counter: {count}
+				<button on_click={() => setCount(0)}>Reset</button>
+			</h1>
+			<hr />
+			<p>
+				Every second, increment by:
+				<button
+					disabled={increment === 0}
+					on_click={() => {
+						setIncrement((i) => i - 1);
+					}}
+				>
+					–
+				</button>
+				<b>{increment}</b>
+				<button
+					on_click={() => {
+						setIncrement((i) => i + 1);
+					}}
+				>
+					+
+				</button>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+<Solution>
+
+As usual, when you're looking for bugs in Effects, start by searching for linter suppressions.
+
+If you remove the suppression comment, React will tell you that this Effect's code depends on `increment`, but you "lied" to React by claiming that this Effect does not depend on any reactive values (`[]`). Add `increment` to the dependency array:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+	const [increment, setIncrement] = useState(1);
+
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + increment);
+		}, 1000);
+		return () => {
+			clearInterval(id);
+		};
+	}, [increment]);
+
+	return (
+		<>
+			<h1>
+				Counter: {count}
+				<button on_click={() => setCount(0)}>Reset</button>
+			</h1>
+			<hr />
+			<p>
+				Every second, increment by:
+				<button
+					disabled={increment === 0}
+					on_click={() => {
+						setIncrement((i) => i - 1);
+					}}
+				>
+					–
+				</button>
+				<b>{increment}</b>
+				<button
+					on_click={() => {
+						setIncrement((i) => i + 1);
+					}}
+				>
+					+
+				</button>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+Now, when `increment` changes, React will re-synchronize your Effect, which will restart the interval.
+
+</Solution>
+
+#### Fix a freezing counter
+
+This `Timer` component keeps a `count` state variable which increases every second. The value by which it's increasing is stored in the `increment` state variable, which you can control it with the plus and minus buttons. For example, try pressing the plus button nine times, and notice that the `count` now increases each second by ten rather than by one.
+
+There is a small issue with this user interface. You might notice that if you keep pressing the plus or minus buttons faster than once per second, the timer itself seems to pause. It only resumes after a second passes since the last time you've pressed either button. Find why this is happening, and fix the issue so that the timer ticks on _every_ second without interruptions.
+
+<Hint>
+
+It seems like the Effect which sets up the timer "reacts" to the `increment` value. Does the line that uses the current `increment` value in order to call `setCount` really need to be reactive?
+
+</Hint>
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+	const [increment, setIncrement] = useState(1);
+
+	useEffect(() => {
+		const id = setInterval(() => {
+			setCount((c) => c + increment);
+		}, 1000);
+		return () => {
+			clearInterval(id);
+		};
+	}, [increment]);
+
+	return (
+		<>
+			<h1>
+				Counter: {count}
+				<button on_click={() => setCount(0)}>Reset</button>
+			</h1>
+			<hr />
+			<p>
+				Every second, increment by:
+				<button
+					disabled={increment === 0}
+					on_click={() => {
+						setIncrement((i) => i - 1);
+					}}
+				>
+					–
+				</button>
+				<b>{increment}</b>
+				<button
+					on_click={() => {
+						setIncrement((i) => i + 1);
+					}}
+				>
+					+
+				</button>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+<Solution>
+
+The issue is that the code inside the Effect uses the `increment` state variable. Since it's a dependency of your Effect, every change to `increment` causes the Effect to re-synchronize, which causes the interval to clear. If you keep clearing the interval every time before it has a chance to fire, it will appear as if the timer has stalled.
+
+To solve the issue, extract an `onTick` Effect Event from the Effect:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+	const [increment, setIncrement] = useState(1);
+
+	const onTick = useEffectEvent(() => {
+		setCount((c) => c + increment);
+	});
+
+	useEffect(() => {
+		const id = setInterval(() => {
+			onTick();
+		}, 1000);
+		return () => {
+			clearInterval(id);
+		};
+	}, []);
+
+	return (
+		<>
+			<h1>
+				Counter: {count}
+				<button on_click={() => setCount(0)}>Reset</button>
+			</h1>
+			<hr />
+			<p>
+				Every second, increment by:
+				<button
+					disabled={increment === 0}
+					on_click={() => {
+						setIncrement((i) => i - 1);
+					}}
+				>
+					–
+				</button>
+				<b>{increment}</b>
+				<button
+					on_click={() => {
+						setIncrement((i) => i + 1);
+					}}
+				>
+					+
+				</button>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+Since `onTick` is an Effect Event, the code inside it isn't reactive. The change to `increment` does not trigger any Effects.
+
+</Solution>
+
+#### Fix a non-adjustable delay
+
+In this example, you can customize the interval delay. It's stored in a `delay` state variable which is updated by two buttons. However, even if you press the "plus 100 ms" button until the `delay` is 1000 milliseconds (that is, a second), you'll notice that the timer still increments very fast (every 100 ms). It's as if your changes to the `delay` are ignored. Find and fix the bug.
+
+<Hint>
+
+Code inside Effect Events is not reactive. Are there cases in which you would _want_ the `setInterval` call to re-run?
+
+</Hint>
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+	const [increment, setIncrement] = useState(1);
+	const [delay, setDelay] = useState(100);
+
+	const onTick = useEffectEvent(() => {
+		setCount((c) => c + increment);
+	});
+
+	const onMount = useEffectEvent(() => {
+		return setInterval(() => {
+			onTick();
+		}, delay);
+	});
+
+	useEffect(() => {
+		const id = onMount();
+		return () => {
+			clearInterval(id);
+		};
+	}, []);
+
+	return (
+		<>
+			<h1>
+				Counter: {count}
+				<button on_click={() => setCount(0)}>Reset</button>
+			</h1>
+			<hr />
+			<p>
+				Increment by:
+				<button
+					disabled={increment === 0}
+					on_click={() => {
+						setIncrement((i) => i - 1);
+					}}
+				>
+					–
+				</button>
+				<b>{increment}</b>
+				<button
+					on_click={() => {
+						setIncrement((i) => i + 1);
+					}}
+				>
+					+
+				</button>
+			</p>
+			<p>
+				Increment delay:
+				<button
+					disabled={delay === 100}
+					on_click={() => {
+						setDelay((d) => d - 100);
+					}}
+				>
+					–100 ms
+				</button>
+				<b>{delay} ms</b>
+				<button
+					on_click={() => {
+						setDelay((d) => d + 100);
+					}}
+				>
+					+100 ms
+				</button>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+<Solution>
+
+The problem with the above example is that it extracted an Effect Event called `onMount` without considering what the code should actually be doing. You should only extract Effect Events for a specific reason: when you want to make a part of your code non-reactive. However, the `setInterval` call _should_ be reactive with respect to the `delay` state variable. If the `delay` changes, you want to set up the interval from scratch! To fix this code, pull all the reactive code back inside the Effect:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+
+export default function Timer() {
+	const [count, setCount] = useState(0);
+	const [increment, setIncrement] = useState(1);
+	const [delay, setDelay] = useState(100);
+
+	const onTick = useEffectEvent(() => {
+		setCount((c) => c + increment);
+	});
+
+	useEffect(() => {
+		const id = setInterval(() => {
+			onTick();
+		}, delay);
+		return () => {
+			clearInterval(id);
+		};
+	}, [delay]);
+
+	return (
+		<>
+			<h1>
+				Counter: {count}
+				<button on_click={() => setCount(0)}>Reset</button>
+			</h1>
+			<hr />
+			<p>
+				Increment by:
+				<button
+					disabled={increment === 0}
+					on_click={() => {
+						setIncrement((i) => i - 1);
+					}}
+				>
+					–
+				</button>
+				<b>{increment}</b>
+				<button
+					on_click={() => {
+						setIncrement((i) => i + 1);
+					}}
+				>
+					+
+				</button>
+			</p>
+			<p>
+				Increment delay:
+				<button
+					disabled={delay === 100}
+					on_click={() => {
+						setDelay((d) => d - 100);
+					}}
+				>
+					–100 ms
+				</button>
+				<b>{delay} ms</b>
+				<button
+					on_click={() => {
+						setDelay((d) => d + 100);
+					}}
+				>
+					+100 ms
+				</button>
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin: 10px;
+}
+```
+
+In general, you should be suspicious of functions like `onMount` that focus on the _timing_ rather than the _purpose_ of a piece of code. It may feel "more descriptive" at first but it obscures your intent. As a rule of thumb, Effect Events should correspond to something that happens from the _user's_ perspective. For example, `onMessage`, `onTick`, `onVisit`, or `onConnected` are good Effect Event names. Code inside them would likely not need to be reactive. On the other hand, `onMount`, `onUpdate`, `onUnmount`, or `onAfterRender` are so generic that it's easy to accidentally put code that _should_ be reactive into them. This is why you should name your Effect Events after _what the user thinks has happened,_ not when some code happened to run.
+
+</Solution>
+
+#### Fix a delayed notification
+
+When you join a chat room, this component shows a notification. However, it doesn't show the notification immediately. Instead, the notification is artificially delayed by two seconds so that the user has a chance to look around the UI.
+
+This almost works, but there is a bug. Try changing the dropdown from "general" to "travel" and then to "music" very quickly. If you do it fast enough, you will see two notifications (as expected!) but they will _both_ say "Welcome to music".
+
+Fix it so that when you switch from "general" to "travel" and then to "music" very quickly, you see two notifications, the first one being "Welcome to travel" and the second one being "Welcome to music". (For an additional challenge, assuming you've _already_ made the notifications show the correct rooms, change the code so that only the latter notification is displayed.)
+
+<Hint>
+
+Your Effect knows which room it connected to. Is there any information that you might want to pass to your Effect Event?
+
+</Hint>
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+import { createConnection, sendMessage } from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId, theme }) {
+	const onConnected = useEffectEvent(() => {
+		showNotification("Welcome to " + roomId, theme);
+	});
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.on("connected", () => {
+			setTimeout(() => {
+				onConnected();
+			}, 2000);
+		});
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Use dark theme
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} theme={isDark ? "dark" : "light"} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	let connectedCallback;
+	let timeout;
+	return {
+		connect() {
+			timeout = setTimeout(() => {
+				if (connectedCallback) {
+					connectedCallback();
+				}
+			}, 100);
+		},
+		on(event, callback) {
+			if (connectedCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "connected") {
+				throw Error('Only "connected" event is supported.');
+			}
+			connectedCallback = callback;
+		},
+		disconnect() {
+			clearTimeout(timeout);
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme) {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+<Solution>
+
+Inside your Effect Event, `roomId` is the value _at the time Effect Event was called._
+
+Your Effect Event is called with a two second delay. If you're quickly switching from the travel to the music room, by the time the travel room's notification shows, `roomId` is already `"music"`. This is why both notifications say "Welcome to music".
+
+To fix the issue, instead of reading the _latest_ `roomId` inside the Effect Event, make it a parameter of your Effect Event, like `connectedRoomId` below. Then pass `roomId` from your Effect by calling `onConnected(roomId)`:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+import { createConnection, sendMessage } from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId, theme }) {
+	const onConnected = useEffectEvent((connectedRoomId) => {
+		showNotification("Welcome to " + connectedRoomId, theme);
+	});
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.on("connected", () => {
+			setTimeout(() => {
+				onConnected(roomId);
+			}, 2000);
+		});
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Use dark theme
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} theme={isDark ? "dark" : "light"} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	let connectedCallback;
+	let timeout;
+	return {
+		connect() {
+			timeout = setTimeout(() => {
+				if (connectedCallback) {
+					connectedCallback();
+				}
+			}, 100);
+		},
+		on(event, callback) {
+			if (connectedCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "connected") {
+				throw Error('Only "connected" event is supported.');
+			}
+			connectedCallback = callback;
+		},
+		disconnect() {
+			clearTimeout(timeout);
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme) {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+The Effect that had `roomId` set to `"travel"` (so it connected to the `"travel"` room) will show the notification for `"travel"`. The Effect that had `roomId` set to `"music"` (so it connected to the `"music"` room) will show the notification for `"music"`. In other words, `connectedRoomId` comes from your Effect (which is reactive), while `theme` always uses the latest value.
+
+To solve the additional challenge, save the notification timeout ID and clear it in the cleanup function of your Effect:
+
+```json
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental",
+		"react-scripts": "latest",
+		"toastify-js": "1.12.0"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+import { experimental_useEffectEvent as useEffectEvent } from "react";
+import { createConnection, sendMessage } from "./chat.js";
+import { showNotification } from "./notifications.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId, theme }) {
+	const onConnected = useEffectEvent((connectedRoomId) => {
+		showNotification("Welcome to " + connectedRoomId, theme);
+	});
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		let notificationTimeoutId;
+		connection.on("connected", () => {
+			notificationTimeoutId = setTimeout(() => {
+				onConnected(roomId);
+			}, 2000);
+		});
+		connection.connect();
+		return () => {
+			connection.disconnect();
+			if (notificationTimeoutId !== undefined) {
+				clearTimeout(notificationTimeoutId);
+			}
+		};
+	}, [roomId]);
+
+	return <h1>Welcome to the {roomId} room!</h1>;
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Use dark theme
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} theme={isDark ? "dark" : "light"} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	let connectedCallback;
+	let timeout;
+	return {
+		connect() {
+			timeout = setTimeout(() => {
+				if (connectedCallback) {
+					connectedCallback();
+				}
+			}, 100);
+		},
+		on(event, callback) {
+			if (connectedCallback) {
+				throw Error("Cannot add the handler twice.");
+			}
+			if (event !== "connected") {
+				throw Error('Only "connected" event is supported.');
+			}
+			connectedCallback = callback;
+		},
+		disconnect() {
+			clearTimeout(timeout);
+		},
+	};
+}
+```
+
+```js
+import Toastify from "toastify-js";
+import "toastify-js/src/toastify.css";
+
+export function showNotification(message, theme) {
+	Toastify({
+		text: message,
+		duration: 2000,
+		gravity: "top",
+		position: "right",
+		style: {
+			background: theme === "dark" ? "black" : "white",
+			color: theme === "dark" ? "white" : "black",
+		},
+	}).showToast();
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+This ensures that already scheduled (but not yet displayed) notifications get cancelled when you change rooms.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/sharing-state-between-components.md b/docs/src/learn/sharing-state-between-components.md
new file mode 100644
index 000000000..543a56110
--- /dev/null
+++ b/docs/src/learn/sharing-state-between-components.md
@@ -0,0 +1,579 @@
+---
+title: Sharing State Between Components 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Sometimes, you want the state of two components to always change together. To do it, remove state from both of them, move it to their closest common parent, and then pass it down to them via props. This is known as _lifting state up,_ and it's one of the most common things you will do writing React code.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to share state between components by lifting it up
+    -   What are controlled and uncontrolled components
+
+## Lifting state up by example
+
+In this example, a parent `Accordion` component renders two separate `Panel`s:
+
+-   `Accordion`
+    -   `Panel`
+    -   `Panel`
+
+Each `Panel` component has a boolean `isActive` state that determines whether its content is visible.
+
+Press the Show button for both panels:
+
+```js
+import { useState } from "react";
+
+function Panel({ title, children }) {
+	const [isActive, setIsActive] = useState(false);
+	return (
+		<section className="panel">
+			<h3>{title}</h3>
+			{isActive ? (
+				<p>{children}</p>
+			) : (
+				<button on_click={() => setIsActive(true)}>Show</button>
+			)}
+		</section>
+	);
+}
+
+export default function Accordion() {
+	return (
+		<>
+			<h2>Almaty, Kazakhstan</h2>
+			<Panel title="About">
+				With a population of about 2 million, Almaty is Kazakhstan's
+				largest city. From 1929 to 1997, it was its capital city.
+			</Panel>
+			<Panel title="Etymology">
+				The name comes from <span lang="kk-KZ">алма</span>, the Kazakh
+				word for "apple" and is often translated as "full of apples". In
+				fact, the region surrounding Almaty is thought to be the
+				ancestral home of the apple, and the wild{" "}
+				<i lang="la">Malus sieversii</i> is considered a likely
+				candidate for the ancestor of the modern domestic apple.
+			</Panel>
+		</>
+	);
+}
+```
+
+```css
+h3,
+p {
+	margin: 5px 0px;
+}
+.panel {
+	padding: 10px;
+	border: 1px solid #aaa;
+}
+```
+
+Notice how pressing one panel's button does not affect the other panel--they are independent.
+
+<!-- TODO: Diagram -->
+
+**But now let's say you want to change it so that only one panel is expanded at any given time.** With that design, expanding the second panel should collapse the first one. How would you do that?
+
+To coordinate these two panels, you need to "lift their state up" to a parent component in three steps:
+
+1. **Remove** state from the child components.
+2. **Pass** hardcoded data from the common parent.
+3. **Add** state to the common parent and pass it down together with the event handlers.
+
+This will allow the `Accordion` component to coordinate both `Panel`s and only expand one at a time.
+
+### Step 1: Remove state from the child components
+
+You will give control of the `Panel`'s `isActive` to its parent component. This means that the parent component will pass `isActive` to `Panel` as a prop instead. Start by **removing this line** from the `Panel` component:
+
+```js
+const [isActive, setIsActive] = useState(false);
+```
+
+And instead, add `isActive` to the `Panel`'s list of props:
+
+```js
+function Panel({ title, children, isActive }) {
+```
+
+Now the `Panel`'s parent component can _control_ `isActive` by [passing it down as a prop.](/learn/passing-props-to-a-component) Conversely, the `Panel` component now has _no control_ over the value of `isActive`--it's now up to the parent component!
+
+### Step 2: Pass hardcoded data from the common parent
+
+To lift state up, you must locate the closest common parent component of _both_ of the child components that you want to coordinate:
+
+-   `Accordion` _(closest common parent)_
+    -   `Panel`
+    -   `Panel`
+
+In this example, it's the `Accordion` component. Since it's above both panels and can control their props, it will become the "source of truth" for which panel is currently active. Make the `Accordion` component pass a hardcoded value of `isActive` (for example, `true`) to both panels:
+
+```js
+import { useState } from "react";
+
+export default function Accordion() {
+	return (
+		<>
+			<h2>Almaty, Kazakhstan</h2>
+			<Panel title="About" isActive={true}>
+				With a population of about 2 million, Almaty is Kazakhstan's
+				largest city. From 1929 to 1997, it was its capital city.
+			</Panel>
+			<Panel title="Etymology" isActive={true}>
+				The name comes from <span lang="kk-KZ">алма</span>, the Kazakh
+				word for "apple" and is often translated as "full of apples". In
+				fact, the region surrounding Almaty is thought to be the
+				ancestral home of the apple, and the wild{" "}
+				<i lang="la">Malus sieversii</i> is considered a likely
+				candidate for the ancestor of the modern domestic apple.
+			</Panel>
+		</>
+	);
+}
+
+function Panel({ title, children, isActive }) {
+	return (
+		<section className="panel">
+			<h3>{title}</h3>
+			{isActive ? (
+				<p>{children}</p>
+			) : (
+				<button on_click={() => setIsActive(true)}>Show</button>
+			)}
+		</section>
+	);
+}
+```
+
+```css
+h3,
+p {
+	margin: 5px 0px;
+}
+.panel {
+	padding: 10px;
+	border: 1px solid #aaa;
+}
+```
+
+Try editing the hardcoded `isActive` values in the `Accordion` component and see the result on the screen.
+
+### Step 3: Add state to the common parent
+
+Lifting state up often changes the nature of what you're storing as state.
+
+In this case, only one panel should be active at a time. This means that the `Accordion` common parent component needs to keep track of _which_ panel is the active one. Instead of a `boolean` value, it could use a number as the index of the active `Panel` for the state variable:
+
+```js
+const [activeIndex, setActiveIndex] = useState(0);
+```
+
+When the `activeIndex` is `0`, the first panel is active, and when it's `1`, it's the second one.
+
+Clicking the "Show" button in either `Panel` needs to change the active index in `Accordion`. A `Panel` can't set the `activeIndex` state directly because it's defined inside the `Accordion`. The `Accordion` component needs to _explicitly allow_ the `Panel` component to change its state by [passing an event handler down as a prop](/learn/responding-to-events#passing-event-handlers-as-props):
+
+```js
+<>
+	<Panel isActive={activeIndex === 0} onShow={() => setActiveIndex(0)}>
+		...
+	</Panel>
+	<Panel isActive={activeIndex === 1} onShow={() => setActiveIndex(1)}>
+		...
+	</Panel>
+</>
+```
+
+The `<button>` inside the `Panel` will now use the `onShow` prop as its click event handler:
+
+```js
+import { useState } from "react";
+
+export default function Accordion() {
+	const [activeIndex, setActiveIndex] = useState(0);
+	return (
+		<>
+			<h2>Almaty, Kazakhstan</h2>
+			<Panel
+				title="About"
+				isActive={activeIndex === 0}
+				onShow={() => setActiveIndex(0)}
+			>
+				With a population of about 2 million, Almaty is Kazakhstan's
+				largest city. From 1929 to 1997, it was its capital city.
+			</Panel>
+			<Panel
+				title="Etymology"
+				isActive={activeIndex === 1}
+				onShow={() => setActiveIndex(1)}
+			>
+				The name comes from <span lang="kk-KZ">алма</span>, the Kazakh
+				word for "apple" and is often translated as "full of apples". In
+				fact, the region surrounding Almaty is thought to be the
+				ancestral home of the apple, and the wild{" "}
+				<i lang="la">Malus sieversii</i> is considered a likely
+				candidate for the ancestor of the modern domestic apple.
+			</Panel>
+		</>
+	);
+}
+
+function Panel({ title, children, isActive, onShow }) {
+	return (
+		<section className="panel">
+			<h3>{title}</h3>
+			{isActive ? (
+				<p>{children}</p>
+			) : (
+				<button on_click={onShow}>Show</button>
+			)}
+		</section>
+	);
+}
+```
+
+```css
+h3,
+p {
+	margin: 5px 0px;
+}
+.panel {
+	padding: 10px;
+	border: 1px solid #aaa;
+}
+```
+
+This completes lifting state up! Moving state into the common parent component allowed you to coordinate the two panels. Using the active index instead of two "is shown" flags ensured that only one panel is active at a given time. And passing down the event handler to the child allowed the child to change the parent's state.
+
+<!-- TODO: Diagram -->
+
+<DeepDive>
+
+#### Controlled and uncontrolled components
+
+It is common to call a component with some local state "uncontrolled". For example, the original `Panel` component with an `isActive` state variable is uncontrolled because its parent cannot influence whether the panel is active or not.
+
+In contrast, you might say a component is "controlled" when the important information in it is driven by props rather than its own local state. This lets the parent component fully specify its behavior. The final `Panel` component with the `isActive` prop is controlled by the `Accordion` component.
+
+Uncontrolled components are easier to use within their parents because they require less configuration. But they're less flexible when you want to coordinate them together. Controlled components are maximally flexible, but they require the parent components to fully configure them with props.
+
+In practice, "controlled" and "uncontrolled" aren't strict technical terms--each component usually has some mix of both local state and props. However, this is a useful way to talk about how components are designed and what capabilities they offer.
+
+When writing a component, consider which information in it should be controlled (via props), and which information should be uncontrolled (via state). But you can always change your mind and refactor later.
+
+</DeepDive>
+
+## A single source of truth for each state
+
+In a React application, many components will have their own state. Some state may "live" close to the leaf components (components at the bottom of the tree) like inputs. Other state may "live" closer to the top of the app. For example, even client-side routing libraries are usually implemented by storing the current route in the React state, and passing it down by props!
+
+**For each unique piece of state, you will choose the component that "owns" it.** This principle is also known as having a ["single source of truth".](https://en.wikipedia.org/wiki/Single_source_of_truth) It doesn't mean that all state lives in one place--but that for _each_ piece of state, there is a _specific_ component that holds that piece of information. Instead of duplicating shared state between components, _lift it up_ to their common shared parent, and _pass it down_ to the children that need it.
+
+Your app will change as you work on it. It is common that you will move state down or back up while you're still figuring out where each piece of the state "lives". This is all part of the process!
+
+To see what this feels like in practice with a few more components, read [Thinking in React.](/learn/thinking-in-react)
+
+<Recap>
+
+-   When you want to coordinate two components, move their state to their common parent.
+-   Then pass the information down through props from their common parent.
+-   Finally, pass the event handlers down so that the children can change the parent's state.
+-   It's useful to consider components as "controlled" (driven by props) or "uncontrolled" (driven by state).
+
+</Recap>
+
+<Challenges>
+
+#### Synced inputs
+
+These two inputs are independent. Make them stay in sync: editing one input should update the other input with the same text, and vice versa.
+
+<Hint>
+
+You'll need to lift their state up into the parent component.
+
+</Hint>
+
+```js
+import { useState } from "react";
+
+export default function SyncedInputs() {
+	return (
+		<>
+			<Input label="First input" />
+			<Input label="Second input" />
+		</>
+	);
+}
+
+function Input({ label }) {
+	const [text, setText] = useState("");
+
+	function handleChange(e) {
+		setText(e.target.value);
+	}
+
+	return (
+		<label>
+			{label} <input value={text} onChange={handleChange} />
+		</label>
+	);
+}
+```
+
+```css
+input {
+	margin: 5px;
+}
+label {
+	display: block;
+}
+```
+
+<Solution>
+
+Move the `text` state variable into the parent component along with the `handleChange` handler. Then pass them down as props to both of the `Input` components. This will keep them in sync.
+
+```js
+import { useState } from "react";
+
+export default function SyncedInputs() {
+	const [text, setText] = useState("");
+
+	function handleChange(e) {
+		setText(e.target.value);
+	}
+
+	return (
+		<>
+			<Input label="First input" value={text} onChange={handleChange} />
+			<Input label="Second input" value={text} onChange={handleChange} />
+		</>
+	);
+}
+
+function Input({ label, value, onChange }) {
+	return (
+		<label>
+			{label} <input value={value} onChange={onChange} />
+		</label>
+	);
+}
+```
+
+```css
+input {
+	margin: 5px;
+}
+label {
+	display: block;
+}
+```
+
+</Solution>
+
+#### Filtering a list
+
+In this example, the `SearchBar` has its own `query` state that controls the text input. Its parent `FilterableList` component displays a `List` of items, but it doesn't take the search query into account.
+
+Use the `filterItems(foods, query)` function to filter the list according to the search query. To test your changes, verify that typing "s" into the input filters down the list to "Sushi", "Shish kebab", and "Dim sum".
+
+Note that `filterItems` is already implemented and imported so you don't need to write it yourself!
+
+<Hint>
+
+You will want to remove the `query` state and the `handleChange` handler from the `SearchBar`, and move them to the `FilterableList`. Then pass them down to `SearchBar` as `query` and `onChange` props.
+
+</Hint>
+
+```js
+import { useState } from "react";
+import { foods, filterItems } from "./data.js";
+
+export default function FilterableList() {
+	return (
+		<>
+			<SearchBar />
+			<hr />
+			<List items={foods} />
+		</>
+	);
+}
+
+function SearchBar() {
+	const [query, setQuery] = useState("");
+
+	function handleChange(e) {
+		setQuery(e.target.value);
+	}
+
+	return (
+		<label>
+			Search: <input value={query} onChange={handleChange} />
+		</label>
+	);
+}
+
+function List({ items }) {
+	return (
+		<table>
+			<tbody>
+				{items.map((food) => (
+					<tr key={food.id}>
+						<td>{food.name}</td>
+						<td>{food.description}</td>
+					</tr>
+				))}
+			</tbody>
+		</table>
+	);
+}
+```
+
+```js
+export function filterItems(items, query) {
+	query = query.toLowerCase();
+	return items.filter((item) =>
+		item.name
+			.split(" ")
+			.some((word) => word.toLowerCase().startsWith(query))
+	);
+}
+
+export const foods = [
+	{
+		id: 0,
+		name: "Sushi",
+		description:
+			"Sushi is a traditional Japanese dish of prepared vinegared rice",
+	},
+	{
+		id: 1,
+		name: "Dal",
+		description:
+			"The most common way of preparing dal is in the form of a soup to which onions, tomatoes and various spices may be added",
+	},
+	{
+		id: 2,
+		name: "Pierogi",
+		description:
+			"Pierogi are filled dumplings made by wrapping unleavened dough around a savoury or sweet filling and cooking in boiling water",
+	},
+	{
+		id: 3,
+		name: "Shish kebab",
+		description:
+			"Shish kebab is a popular meal of skewered and grilled cubes of meat.",
+	},
+	{
+		id: 4,
+		name: "Dim sum",
+		description:
+			"Dim sum is a large range of small dishes that Cantonese people traditionally enjoy in restaurants for breakfast and lunch",
+	},
+];
+```
+
+<Solution>
+
+Lift the `query` state up into the `FilterableList` component. Call `filterItems(foods, query)` to get the filtered list and pass it down to the `List`. Now changing the query input is reflected in the list:
+
+```js
+import { useState } from "react";
+import { foods, filterItems } from "./data.js";
+
+export default function FilterableList() {
+	const [query, setQuery] = useState("");
+	const results = filterItems(foods, query);
+
+	function handleChange(e) {
+		setQuery(e.target.value);
+	}
+
+	return (
+		<>
+			<SearchBar query={query} onChange={handleChange} />
+			<hr />
+			<List items={results} />
+		</>
+	);
+}
+
+function SearchBar({ query, onChange }) {
+	return (
+		<label>
+			Search: <input value={query} onChange={onChange} />
+		</label>
+	);
+}
+
+function List({ items }) {
+	return (
+		<table>
+			<tbody>
+				{items.map((food) => (
+					<tr key={food.id}>
+						<td>{food.name}</td>
+						<td>{food.description}</td>
+					</tr>
+				))}
+			</tbody>
+		</table>
+	);
+}
+```
+
+```js
+export function filterItems(items, query) {
+	query = query.toLowerCase();
+	return items.filter((item) =>
+		item.name
+			.split(" ")
+			.some((word) => word.toLowerCase().startsWith(query))
+	);
+}
+
+export const foods = [
+	{
+		id: 0,
+		name: "Sushi",
+		description:
+			"Sushi is a traditional Japanese dish of prepared vinegared rice",
+	},
+	{
+		id: 1,
+		name: "Dal",
+		description:
+			"The most common way of preparing dal is in the form of a soup to which onions, tomatoes and various spices may be added",
+	},
+	{
+		id: 2,
+		name: "Pierogi",
+		description:
+			"Pierogi are filled dumplings made by wrapping unleavened dough around a savoury or sweet filling and cooking in boiling water",
+	},
+	{
+		id: 3,
+		name: "Shish kebab",
+		description:
+			"Shish kebab is a popular meal of skewered and grilled cubes of meat.",
+	},
+	{
+		id: 4,
+		name: "Dim sum",
+		description:
+			"Dim sum is a large range of small dishes that Cantonese people traditionally enjoy in restaurants for breakfast and lunch",
+	},
+];
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/start-a-new-react-project.md b/docs/src/learn/start-a-new-react-project.md
new file mode 100644
index 000000000..dbe1ad06a
--- /dev/null
+++ b/docs/src/learn/start-a-new-react-project.md
@@ -0,0 +1,133 @@
+---
+title: Start a New React Project 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+If you want to build a new app or a new website fully with React, we recommend picking one of the React-powered frameworks popular in the community. Frameworks provide features that most apps and sites eventually need, including routing, data fetching, and generating HTML.
+
+</p>
+
+<Note>
+
+**You need to install [Node.js](https://nodejs.org/en/) for local development.** You can _also_ choose to use Node.js in production, but you don't have to. Many React frameworks support export to a static HTML/CSS/JS folder.
+
+</Note>
+
+## Production-grade React frameworks
+
+### Next.js
+
+**[Next.js](https://nextjs.org/) is a full-stack React framework.** It's versatile and lets you create React apps of any size--from a mostly static blog to a complex dynamic application. To create a new Next.js project, run in your terminal:
+
+<TerminalBlock>
+npx create-next-app
+</TerminalBlock>
+
+If you're new to Next.js, check out the [Next.js tutorial.](https://nextjs.org/learn/foundations/about-nextjs)
+
+Next.js is maintained by [Vercel](https://vercel.com/). You can [deploy a Next.js app](https://nextjs.org/docs/deployment) to any Node.js or serverless hosting, or to your own server. [Fully static Next.js apps](https://nextjs.org/docs/advanced-features/static-html-export) can be deployed to any static hosting.
+
+### Remix
+
+**[Remix](https://remix.run/) is a full-stack React framework with nested routing.** It lets you break your app into nested parts that can load data in parallel and refresh in response to the user actions. To create a new Remix project, run:
+
+<TerminalBlock>
+npx create-remix
+</TerminalBlock>
+
+If you're new to Remix, check out the Remix [blog tutorial](https://remix.run/docs/en/main/tutorials/blog) (short) and [app tutorial](https://remix.run/docs/en/main/tutorials/jokes) (long).
+
+Remix is maintained by [Shopify](https://www.shopify.com/). When you create a Remix project, you need to [pick your deployment target](https://remix.run/docs/en/main/guides/deployment). You can deploy a Remix app to any Node.js or serverless hosting by using or writing an [adapter](https://remix.run/docs/en/main/other-api/adapter).
+
+### Gatsby
+
+**[Gatsby](https://www.gatsbyjs.com/) is a React framework for fast CMS-backed websites.** Its rich plugin ecosystem and its GraphQL data layer simplify integrating content, APIs, and services into one website. To create a new Gatsby project, run:
+
+<TerminalBlock>
+npx create-gatsby
+</TerminalBlock>
+
+If you're new to Gatsby, check out the [Gatsby tutorial.](https://www.gatsbyjs.com/docs/tutorial/)
+
+Gatsby is maintained by [Netlify](https://www.netlify.com/). You can [deploy a fully static Gatsby site](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting) to any static hosting. If you opt into using server-only features, make sure your hosting provider supports them for Gatsby.
+
+### Expo (for native apps)
+
+**[Expo](https://expo.dev/) is a React framework that lets you create universal Android, iOS, and web apps with truly native UIs.** It provides an SDK for [React Native](https://reactnative.dev/) that makes the native parts easier to use. To create a new Expo project, run:
+
+<TerminalBlock>
+npx create-expo-app
+</TerminalBlock>
+
+If you're new to Expo, check out the [Expo tutorial](https://docs.expo.dev/tutorial/introduction/).
+
+Expo is maintained by [Expo (the company)](https://expo.dev/about). Building apps with Expo is free, and you can submit them to the Google and Apple app stores without restrictions. Expo additionally provides opt-in paid cloud services.
+
+<DeepDive>
+
+#### Can I use React without a framework?
+
+You can definitely use React without a framework--that's how you'd [use React for a part of your page.](/learn/add-react-to-an-existing-project#using-react-for-a-part-of-your-existing-page) **However, if you're building a new app or a site fully with React, we recommend using a framework.**
+
+Here's why.
+
+Even if you don't need routing or data fetching at first, you'll likely want to add some libraries for them. As your JavaScript bundle grows with every new feature, you might have to figure out how to split code for every route individually. As your data fetching needs get more complex, you are likely to encounter server-client network waterfalls that make your app feel very slow. As your audience includes more users with poor network conditions and low-end devices, you might need to generate HTML from your components to display content early--either on the server, or during the build time. Changing your setup to run some of your code on the server or during the build can be very tricky.
+
+**These problems are not React-specific. This is why Svelte has SvelteKit, Vue has Nuxt, and so on.** To solve these problems on your own, you'll need to integrate your bundler with your router and with your data fetching library. It's not hard to get an initial setup working, but there are a lot of subtleties involved in making an app that loads quickly even as it grows over time. You'll want to send down the minimal amount of app code but do so in a single client–server roundtrip, in parallel with any data required for the page. You'll likely want the page to be interactive before your JavaScript code even runs, to support progressive enhancement. You may want to generate a folder of fully static HTML files for your marketing pages that can be hosted anywhere and still work with JavaScript disabled. Building these capabilities yourself takes real work.
+
+**React frameworks on this page solve problems like these by default, with no extra work from your side.** They let you start very lean and then scale your app with your needs. Each React framework has a community, so finding answers to questions and upgrading tooling is easier. Frameworks also give structure to your code, helping you and others retain context and skills between different projects. Conversely, with a custom setup it's easier to get stuck on unsupported dependency versions, and you'll essentially end up creating your own framework—albeit one with no community or upgrade path (and if it's anything like the ones we've made in the past, more haphazardly designed).
+
+If you're still not convinced, or your app has unusual constraints not served well by these frameworks and you'd like to roll your own custom setup, we can't stop you--go for it! Grab `react` and `react-dom` from npm, set up your custom build process with a bundler like [Vite](https://vitejs.dev/) or [Parcel](https://parceljs.org/), and add other tools as you need them for routing, static generation or server-side rendering, and more. </DeepDive>
+
+## Bleeding-edge React frameworks
+
+As we've explored how to continue improving React, we realized that integrating React more closely with frameworks (specifically, with routing, bundling, and server technologies) is our biggest opportunity to help React users build better apps. The Next.js team has agreed to collaborate with us in researching, developing, integrating, and testing framework-agnostic bleeding-edge React features like [React Server Components.](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-server-components)
+
+These features are getting closer to being production-ready every day, and we've been in talks with other bundler and framework developers about integrating them. Our hope is that in a year or two, all frameworks listed on this page will have full support for these features. (If you're a framework author interested in partnering with us to experiment with these features, please let us know!)
+
+### Next.js (App Router)
+
+**[Next.js's App Router](https://beta.nextjs.org/docs/getting-started) is a redesign of the Next.js APIs aiming to fulfill the React team’s full-stack architecture vision.** It lets you fetch data in asynchronous components that run on the server or even during the build.
+
+Next.js is maintained by [Vercel](https://vercel.com/). You can [deploy a Next.js app](https://nextjs.org/docs/deployment) to any Node.js or serverless hosting, or to your own server. Next.js also supports [static export](https://beta.nextjs.org/docs/configuring/static-export) which doesn't require a server. <Pitfall>
+
+Next.js's App Router is **currently in beta and is not yet recommended for production** (as of Mar 2023). To experiment with it in an existing Next.js project, [follow this incremental migration guide](https://beta.nextjs.org/docs/upgrade-guide#migrating-from-pages-to-app).
+
+</Pitfall>
+
+<DeepDive>
+
+#### Which features make up the React team’s full-stack architecture vision?
+
+Next.js's App Router bundler fully implements the official [React Server Components specification](https://github.com/reactjs/rfcs/blob/main/text/0188-server-components.md). This lets you mix build-time, server-only, and interactive components in a single React tree.
+
+For example, you can write a server-only React component as an `async` function that reads from a database or from a file. Then you can pass data down from it to your interactive components:
+
+```js
+// This component runs *only* on the server (or during the build).
+async function Talks({ confId }) {
+	// 1. You're on the server, so you can talk to your data layer. API endpoint not required.
+	const talks = await db.Talks.findAll({ confId });
+
+	// 2. Add any amount of rendering logic. It won't make your JavaScript bundle larger.
+	const videos = talks.map((talk) => talk.video);
+
+	// 3. Pass the data down to the components that will run in the browser.
+	return <SearchableVideoList videos={videos} />;
+}
+```
+
+Next.js's App Router also integrates [data fetching with Suspense](/blog/2022/03/29/react-v18#suspense-in-data-frameworks). This lets you specify a loading state (like a skeleton placeholder) for different parts of your user interface directly in your React tree:
+
+```js
+<Suspense fallback={<TalksLoading />}>
+	<Talks confId={conf.id} />
+</Suspense>
+```
+
+Server Components and Suspense are React features rather than Next.js features. However, adopting them at the framework level requires buy-in and non-trivial implementation work. At the moment, the Next.js App Router is the most complete implementation. The React team is working with bundler developers to make these features easier to implement in the next generation of frameworks.
+
+</DeepDive>
diff --git a/docs/src/learn/state-a-components-memory.md b/docs/src/learn/state-a-components-memory.md
new file mode 100644
index 000000000..ce350c1f7
--- /dev/null
+++ b/docs/src/learn/state-a-components-memory.md
@@ -0,0 +1,1652 @@
+---
+title: "State: A Component's Memory 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Components often need to change what's on the screen as a result of an interaction. Typing into the form should update the input field, clicking "next" on an image carousel should change which image is displayed, clicking "buy" should put a product in the shopping cart. Components need to "remember" things: the current input value, the current image, the shopping cart. In React, this kind of component-specific memory is called _state_.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to add a state variable with the [`useState`](/reference/react/useState) Hook
+    -   What pair of values the `useState` Hook returns
+    -   How to add more than one state variable
+    -   Why state is called local
+
+## When a regular variable isn’t enough
+
+Here's a component that renders a sculpture image. Clicking the "Next" button should show the next sculpture by changing the `index` to `1`, then `2`, and so on. However, this **won't work** (you can try it!):
+
+```js
+import { sculptureList } from "./data.js";
+
+export default function Gallery() {
+	let index = 0;
+
+	function handleClick() {
+		index = index + 1;
+	}
+
+	let sculpture = sculptureList[index];
+	return (
+		<>
+			<button on_click={handleClick}>Next</button>
+			<h2>
+				<i>{sculpture.name} </i>
+				by {sculpture.artist}
+			</h2>
+			<h3>
+				({index + 1} of {sculptureList.length})
+			</h3>
+			<img src={sculpture.url} alt={sculpture.alt} />
+			<p>{sculpture.description}</p>
+		</>
+	);
+}
+```
+
+```js
+export const sculptureList = [
+	{
+		name: "Homenaje a la Neurocirugía",
+		artist: "Marta Colvin Andrade",
+		description:
+			"Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
+		url: "https://i.imgur.com/Mx7dA2Y.jpg",
+		alt: "A bronze statue of two crossed hands delicately holding a human brain in their fingertips.",
+	},
+	{
+		name: "Floralis Genérica",
+		artist: "Eduardo Catalano",
+		description:
+			"This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.",
+		url: "https://i.imgur.com/ZF6s192m.jpg",
+		alt: "A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.",
+	},
+	{
+		name: "Eternal Presence",
+		artist: "John Woodrow Wilson",
+		description:
+			'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
+		url: "https://i.imgur.com/aTtVpES.jpg",
+		alt: "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.",
+	},
+	{
+		name: "Moai",
+		artist: "Unknown Artist",
+		description:
+			"Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
+		url: "https://i.imgur.com/RCwLEoQm.jpg",
+		alt: "Three monumental stone busts with the heads that are disproportionately large with somber faces.",
+	},
+	{
+		name: "Blue Nana",
+		artist: "Niki de Saint Phalle",
+		description:
+			"The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
+		url: "https://i.imgur.com/Sd1AgUOm.jpg",
+		alt: "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.",
+	},
+	{
+		name: "Ultimate Form",
+		artist: "Barbara Hepworth",
+		description:
+			"This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.",
+		url: "https://i.imgur.com/2heNQDcm.jpg",
+		alt: "A tall sculpture made of three elements stacked on each other reminding of a human figure.",
+	},
+	{
+		name: "Cavaliere",
+		artist: "Lamidi Olonade Fakeye",
+		description:
+			"Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
+		url: "https://i.imgur.com/wIdGuZwm.png",
+		alt: "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.",
+	},
+	{
+		name: "Big Bellies",
+		artist: "Alina Szapocznikow",
+		description:
+			"Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
+		url: "https://i.imgur.com/AlHTAdDm.jpg",
+		alt: "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.",
+	},
+	{
+		name: "Terracotta Army",
+		artist: "Unknown Artist",
+		description:
+			"The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
+		url: "https://i.imgur.com/HMFmH6m.jpg",
+		alt: "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.",
+	},
+	{
+		name: "Lunar Landscape",
+		artist: "Louise Nevelson",
+		description:
+			"Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
+		url: "https://i.imgur.com/rN7hY6om.jpg",
+		alt: "A black matte sculpture where the individual elements are initially indistinguishable.",
+	},
+	{
+		name: "Aureole",
+		artist: "Ranjani Shettar",
+		description:
+			'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
+		url: "https://i.imgur.com/okTpbHhm.jpg",
+		alt: "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.",
+	},
+	{
+		name: "Hippos",
+		artist: "Taipei Zoo",
+		description:
+			"The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
+		url: "https://i.imgur.com/6o5Vuyu.jpg",
+		alt: "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.",
+	},
+];
+```
+
+```css
+h2 {
+	margin-top: 10px;
+	margin-bottom: 0;
+}
+h3 {
+	margin-top: 5px;
+	font-weight: normal;
+	font-size: 100%;
+}
+img {
+	width: 120px;
+	height: 120px;
+}
+button {
+	display: block;
+	margin-top: 10px;
+	margin-bottom: 10px;
+}
+```
+
+The `handleClick` event handler is updating a local variable, `index`. But two things prevent that change from being visible:
+
+1. **Local variables don't persist between renders.** When React renders this component a second time, it renders it from scratch—it doesn't consider any changes to the local variables.
+2. **Changes to local variables won't trigger renders.** React doesn't realize it needs to render the component again with the new data.
+
+To update a component with new data, two things need to happen:
+
+1. **Retain** the data between renders.
+2. **Trigger** React to render the component with new data (re-rendering).
+
+The [`useState`](/reference/react/useState) Hook provides those two things:
+
+1. A **state variable** to retain the data between renders.
+2. A **state setter function** to update the variable and trigger React to render the component again.
+
+## Adding a state variable
+
+To add a state variable, import `useState` from React at the top of the file:
+
+```js
+import { useState } from "react";
+```
+
+Then, replace this line:
+
+```js
+let index = 0;
+```
+
+with
+
+```js
+const [index, setIndex] = useState(0);
+```
+
+`index` is a state variable and `setIndex` is the setter function.
+
+> The `[` and `]` syntax here is called [array destructuring](https://javascript.info/destructuring-assignment) and it lets you read values from an array. The array returned by `useState` always has exactly two items.
+
+This is how they work together in `handleClick`:
+
+```js
+function handleClick() {
+	setIndex(index + 1);
+}
+```
+
+Now clicking the "Next" button switches the current sculpture:
+
+```js
+import { useState } from "react";
+import { sculptureList } from "./data.js";
+
+export default function Gallery() {
+	const [index, setIndex] = useState(0);
+
+	function handleClick() {
+		setIndex(index + 1);
+	}
+
+	let sculpture = sculptureList[index];
+	return (
+		<>
+			<button on_click={handleClick}>Next</button>
+			<h2>
+				<i>{sculpture.name} </i>
+				by {sculpture.artist}
+			</h2>
+			<h3>
+				({index + 1} of {sculptureList.length})
+			</h3>
+			<img src={sculpture.url} alt={sculpture.alt} />
+			<p>{sculpture.description}</p>
+		</>
+	);
+}
+```
+
+```js
+export const sculptureList = [
+	{
+		name: "Homenaje a la Neurocirugía",
+		artist: "Marta Colvin Andrade",
+		description:
+			"Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
+		url: "https://i.imgur.com/Mx7dA2Y.jpg",
+		alt: "A bronze statue of two crossed hands delicately holding a human brain in their fingertips.",
+	},
+	{
+		name: "Floralis Genérica",
+		artist: "Eduardo Catalano",
+		description:
+			"This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.",
+		url: "https://i.imgur.com/ZF6s192m.jpg",
+		alt: "A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.",
+	},
+	{
+		name: "Eternal Presence",
+		artist: "John Woodrow Wilson",
+		description:
+			'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
+		url: "https://i.imgur.com/aTtVpES.jpg",
+		alt: "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.",
+	},
+	{
+		name: "Moai",
+		artist: "Unknown Artist",
+		description:
+			"Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
+		url: "https://i.imgur.com/RCwLEoQm.jpg",
+		alt: "Three monumental stone busts with the heads that are disproportionately large with somber faces.",
+	},
+	{
+		name: "Blue Nana",
+		artist: "Niki de Saint Phalle",
+		description:
+			"The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
+		url: "https://i.imgur.com/Sd1AgUOm.jpg",
+		alt: "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.",
+	},
+	{
+		name: "Ultimate Form",
+		artist: "Barbara Hepworth",
+		description:
+			"This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.",
+		url: "https://i.imgur.com/2heNQDcm.jpg",
+		alt: "A tall sculpture made of three elements stacked on each other reminding of a human figure.",
+	},
+	{
+		name: "Cavaliere",
+		artist: "Lamidi Olonade Fakeye",
+		description:
+			"Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
+		url: "https://i.imgur.com/wIdGuZwm.png",
+		alt: "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.",
+	},
+	{
+		name: "Big Bellies",
+		artist: "Alina Szapocznikow",
+		description:
+			"Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
+		url: "https://i.imgur.com/AlHTAdDm.jpg",
+		alt: "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.",
+	},
+	{
+		name: "Terracotta Army",
+		artist: "Unknown Artist",
+		description:
+			"The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
+		url: "https://i.imgur.com/HMFmH6m.jpg",
+		alt: "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.",
+	},
+	{
+		name: "Lunar Landscape",
+		artist: "Louise Nevelson",
+		description:
+			"Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
+		url: "https://i.imgur.com/rN7hY6om.jpg",
+		alt: "A black matte sculpture where the individual elements are initially indistinguishable.",
+	},
+	{
+		name: "Aureole",
+		artist: "Ranjani Shettar",
+		description:
+			'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
+		url: "https://i.imgur.com/okTpbHhm.jpg",
+		alt: "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.",
+	},
+	{
+		name: "Hippos",
+		artist: "Taipei Zoo",
+		description:
+			"The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
+		url: "https://i.imgur.com/6o5Vuyu.jpg",
+		alt: "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.",
+	},
+];
+```
+
+```css
+h2 {
+	margin-top: 10px;
+	margin-bottom: 0;
+}
+h3 {
+	margin-top: 5px;
+	font-weight: normal;
+	font-size: 100%;
+}
+img {
+	width: 120px;
+	height: 120px;
+}
+button {
+	display: block;
+	margin-top: 10px;
+	margin-bottom: 10px;
+}
+```
+
+### Meet your first Hook
+
+In React, `useState`, as well as any other function starting with "`use`", is called a Hook.
+
+_Hooks_ are special functions that are only available while React is [rendering](/learn/render-and-commit#step-1-trigger-a-render) (which we'll get into in more detail on the next page). They let you "hook into" different React features.
+
+State is just one of those features, but you will meet the other Hooks later.
+
+<Pitfall>
+
+**Hooks—functions starting with `use`—can only be called at the top level of your components or [your own Hooks.](/learn/reusing-logic-with-custom-hooks)** You can't call Hooks inside conditions, loops, or other nested functions. Hooks are functions, but it's helpful to think of them as unconditional declarations about your component's needs. You "use" React features at the top of your component similar to how you "import" modules at the top of your file.
+
+</Pitfall>
+
+### Anatomy of `useState`
+
+When you call [`useState`](/reference/react/useState), you are telling React that you want this component to remember something:
+
+```js
+const [index, setIndex] = useState(0);
+```
+
+In this case, you want React to remember `index`.
+
+<Note>
+
+The convention is to name this pair like `const [something, setSomething]`. You could name it anything you like, but conventions make things easier to understand across projects.
+
+</Note>
+
+The only argument to `useState` is the **initial value** of your state variable. In this example, the `index`'s initial value is set to `0` with `useState(0)`.
+
+Every time your component renders, `useState` gives you an array containing two values:
+
+1. The **state variable** (`index`) with the value you stored.
+2. The **state setter function** (`setIndex`) which can update the state variable and trigger React to render the component again.
+
+Here's how that happens in action:
+
+```js
+const [index, setIndex] = useState(0);
+```
+
+1. **Your component renders the first time.** Because you passed `0` to `useState` as the initial value for `index`, it will return `[0, setIndex]`. React remembers `0` is the latest state value.
+2. **You update the state.** When a user clicks the button, it calls `setIndex(index + 1)`. `index` is `0`, so it's `setIndex(1)`. This tells React to remember `index` is `1` now and triggers another render.
+3. **Your component's second render.** React still sees `useState(0)`, but because React _remembers_ that you set `index` to `1`, it returns `[1, setIndex]` instead.
+4. And so on!
+
+## Giving a component multiple state variables
+
+You can have as many state variables of as many types as you like in one component. This component has two state variables, a number `index` and a boolean `showMore` that's toggled when you click "Show details":
+
+```js
+import { useState } from "react";
+import { sculptureList } from "./data.js";
+
+export default function Gallery() {
+	const [index, setIndex] = useState(0);
+	const [showMore, setShowMore] = useState(false);
+
+	function handleNextClick() {
+		setIndex(index + 1);
+	}
+
+	function handleMoreClick() {
+		setShowMore(!showMore);
+	}
+
+	let sculpture = sculptureList[index];
+	return (
+		<>
+			<button on_click={handleNextClick}>Next</button>
+			<h2>
+				<i>{sculpture.name} </i>
+				by {sculpture.artist}
+			</h2>
+			<h3>
+				({index + 1} of {sculptureList.length})
+			</h3>
+			<button on_click={handleMoreClick}>
+				{showMore ? "Hide" : "Show"} details
+			</button>
+			{showMore && <p>{sculpture.description}</p>}
+			<img src={sculpture.url} alt={sculpture.alt} />
+		</>
+	);
+}
+```
+
+```js
+export const sculptureList = [
+	{
+		name: "Homenaje a la Neurocirugía",
+		artist: "Marta Colvin Andrade",
+		description:
+			"Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
+		url: "https://i.imgur.com/Mx7dA2Y.jpg",
+		alt: "A bronze statue of two crossed hands delicately holding a human brain in their fingertips.",
+	},
+	{
+		name: "Floralis Genérica",
+		artist: "Eduardo Catalano",
+		description:
+			"This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.",
+		url: "https://i.imgur.com/ZF6s192m.jpg",
+		alt: "A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.",
+	},
+	{
+		name: "Eternal Presence",
+		artist: "John Woodrow Wilson",
+		description:
+			'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
+		url: "https://i.imgur.com/aTtVpES.jpg",
+		alt: "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.",
+	},
+	{
+		name: "Moai",
+		artist: "Unknown Artist",
+		description:
+			"Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
+		url: "https://i.imgur.com/RCwLEoQm.jpg",
+		alt: "Three monumental stone busts with the heads that are disproportionately large with somber faces.",
+	},
+	{
+		name: "Blue Nana",
+		artist: "Niki de Saint Phalle",
+		description:
+			"The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
+		url: "https://i.imgur.com/Sd1AgUOm.jpg",
+		alt: "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.",
+	},
+	{
+		name: "Ultimate Form",
+		artist: "Barbara Hepworth",
+		description:
+			"This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.",
+		url: "https://i.imgur.com/2heNQDcm.jpg",
+		alt: "A tall sculpture made of three elements stacked on each other reminding of a human figure.",
+	},
+	{
+		name: "Cavaliere",
+		artist: "Lamidi Olonade Fakeye",
+		description:
+			"Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
+		url: "https://i.imgur.com/wIdGuZwm.png",
+		alt: "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.",
+	},
+	{
+		name: "Big Bellies",
+		artist: "Alina Szapocznikow",
+		description:
+			"Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
+		url: "https://i.imgur.com/AlHTAdDm.jpg",
+		alt: "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.",
+	},
+	{
+		name: "Terracotta Army",
+		artist: "Unknown Artist",
+		description:
+			"The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
+		url: "https://i.imgur.com/HMFmH6m.jpg",
+		alt: "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.",
+	},
+	{
+		name: "Lunar Landscape",
+		artist: "Louise Nevelson",
+		description:
+			"Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
+		url: "https://i.imgur.com/rN7hY6om.jpg",
+		alt: "A black matte sculpture where the individual elements are initially indistinguishable.",
+	},
+	{
+		name: "Aureole",
+		artist: "Ranjani Shettar",
+		description:
+			'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
+		url: "https://i.imgur.com/okTpbHhm.jpg",
+		alt: "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.",
+	},
+	{
+		name: "Hippos",
+		artist: "Taipei Zoo",
+		description:
+			"The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
+		url: "https://i.imgur.com/6o5Vuyu.jpg",
+		alt: "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.",
+	},
+];
+```
+
+```css
+h2 {
+	margin-top: 10px;
+	margin-bottom: 0;
+}
+h3 {
+	margin-top: 5px;
+	font-weight: normal;
+	font-size: 100%;
+}
+img {
+	width: 120px;
+	height: 120px;
+}
+button {
+	display: block;
+	margin-top: 10px;
+	margin-bottom: 10px;
+}
+```
+
+It is a good idea to have multiple state variables if their state is unrelated, like `index` and `showMore` in this example. But if you find that you often change two state variables together, it might be easier to combine them into one. For example, if you have a form with many fields, it's more convenient to have a single state variable that holds an object than state variable per field. Read [Choosing the State Structure](/learn/choosing-the-state-structure) for more tips.
+
+<DeepDive>
+
+#### How does React know which state to return?
+
+You might have noticed that the `useState` call does not receive any information about _which_ state variable it refers to. There is no "identifier" that is passed to `useState`, so how does it know which of the state variables to return? Does it rely on some magic like parsing your functions? The answer is no.
+
+Instead, to enable their concise syntax, Hooks **rely on a stable call order on every render of the same component.** This works well in practice because if you follow the rule above ("only call Hooks at the top level"), Hooks will always be called in the same order. Additionally, a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) catches most mistakes.
+
+Internally, React holds an array of state pairs for every component. It also maintains the current pair index, which is set to `0` before rendering. Each time you call `useState`, React gives you the next state pair and increments the index. You can read more about this mechanism in [React Hooks: Not Magic, Just Arrays.](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e)
+
+This example **doesn't use React** but it gives you an idea of how `useState` works internally:
+
+```js
+let componentHooks = [];
+let currentHookIndex = 0;
+
+// How useState works inside React (simplified).
+function useState(initialState) {
+	let pair = componentHooks[currentHookIndex];
+	if (pair) {
+		// This is not the first render,
+		// so the state pair already exists.
+		// Return it and prepare for next Hook call.
+		currentHookIndex++;
+		return pair;
+	}
+
+	// This is the first time we're rendering,
+	// so create a state pair and store it.
+	pair = [initialState, setState];
+
+	function setState(nextState) {
+		// When the user requests a state change,
+		// put the new value into the pair.
+		pair[0] = nextState;
+		updateDOM();
+	}
+
+	// Store the pair for future renders
+	// and prepare for the next Hook call.
+	componentHooks[currentHookIndex] = pair;
+	currentHookIndex++;
+	return pair;
+}
+
+function Gallery() {
+	// Each useState() call will get the next pair.
+	const [index, setIndex] = useState(0);
+	const [showMore, setShowMore] = useState(false);
+
+	function handleNextClick() {
+		setIndex(index + 1);
+	}
+
+	function handleMoreClick() {
+		setShowMore(!showMore);
+	}
+
+	let sculpture = sculptureList[index];
+	// This example doesn't use React, so
+	// return an output object instead of JSX.
+	return {
+		onNextClick: handleNextClick,
+		onMoreClick: handleMoreClick,
+		header: `${sculpture.name} by ${sculpture.artist}`,
+		counter: `${index + 1} of ${sculptureList.length}`,
+		more: `${showMore ? "Hide" : "Show"} details`,
+		description: showMore ? sculpture.description : null,
+		imageSrc: sculpture.url,
+		imageAlt: sculpture.alt,
+	};
+}
+
+function updateDOM() {
+	// Reset the current Hook index
+	// before rendering the component.
+	currentHookIndex = 0;
+	let output = Gallery();
+
+	// Update the DOM to match the output.
+	// This is the part React does for you.
+	nextButton.onclick = output.onNextClick;
+	header.textContent = output.header;
+	moreButton.onclick = output.onMoreClick;
+	moreButton.textContent = output.more;
+	image.src = output.imageSrc;
+	image.alt = output.imageAlt;
+	if (output.description !== null) {
+		description.textContent = output.description;
+		description.style.display = "";
+	} else {
+		description.style.display = "none";
+	}
+}
+
+let nextButton = document.getElementById("nextButton");
+let header = document.getElementById("header");
+let moreButton = document.getElementById("moreButton");
+let description = document.getElementById("description");
+let image = document.getElementById("image");
+let sculptureList = [
+	{
+		name: "Homenaje a la Neurocirugía",
+		artist: "Marta Colvin Andrade",
+		description:
+			"Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
+		url: "https://i.imgur.com/Mx7dA2Y.jpg",
+		alt: "A bronze statue of two crossed hands delicately holding a human brain in their fingertips.",
+	},
+	{
+		name: "Floralis Genérica",
+		artist: "Eduardo Catalano",
+		description:
+			"This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.",
+		url: "https://i.imgur.com/ZF6s192m.jpg",
+		alt: "A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.",
+	},
+	{
+		name: "Eternal Presence",
+		artist: "John Woodrow Wilson",
+		description:
+			'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
+		url: "https://i.imgur.com/aTtVpES.jpg",
+		alt: "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.",
+	},
+	{
+		name: "Moai",
+		artist: "Unknown Artist",
+		description:
+			"Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
+		url: "https://i.imgur.com/RCwLEoQm.jpg",
+		alt: "Three monumental stone busts with the heads that are disproportionately large with somber faces.",
+	},
+	{
+		name: "Blue Nana",
+		artist: "Niki de Saint Phalle",
+		description:
+			"The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
+		url: "https://i.imgur.com/Sd1AgUOm.jpg",
+		alt: "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.",
+	},
+	{
+		name: "Ultimate Form",
+		artist: "Barbara Hepworth",
+		description:
+			"This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.",
+		url: "https://i.imgur.com/2heNQDcm.jpg",
+		alt: "A tall sculpture made of three elements stacked on each other reminding of a human figure.",
+	},
+	{
+		name: "Cavaliere",
+		artist: "Lamidi Olonade Fakeye",
+		description:
+			"Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
+		url: "https://i.imgur.com/wIdGuZwm.png",
+		alt: "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.",
+	},
+	{
+		name: "Big Bellies",
+		artist: "Alina Szapocznikow",
+		description:
+			"Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
+		url: "https://i.imgur.com/AlHTAdDm.jpg",
+		alt: "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.",
+	},
+	{
+		name: "Terracotta Army",
+		artist: "Unknown Artist",
+		description:
+			"The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
+		url: "https://i.imgur.com/HMFmH6m.jpg",
+		alt: "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.",
+	},
+	{
+		name: "Lunar Landscape",
+		artist: "Louise Nevelson",
+		description:
+			"Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
+		url: "https://i.imgur.com/rN7hY6om.jpg",
+		alt: "A black matte sculpture where the individual elements are initially indistinguishable.",
+	},
+	{
+		name: "Aureole",
+		artist: "Ranjani Shettar",
+		description:
+			'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
+		url: "https://i.imgur.com/okTpbHhm.jpg",
+		alt: "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.",
+	},
+	{
+		name: "Hippos",
+		artist: "Taipei Zoo",
+		description:
+			"The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
+		url: "https://i.imgur.com/6o5Vuyu.jpg",
+		alt: "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.",
+	},
+];
+
+// Make UI match the initial state.
+updateDOM();
+```
+
+```html
+<button id="nextButton">Next</button>
+<h3 id="header"></h3>
+<button id="moreButton"></button>
+<p id="description"></p>
+<img id="image" />
+
+<style>
+	* {
+		box-sizing: border-box;
+	}
+	body {
+		font-family: sans-serif;
+		margin: 20px;
+		padding: 0;
+	}
+	button {
+		display: block;
+		margin-bottom: 10px;
+	}
+</style>
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+```
+
+You don't have to understand it to use React, but you might find this a helpful mental model.
+
+</DeepDive>
+
+## State is isolated and private
+
+State is local to a component instance on the screen. In other words, **if you render the same component twice, each copy will have completely isolated state!** Changing one of them will not affect the other.
+
+In this example, the `Gallery` component from earlier is rendered twice with no changes to its logic. Try clicking the buttons inside each of the galleries. Notice that their state is independent:
+
+```js
+import Gallery from "./Gallery.js";
+
+export default function Page() {
+	return (
+		<div className="Page">
+			<Gallery />
+			<Gallery />
+		</div>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+import { sculptureList } from "./data.js";
+
+export default function Gallery() {
+	const [index, setIndex] = useState(0);
+	const [showMore, setShowMore] = useState(false);
+
+	function handleNextClick() {
+		setIndex(index + 1);
+	}
+
+	function handleMoreClick() {
+		setShowMore(!showMore);
+	}
+
+	let sculpture = sculptureList[index];
+	return (
+		<section>
+			<button on_click={handleNextClick}>Next</button>
+			<h2>
+				<i>{sculpture.name} </i>
+				by {sculpture.artist}
+			</h2>
+			<h3>
+				({index + 1} of {sculptureList.length})
+			</h3>
+			<button on_click={handleMoreClick}>
+				{showMore ? "Hide" : "Show"} details
+			</button>
+			{showMore && <p>{sculpture.description}</p>}
+			<img src={sculpture.url} alt={sculpture.alt} />
+		</section>
+	);
+}
+```
+
+```js
+export const sculptureList = [
+	{
+		name: "Homenaje a la Neurocirugía",
+		artist: "Marta Colvin Andrade",
+		description:
+			"Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
+		url: "https://i.imgur.com/Mx7dA2Y.jpg",
+		alt: "A bronze statue of two crossed hands delicately holding a human brain in their fingertips.",
+	},
+	{
+		name: "Floralis Genérica",
+		artist: "Eduardo Catalano",
+		description:
+			"This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.",
+		url: "https://i.imgur.com/ZF6s192m.jpg",
+		alt: "A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.",
+	},
+	{
+		name: "Eternal Presence",
+		artist: "John Woodrow Wilson",
+		description:
+			'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
+		url: "https://i.imgur.com/aTtVpES.jpg",
+		alt: "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.",
+	},
+	{
+		name: "Moai",
+		artist: "Unknown Artist",
+		description:
+			"Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
+		url: "https://i.imgur.com/RCwLEoQm.jpg",
+		alt: "Three monumental stone busts with the heads that are disproportionately large with somber faces.",
+	},
+	{
+		name: "Blue Nana",
+		artist: "Niki de Saint Phalle",
+		description:
+			"The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
+		url: "https://i.imgur.com/Sd1AgUOm.jpg",
+		alt: "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.",
+	},
+	{
+		name: "Ultimate Form",
+		artist: "Barbara Hepworth",
+		description:
+			"This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.",
+		url: "https://i.imgur.com/2heNQDcm.jpg",
+		alt: "A tall sculpture made of three elements stacked on each other reminding of a human figure.",
+	},
+	{
+		name: "Cavaliere",
+		artist: "Lamidi Olonade Fakeye",
+		description:
+			"Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
+		url: "https://i.imgur.com/wIdGuZwm.png",
+		alt: "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.",
+	},
+	{
+		name: "Big Bellies",
+		artist: "Alina Szapocznikow",
+		description:
+			"Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
+		url: "https://i.imgur.com/AlHTAdDm.jpg",
+		alt: "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.",
+	},
+	{
+		name: "Terracotta Army",
+		artist: "Unknown Artist",
+		description:
+			"The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
+		url: "https://i.imgur.com/HMFmH6m.jpg",
+		alt: "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.",
+	},
+	{
+		name: "Lunar Landscape",
+		artist: "Louise Nevelson",
+		description:
+			"Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
+		url: "https://i.imgur.com/rN7hY6om.jpg",
+		alt: "A black matte sculpture where the individual elements are initially indistinguishable.",
+	},
+	{
+		name: "Aureole",
+		artist: "Ranjani Shettar",
+		description:
+			'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
+		url: "https://i.imgur.com/okTpbHhm.jpg",
+		alt: "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.",
+	},
+	{
+		name: "Hippos",
+		artist: "Taipei Zoo",
+		description:
+			"The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
+		url: "https://i.imgur.com/6o5Vuyu.jpg",
+		alt: "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.",
+	},
+];
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+.Page > * {
+	float: left;
+	width: 50%;
+	padding: 10px;
+}
+h2 {
+	margin-top: 10px;
+	margin-bottom: 0;
+}
+h3 {
+	margin-top: 5px;
+	font-weight: normal;
+	font-size: 100%;
+}
+img {
+	width: 120px;
+	height: 120px;
+}
+button {
+	display: block;
+	margin-top: 10px;
+	margin-bottom: 10px;
+}
+```
+
+This is what makes state different from regular variables that you might declare at the top of your module. State is not tied to a particular function call or a place in the code, but it's "local" to the specific place on the screen. You rendered two `<Gallery />` components, so their state is stored separately.
+
+Also notice how the `Page` component doesn't "know" anything about the `Gallery` state or even whether it has any. Unlike props, **state is fully private to the component declaring it.** The parent component can't change it. This lets you add state to any component or remove it without impacting the rest of the components.
+
+What if you wanted both galleries to keep their states in sync? The right way to do it in React is to _remove_ state from child components and add it to their closest shared parent. The next few pages will focus on organizing state of a single component, but we will return to this topic in [Sharing State Between Components.](/learn/sharing-state-between-components)
+
+<Recap>
+
+-   Use a state variable when a component needs to "remember" some information between renders.
+-   State variables are declared by calling the `useState` Hook.
+-   Hooks are special functions that start with `use`. They let you "hook into" React features like state.
+-   Hooks might remind you of imports: they need to be called unconditionally. Calling Hooks, including `useState`, is only valid at the top level of a component or another Hook.
+-   The `useState` Hook returns a pair of values: the current state and the function to update it.
+-   You can have more than one state variable. Internally, React matches them up by their order.
+-   State is private to the component. If you render it in two places, each copy gets its own state.
+
+</Recap>
+
+<Challenges>
+
+#### Complete the gallery
+
+When you press "Next" on the last sculpture, the code crashes. Fix the logic to prevent the crash. You may do this by adding extra logic to event handler or by disabling the button when the action is not possible.
+
+After fixing the crash, add a "Previous" button that shows the previous sculpture. It shouldn't crash on the first sculpture.
+
+```js
+import { useState } from "react";
+import { sculptureList } from "./data.js";
+
+export default function Gallery() {
+	const [index, setIndex] = useState(0);
+	const [showMore, setShowMore] = useState(false);
+
+	function handleNextClick() {
+		setIndex(index + 1);
+	}
+
+	function handleMoreClick() {
+		setShowMore(!showMore);
+	}
+
+	let sculpture = sculptureList[index];
+	return (
+		<>
+			<button on_click={handleNextClick}>Next</button>
+			<h2>
+				<i>{sculpture.name} </i>
+				by {sculpture.artist}
+			</h2>
+			<h3>
+				({index + 1} of {sculptureList.length})
+			</h3>
+			<button on_click={handleMoreClick}>
+				{showMore ? "Hide" : "Show"} details
+			</button>
+			{showMore && <p>{sculpture.description}</p>}
+			<img src={sculpture.url} alt={sculpture.alt} />
+		</>
+	);
+}
+```
+
+```js
+export const sculptureList = [
+	{
+		name: "Homenaje a la Neurocirugía",
+		artist: "Marta Colvin Andrade",
+		description:
+			"Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
+		url: "https://i.imgur.com/Mx7dA2Y.jpg",
+		alt: "A bronze statue of two crossed hands delicately holding a human brain in their fingertips.",
+	},
+	{
+		name: "Floralis Genérica",
+		artist: "Eduardo Catalano",
+		description:
+			"This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.",
+		url: "https://i.imgur.com/ZF6s192m.jpg",
+		alt: "A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.",
+	},
+	{
+		name: "Eternal Presence",
+		artist: "John Woodrow Wilson",
+		description:
+			'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
+		url: "https://i.imgur.com/aTtVpES.jpg",
+		alt: "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.",
+	},
+	{
+		name: "Moai",
+		artist: "Unknown Artist",
+		description:
+			"Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
+		url: "https://i.imgur.com/RCwLEoQm.jpg",
+		alt: "Three monumental stone busts with the heads that are disproportionately large with somber faces.",
+	},
+	{
+		name: "Blue Nana",
+		artist: "Niki de Saint Phalle",
+		description:
+			"The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
+		url: "https://i.imgur.com/Sd1AgUOm.jpg",
+		alt: "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.",
+	},
+	{
+		name: "Ultimate Form",
+		artist: "Barbara Hepworth",
+		description:
+			"This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.",
+		url: "https://i.imgur.com/2heNQDcm.jpg",
+		alt: "A tall sculpture made of three elements stacked on each other reminding of a human figure.",
+	},
+	{
+		name: "Cavaliere",
+		artist: "Lamidi Olonade Fakeye",
+		description:
+			"Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
+		url: "https://i.imgur.com/wIdGuZwm.png",
+		alt: "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.",
+	},
+	{
+		name: "Big Bellies",
+		artist: "Alina Szapocznikow",
+		description:
+			"Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
+		url: "https://i.imgur.com/AlHTAdDm.jpg",
+		alt: "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.",
+	},
+	{
+		name: "Terracotta Army",
+		artist: "Unknown Artist",
+		description:
+			"The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
+		url: "https://i.imgur.com/HMFmH6m.jpg",
+		alt: "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.",
+	},
+	{
+		name: "Lunar Landscape",
+		artist: "Louise Nevelson",
+		description:
+			"Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
+		url: "https://i.imgur.com/rN7hY6om.jpg",
+		alt: "A black matte sculpture where the individual elements are initially indistinguishable.",
+	},
+	{
+		name: "Aureole",
+		artist: "Ranjani Shettar",
+		description:
+			'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
+		url: "https://i.imgur.com/okTpbHhm.jpg",
+		alt: "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.",
+	},
+	{
+		name: "Hippos",
+		artist: "Taipei Zoo",
+		description:
+			"The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
+		url: "https://i.imgur.com/6o5Vuyu.jpg",
+		alt: "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.",
+	},
+];
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+.Page > * {
+	float: left;
+	width: 50%;
+	padding: 10px;
+}
+h2 {
+	margin-top: 10px;
+	margin-bottom: 0;
+}
+h3 {
+	margin-top: 5px;
+	font-weight: normal;
+	font-size: 100%;
+}
+img {
+	width: 120px;
+	height: 120px;
+}
+```
+
+<Solution>
+
+This adds a guarding condition inside both event handlers and disables the buttons when needed:
+
+```js
+import { useState } from "react";
+import { sculptureList } from "./data.js";
+
+export default function Gallery() {
+	const [index, setIndex] = useState(0);
+	const [showMore, setShowMore] = useState(false);
+
+	let hasPrev = index > 0;
+	let hasNext = index < sculptureList.length - 1;
+
+	function handlePrevClick() {
+		if (hasPrev) {
+			setIndex(index - 1);
+		}
+	}
+
+	function handleNextClick() {
+		if (hasNext) {
+			setIndex(index + 1);
+		}
+	}
+
+	function handleMoreClick() {
+		setShowMore(!showMore);
+	}
+
+	let sculpture = sculptureList[index];
+	return (
+		<>
+			<button on_click={handlePrevClick} disabled={!hasPrev}>
+				Previous
+			</button>
+			<button on_click={handleNextClick} disabled={!hasNext}>
+				Next
+			</button>
+			<h2>
+				<i>{sculpture.name} </i>
+				by {sculpture.artist}
+			</h2>
+			<h3>
+				({index + 1} of {sculptureList.length})
+			</h3>
+			<button on_click={handleMoreClick}>
+				{showMore ? "Hide" : "Show"} details
+			</button>
+			{showMore && <p>{sculpture.description}</p>}
+			<img src={sculpture.url} alt={sculpture.alt} />
+		</>
+	);
+}
+```
+
+```js
+export const sculptureList = [
+	{
+		name: "Homenaje a la Neurocirugía",
+		artist: "Marta Colvin Andrade",
+		description:
+			"Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.",
+		url: "https://i.imgur.com/Mx7dA2Y.jpg",
+		alt: "A bronze statue of two crossed hands delicately holding a human brain in their fingertips.",
+	},
+	{
+		name: "Floralis Genérica",
+		artist: "Eduardo Catalano",
+		description:
+			"This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.",
+		url: "https://i.imgur.com/ZF6s192m.jpg",
+		alt: "A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.",
+	},
+	{
+		name: "Eternal Presence",
+		artist: "John Woodrow Wilson",
+		description:
+			'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
+		url: "https://i.imgur.com/aTtVpES.jpg",
+		alt: "The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.",
+	},
+	{
+		name: "Moai",
+		artist: "Unknown Artist",
+		description:
+			"Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.",
+		url: "https://i.imgur.com/RCwLEoQm.jpg",
+		alt: "Three monumental stone busts with the heads that are disproportionately large with somber faces.",
+	},
+	{
+		name: "Blue Nana",
+		artist: "Niki de Saint Phalle",
+		description:
+			"The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.",
+		url: "https://i.imgur.com/Sd1AgUOm.jpg",
+		alt: "A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.",
+	},
+	{
+		name: "Ultimate Form",
+		artist: "Barbara Hepworth",
+		description:
+			"This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.",
+		url: "https://i.imgur.com/2heNQDcm.jpg",
+		alt: "A tall sculpture made of three elements stacked on each other reminding of a human figure.",
+	},
+	{
+		name: "Cavaliere",
+		artist: "Lamidi Olonade Fakeye",
+		description:
+			"Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
+		url: "https://i.imgur.com/wIdGuZwm.png",
+		alt: "An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.",
+	},
+	{
+		name: "Big Bellies",
+		artist: "Alina Szapocznikow",
+		description:
+			"Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
+		url: "https://i.imgur.com/AlHTAdDm.jpg",
+		alt: "The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.",
+	},
+	{
+		name: "Terracotta Army",
+		artist: "Unknown Artist",
+		description:
+			"The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.",
+		url: "https://i.imgur.com/HMFmH6m.jpg",
+		alt: "12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.",
+	},
+	{
+		name: "Lunar Landscape",
+		artist: "Louise Nevelson",
+		description:
+			"Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.",
+		url: "https://i.imgur.com/rN7hY6om.jpg",
+		alt: "A black matte sculpture where the individual elements are initially indistinguishable.",
+	},
+	{
+		name: "Aureole",
+		artist: "Ranjani Shettar",
+		description:
+			'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
+		url: "https://i.imgur.com/okTpbHhm.jpg",
+		alt: "A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.",
+	},
+	{
+		name: "Hippos",
+		artist: "Taipei Zoo",
+		description:
+			"The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.",
+		url: "https://i.imgur.com/6o5Vuyu.jpg",
+		alt: "A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.",
+	},
+];
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 10px;
+}
+.Page > * {
+	float: left;
+	width: 50%;
+	padding: 10px;
+}
+h2 {
+	margin-top: 10px;
+	margin-bottom: 0;
+}
+h3 {
+	margin-top: 5px;
+	font-weight: normal;
+	font-size: 100%;
+}
+img {
+	width: 120px;
+	height: 120px;
+}
+```
+
+Notice how `hasPrev` and `hasNext` are used _both_ for the returned JSX and inside the event handlers! This handy pattern works because event handler functions ["close over"](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures) any variables declared while rendering.
+
+</Solution>
+
+#### Fix stuck form inputs
+
+When you type into the input fields, nothing appears. It's like the input values are "stuck" with empty strings. The `value` of the first `<input>` is set to always match the `firstName` variable, and the `value` for the second `<input>` is set to always match the `lastName` variable. This is correct. Both inputs have `onChange` event handlers, which try to update the variables based on the latest user input (`e.target.value`). However, the variables don't seem to "remember" their values between re-renders. Fix this by using state variables instead.
+
+```js
+export default function Form() {
+	let firstName = "";
+	let lastName = "";
+
+	function handleFirstNameChange(e) {
+		firstName = e.target.value;
+	}
+
+	function handleLastNameChange(e) {
+		lastName = e.target.value;
+	}
+
+	function handleReset() {
+		firstName = "";
+		lastName = "";
+	}
+
+	return (
+		<form onSubmit={(e) => e.preventDefault()}>
+			<input
+				placeholder="First name"
+				value={firstName}
+				onChange={handleFirstNameChange}
+			/>
+			<input
+				placeholder="Last name"
+				value={lastName}
+				onChange={handleLastNameChange}
+			/>
+			<h1>
+				Hi, {firstName} {lastName}
+			</h1>
+			<button on_click={handleReset}>Reset</button>
+		</form>
+	);
+}
+```
+
+```css
+h1 {
+	margin-top: 10px;
+}
+```
+
+<Solution>
+
+First, import `useState` from React. Then replace `firstName` and `lastName` with state variables declared by calling `useState`. Finally, replace every `firstName = ...` assignment with `setFirstName(...)`, and do the same for `lastName`. Don't forget to update `handleReset` too so that the reset button works.
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [firstName, setFirstName] = useState("");
+	const [lastName, setLastName] = useState("");
+
+	function handleFirstNameChange(e) {
+		setFirstName(e.target.value);
+	}
+
+	function handleLastNameChange(e) {
+		setLastName(e.target.value);
+	}
+
+	function handleReset() {
+		setFirstName("");
+		setLastName("");
+	}
+
+	return (
+		<form onSubmit={(e) => e.preventDefault()}>
+			<input
+				placeholder="First name"
+				value={firstName}
+				onChange={handleFirstNameChange}
+			/>
+			<input
+				placeholder="Last name"
+				value={lastName}
+				onChange={handleLastNameChange}
+			/>
+			<h1>
+				Hi, {firstName} {lastName}
+			</h1>
+			<button on_click={handleReset}>Reset</button>
+		</form>
+	);
+}
+```
+
+```css
+h1 {
+	margin-top: 10px;
+}
+```
+
+</Solution>
+
+#### Fix a crash
+
+Here is a small form that is supposed to let the user leave some feedback. When the feedback is submitted, it's supposed to display a thank-you message. However, it crashes with an error message saying "Rendered fewer hooks than expected". Can you spot the mistake and fix it?
+
+<Hint>
+
+Are there any limitations on _where_ Hooks may be called? Does this component break any rules? Check if there are any comments disabling the linter checks--this is where the bugs often hide!
+
+</Hint>
+
+```js
+import { useState } from "react";
+
+export default function FeedbackForm() {
+	const [isSent, setIsSent] = useState(false);
+	if (isSent) {
+		return <h1>Thank you!</h1>;
+	} else {
+		// eslint-disable-next-line
+		const [message, setMessage] = useState("");
+		return (
+			<form
+				onSubmit={(e) => {
+					e.preventDefault();
+					alert(`Sending: "${message}"`);
+					setIsSent(true);
+				}}
+			>
+				<textarea
+					placeholder="Message"
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+				<br />
+				<button type="submit">Send</button>
+			</form>
+		);
+	}
+}
+```
+
+<Solution>
+
+Hooks can only be called at the top level of the component function. Here, the first `isSent` definition follows this rule, but the `message` definition is nested in a condition.
+
+Move it out of the condition to fix the issue:
+
+```js
+import { useState } from "react";
+
+export default function FeedbackForm() {
+	const [isSent, setIsSent] = useState(false);
+	const [message, setMessage] = useState("");
+
+	if (isSent) {
+		return <h1>Thank you!</h1>;
+	} else {
+		return (
+			<form
+				onSubmit={(e) => {
+					e.preventDefault();
+					alert(`Sending: "${message}"`);
+					setIsSent(true);
+				}}
+			>
+				<textarea
+					placeholder="Message"
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+				<br />
+				<button type="submit">Send</button>
+			</form>
+		);
+	}
+}
+```
+
+Remember, Hooks must be called unconditionally and always in the same order!
+
+You could also remove the unnecessary `else` branch to reduce the nesting. However, it's still important that all calls to Hooks happen _before_ the first `return`.
+
+```js
+import { useState } from "react";
+
+export default function FeedbackForm() {
+	const [isSent, setIsSent] = useState(false);
+	const [message, setMessage] = useState("");
+
+	if (isSent) {
+		return <h1>Thank you!</h1>;
+	}
+
+	return (
+		<form
+			onSubmit={(e) => {
+				e.preventDefault();
+				alert(`Sending: "${message}"`);
+				setIsSent(true);
+			}}
+		>
+			<textarea
+				placeholder="Message"
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+			<br />
+			<button type="submit">Send</button>
+		</form>
+	);
+}
+```
+
+Try moving the second `useState` call after the `if` condition and notice how this breaks it again.
+
+If your linter is [configured for React](/learn/editor-setup#linting), you should see a lint error when you make a mistake like this. If you don't see an error when you try the faulty code locally, you need to set up linting for your project.
+
+</Solution>
+
+#### Remove unnecessary state
+
+When the button is clicked, this example should ask for the user's name and then display an alert greeting them. You tried to use state to keep the name, but for some reason it always shows "Hello, !".
+
+To fix this code, remove the unnecessary state variable. (We will discuss about [why this didn't work](/learn/state-as-a-snapshot) later.)
+
+Can you explain why this state variable was unnecessary?
+
+```js
+import { useState } from "react";
+
+export default function FeedbackForm() {
+	const [name, setName] = useState("");
+
+	function handleClick() {
+		setName(prompt("What is your name?"));
+		alert(`Hello, ${name}!`);
+	}
+
+	return <button on_click={handleClick}>Greet</button>;
+}
+```
+
+<Solution>
+
+Here is a fixed version that uses a regular `name` variable declared in the function that needs it:
+
+```js
+import { useState } from "react";
+
+export default function FeedbackForm() {
+	function handleClick() {
+		const name = prompt("What is your name?");
+		alert(`Hello, ${name}!`);
+	}
+
+	return <button on_click={handleClick}>Greet</button>;
+}
+```
+
+A state variable is only necessary to keep information between re-renders of a component. Within a single event handler, a regular variable will do fine. Don't introduce state variables when a regular variable works well.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/state-as-a-snapshot.md b/docs/src/learn/state-as-a-snapshot.md
new file mode 100644
index 000000000..0fe725ed7
--- /dev/null
+++ b/docs/src/learn/state-as-a-snapshot.md
@@ -0,0 +1,472 @@
+---
+title: State as a Snapshot 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+State variables might look like regular JavaScript variables that you can read and write to. However, state behaves more like a snapshot. Setting it does not change the state variable you already have, but instead triggers a re-render.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How setting state triggers re-renders
+    -   When and how state updates
+    -   Why state does not update immediately after you set it
+    -   How event handlers access a "snapshot" of the state
+
+## Setting state triggers renders
+
+You might think of your user interface as changing directly in response to the user event like a click. In React, it works a little differently from this mental model. On the previous page, you saw that [setting state requests a re-render](/learn/render-and-commit#step-1-trigger-a-render) from React. This means that for an interface to react to the event, you need to _update the state_.
+
+In this example, when you press "send", `setIsSent(true)` tells React to re-render the UI:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [isSent, setIsSent] = useState(false);
+	const [message, setMessage] = useState("Hi!");
+	if (isSent) {
+		return <h1>Your message is on its way!</h1>;
+	}
+	return (
+		<form
+			onSubmit={(e) => {
+				e.preventDefault();
+				setIsSent(true);
+				sendMessage(message);
+			}}
+		>
+			<textarea
+				placeholder="Message"
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+			<button type="submit">Send</button>
+		</form>
+	);
+}
+
+function sendMessage(message) {
+	// ...
+}
+```
+
+```css
+label,
+textarea {
+	margin-bottom: 10px;
+	display: block;
+}
+```
+
+Here's what happens when you click the button:
+
+1. The `onSubmit` event handler executes.
+2. `setIsSent(true)` sets `isSent` to `true` and queues a new render.
+3. React re-renders the component according to the new `isSent` value.
+
+Let's take a closer look at the relationship between state and rendering.
+
+## Rendering takes a snapshot in time
+
+["Rendering"](/learn/render-and-commit#step-2-react-renders-your-components) means that React is calling your component, which is a function. The JSX you return from that function is like a snapshot of the UI in time. Its props, event handlers, and local variables were all calculated **using its state at the time of the render.**
+
+Unlike a photograph or a movie frame, the UI "snapshot" you return is interactive. It includes logic like event handlers that specify what happens in response to inputs. React updates the screen to match this snapshot and connects the event handlers. As a result, pressing a button will trigger the click handler from your JSX.
+
+When React re-renders a component:
+
+1. React calls your function again.
+2. Your function returns a new JSX snapshot.
+3. React then updates the screen to match the snapshot you've returned.
+
+<IllustrationBlock sequential>
+    <Illustration caption="React executing the function" src="/images/docs/illustrations/i_render1.png" />
+    <Illustration caption="Calculating the snapshot" src="/images/docs/illustrations/i_render2.png" />
+    <Illustration caption="Updating the DOM tree" src="/images/docs/illustrations/i_render3.png" />
+</IllustrationBlock>
+
+As a component's memory, state is not like a regular variable that disappears after your function returns. State actually "lives" in React itself--as if on a shelf!--outside of your function. When React calls your component, it gives you a snapshot of the state for that particular render. Your component returns a snapshot of the UI with a fresh set of props and event handlers in its JSX, all calculated **using the state values from that render!**
+
+<IllustrationBlock sequential>
+  <Illustration caption="You tell React to update the state" src="/images/docs/illustrations/i_state-snapshot1.png" />
+  <Illustration caption="React updates the state value" src="/images/docs/illustrations/i_state-snapshot2.png" />
+  <Illustration caption="React passes a snapshot of the state value into the component" src="/images/docs/illustrations/i_state-snapshot3.png" />
+</IllustrationBlock>
+
+Here's a little experiment to show you how this works. In this example, you might expect that clicking the "+3" button would increment the counter three times because it calls `setNumber(number + 1)` three times.
+
+See what happens when you click the "+3" button:
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [number, setNumber] = useState(0);
+
+	return (
+		<>
+			<h1>{number}</h1>
+			<button
+				on_click={() => {
+					setNumber(number + 1);
+					setNumber(number + 1);
+					setNumber(number + 1);
+				}}
+			>
+				+3
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: inline-block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: inline-block;
+	margin: 10px;
+	width: 30px;
+	text-align: center;
+}
+```
+
+Notice that `number` only increments once per click!
+
+**Setting state only changes it for the _next_ render.** During the first render, `number` was `0`. This is why, in _that render's_ `on_click` handler, the value of `number` is still `0` even after `setNumber(number + 1)` was called:
+
+```js
+<button
+	on_click={() => {
+		setNumber(number + 1);
+		setNumber(number + 1);
+		setNumber(number + 1);
+	}}
+>
+	+3
+</button>
+```
+
+Here is what this button's click handler tells React to do:
+
+1. `setNumber(number + 1)`: `number` is `0` so `setNumber(0 + 1)`.
+    - React prepares to change `number` to `1` on the next render.
+2. `setNumber(number + 1)`: `number` is `0` so `setNumber(0 + 1)`.
+    - React prepares to change `number` to `1` on the next render.
+3. `setNumber(number + 1)`: `number` is `0` so `setNumber(0 + 1)`.
+    - React prepares to change `number` to `1` on the next render.
+
+Even though you called `setNumber(number + 1)` three times, in _this render's_ event handler `number` is always `0`, so you set the state to `1` three times. This is why, after your event handler finishes, React re-renders the component with `number` equal to `1` rather than `3`.
+
+You can also visualize this by mentally substituting state variables with their values in your code. Since the `number` state variable is `0` for _this render_, its event handler looks like this:
+
+```js
+<button
+	on_click={() => {
+		setNumber(0 + 1);
+		setNumber(0 + 1);
+		setNumber(0 + 1);
+	}}
+>
+	+3
+</button>
+```
+
+For the next render, `number` is `1`, so _that render's_ click handler looks like this:
+
+```js
+<button
+	on_click={() => {
+		setNumber(1 + 1);
+		setNumber(1 + 1);
+		setNumber(1 + 1);
+	}}
+>
+	+3
+</button>
+```
+
+This is why clicking the button again will set the counter to `2`, then to `3` on the next click, and so on.
+
+## State over time
+
+Well, that was fun. Try to guess what clicking this button will alert:
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [number, setNumber] = useState(0);
+
+	return (
+		<>
+			<h1>{number}</h1>
+			<button
+				on_click={() => {
+					setNumber(number + 5);
+					alert(number);
+				}}
+			>
+				+5
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: inline-block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: inline-block;
+	margin: 10px;
+	width: 30px;
+	text-align: center;
+}
+```
+
+If you use the substitution method from before, you can guess that the alert shows "0":
+
+```js
+setNumber(0 + 5);
+alert(0);
+```
+
+But what if you put a timer on the alert, so it only fires _after_ the component re-rendered? Would it say "0" or "5"? Have a guess!
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [number, setNumber] = useState(0);
+
+	return (
+		<>
+			<h1>{number}</h1>
+			<button
+				on_click={() => {
+					setNumber(number + 5);
+					setTimeout(() => {
+						alert(number);
+					}, 3000);
+				}}
+			>
+				+5
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: inline-block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: inline-block;
+	margin: 10px;
+	width: 30px;
+	text-align: center;
+}
+```
+
+Surprised? If you use the substitution method, you can see the "snapshot" of the state passed to the alert.
+
+```js
+setNumber(0 + 5);
+setTimeout(() => {
+	alert(0);
+}, 3000);
+```
+
+The state stored in React may have changed by the time the alert runs, but it was scheduled using a snapshot of the state at the time the user interacted with it!
+
+**A state variable's value never changes within a render,** even if its event handler's code is asynchronous. Inside _that render's_ `on_click`, the value of `number` continues to be `0` even after `setNumber(number + 5)` was called. Its value was "fixed" when React "took the snapshot" of the UI by calling your component.
+
+Here is an example of how that makes your event handlers less prone to timing mistakes. Below is a form that sends a message with a five-second delay. Imagine this scenario:
+
+1. You press the "Send" button, sending "Hello" to Alice.
+2. Before the five-second delay ends, you change the value of the "To" field to "Bob".
+
+What do you expect the `alert` to display? Would it display, "You said Hello to Alice"? Or would it display, "You said Hello to Bob"? Make a guess based on what you know, and then try it:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [to, setTo] = useState("Alice");
+	const [message, setMessage] = useState("Hello");
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		setTimeout(() => {
+			alert(`You said ${message} to ${to}`);
+		}, 5000);
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<label>
+				To:{" "}
+				<select value={to} onChange={(e) => setTo(e.target.value)}>
+					<option value="Alice">Alice</option>
+					<option value="Bob">Bob</option>
+				</select>
+			</label>
+			<textarea
+				placeholder="Message"
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+			<button type="submit">Send</button>
+		</form>
+	);
+}
+```
+
+```css
+label,
+textarea {
+	margin-bottom: 10px;
+	display: block;
+}
+```
+
+**React keeps the state values "fixed" within one render's event handlers.** You don't need to worry whether the state has changed while the code is running.
+
+But what if you wanted to read the latest state before a re-render? You'll want to use a [state updater function](/learn/queueing-a-series-of-state-updates), covered on the next page!
+
+<Recap>
+
+-   Setting state requests a new render.
+-   React stores state outside of your component, as if on a shelf.
+-   When you call `useState`, React gives you a snapshot of the state _for that render_.
+-   Variables and event handlers don't "survive" re-renders. Every render has its own event handlers.
+-   Every render (and functions inside it) will always "see" the snapshot of the state that React gave to _that_ render.
+-   You can mentally substitute state in event handlers, similarly to how you think about the rendered JSX.
+-   Event handlers created in the past have the state values from the render in which they were created.
+
+</Recap>
+
+<Challenges>
+
+#### Implement a traffic light
+
+Here is a crosswalk light component that toggles when the button is pressed:
+
+```js
+import { useState } from "react";
+
+export default function TrafficLight() {
+	const [walk, setWalk] = useState(true);
+
+	function handleClick() {
+		setWalk(!walk);
+	}
+
+	return (
+		<>
+			<button on_click={handleClick}>
+				Change to {walk ? "Stop" : "Walk"}
+			</button>
+			<h1
+				style={{
+					color: walk ? "darkgreen" : "darkred",
+				}}
+			>
+				{walk ? "Walk" : "Stop"}
+			</h1>
+		</>
+	);
+}
+```
+
+```css
+h1 {
+	margin-top: 20px;
+}
+```
+
+Add an `alert` to the click handler. When the light is green and says "Walk", clicking the button should say "Stop is next". When the light is red and says "Stop", clicking the button should say "Walk is next".
+
+Does it make a difference whether you put the `alert` before or after the `setWalk` call?
+
+<Solution>
+
+Your `alert` should look like this:
+
+```js
+import { useState } from "react";
+
+export default function TrafficLight() {
+	const [walk, setWalk] = useState(true);
+
+	function handleClick() {
+		setWalk(!walk);
+		alert(walk ? "Stop is next" : "Walk is next");
+	}
+
+	return (
+		<>
+			<button on_click={handleClick}>
+				Change to {walk ? "Stop" : "Walk"}
+			</button>
+			<h1
+				style={{
+					color: walk ? "darkgreen" : "darkred",
+				}}
+			>
+				{walk ? "Walk" : "Stop"}
+			</h1>
+		</>
+	);
+}
+```
+
+```css
+h1 {
+	margin-top: 20px;
+}
+```
+
+Whether you put it before or after the `setWalk` call makes no difference. That render's value of `walk` is fixed. Calling `setWalk` will only change it for the _next_ render, but will not affect the event handler from the previous render.
+
+This line might seem counter-intuitive at first:
+
+```js
+alert(walk ? "Stop is next" : "Walk is next");
+```
+
+But it makes sense if you read it as: "If the traffic light shows 'Walk now', the message should say 'Stop is next.'" The `walk` variable inside your event handler matches that render's value of `walk` and does not change.
+
+You can verify that this is correct by applying the substitution method. When `walk` is `true`, you get:
+
+```js
+<button on_click={() => {
+  setWalk(false);
+  alert('Stop is next');
+}}>
+  Change to Stop
+</button>
+<h1 style={{color: 'darkgreen'}}>
+  Walk
+</h1>
+```
+
+So clicking "Change to Stop" queues a render with `walk` set to `false`, and alerts "Stop is next".
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/synchronizing-with-effects.md b/docs/src/learn/synchronizing-with-effects.md
new file mode 100644
index 000000000..7ebfeb240
--- /dev/null
+++ b/docs/src/learn/synchronizing-with-effects.md
@@ -0,0 +1,1550 @@
+---
+title: "Synchronizing with Effects 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Some components need to synchronize with external systems. For example, you might want to control a non-React component based on the React state, set up a server connection, or send an analytics log when a component appears on the screen. _Effects_ let you run some code after rendering so that you can synchronize your component with some system outside of React.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What Effects are
+    -   How Effects are different from events
+    -   How to declare an Effect in your component
+    -   How to skip re-running an Effect unnecessarily
+    -   Why Effects run twice in development and how to fix them
+
+## What are Effects and how are they different from events?
+
+Before getting to Effects, you need to be familiar with two types of logic inside React components:
+
+-   **Rendering code** (introduced in [Describing the UI](/learn/describing-the-ui)) lives at the top level of your component. This is where you take the props and state, transform them, and return the JSX you want to see on the screen. [Rendering code must be pure.](/learn/keeping-components-pure) Like a math formula, it should only _calculate_ the result, but not do anything else.
+
+-   **Event handlers** (introduced in [Adding Interactivity](/learn/adding-interactivity)) are nested functions inside your components that _do_ things rather than just calculate them. An event handler might update an input field, submit an HTTP POST request to buy a product, or navigate the user to another screen. Event handlers contain ["side effects"](<https://en.wikipedia.org/wiki/Side_effect_(computer_science)>) (they change the program's state) caused by a specific user action (for example, a button click or typing).
+
+Sometimes this isn't enough. Consider a `ChatRoom` component that must connect to the chat server whenever it's visible on the screen. Connecting to a server is not a pure calculation (it's a side effect) so it can't happen during rendering. However, there is no single particular event like a click that causes `ChatRoom` to be displayed.
+
+**_Effects_ let you specify side effects that are caused by rendering itself, rather than by a particular event.** Sending a message in the chat is an _event_ because it is directly caused by the user clicking a specific button. However, setting up a server connection is an _Effect_ because it should happen no matter which interaction caused the component to appear. Effects run at the end of a [commit](/learn/render-and-commit) after the screen updates. This is a good time to synchronize the React components with some external system (like network or a third-party library).
+
+<Note>
+
+Here and later in this text, capitalized "Effect" refers to the React-specific definition above, i.e. a side effect caused by rendering. To refer to the broader programming concept, we'll say "side effect".
+
+</Note>
+
+## You might not need an Effect
+
+**Don't rush to add Effects to your components.** Keep in mind that Effects are typically used to "step out" of your React code and synchronize with some _external_ system. This includes browser APIs, third-party widgets, network, and so on. If your Effect only adjusts some state based on other state, [you might not need an Effect.](/learn/you-might-not-need-an-effect)
+
+## How to write an Effect
+
+To write an Effect, follow these three steps:
+
+1. **Declare an Effect.** By default, your Effect will run after every render.
+2. **Specify the Effect dependencies.** Most Effects should only re-run _when needed_ rather than after every render. For example, a fade-in animation should only trigger when a component appears. Connecting and disconnecting to a chat room should only happen when the component appears and disappears, or when the chat room changes. You will learn how to control this by specifying _dependencies._
+3. **Add cleanup if needed.** Some Effects need to specify how to stop, undo, or clean up whatever they were doing. For example, "connect" needs "disconnect", "subscribe" needs "unsubscribe", and "fetch" needs either "cancel" or "ignore". You will learn how to do this by returning a _cleanup function_.
+
+Let's look at each of these steps in detail.
+
+### Step 1: Declare an Effect
+
+To declare an Effect in your component, import the [`useEffect` Hook](/reference/react/useEffect) from React:
+
+```js
+import { useEffect } from "react";
+```
+
+Then, call it at the top level of your component and put some code inside your Effect:
+
+```js
+function MyComponent() {
+	useEffect(() => {
+		// Code here will run after *every* render
+	});
+	return <div />;
+}
+```
+
+Every time your component renders, React will update the screen _and then_ run the code inside `useEffect`. In other words, **`useEffect` "delays" a piece of code from running until that render is reflected on the screen.**
+
+Let's see how you can use an Effect to synchronize with an external system. Consider a `<VideoPlayer>` React component. It would be nice to control whether it's playing or paused by passing an `isPlaying` prop to it:
+
+```js
+<VideoPlayer isPlaying={isPlaying} />
+```
+
+Your custom `VideoPlayer` component renders the built-in browser [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video) tag:
+
+```js
+function VideoPlayer({ src, isPlaying }) {
+	// TODO: do something with isPlaying
+	return <video src={src} />;
+}
+```
+
+However, the browser `<video>` tag does not have an `isPlaying` prop. The only way to control it is to manually call the [`play()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play) and [`pause()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/pause) methods on the DOM element. **You need to synchronize the value of `isPlaying` prop, which tells whether the video _should_ currently be playing, with calls like `play()` and `pause()`.**
+
+We'll need to first [get a ref](/learn/manipulating-the-dom-with-refs) to the `<video>` DOM node.
+
+You might be tempted to try to call `play()` or `pause()` during rendering, but that isn't correct:
+
+```js
+import { useState, useRef, useEffect } from "react";
+
+function VideoPlayer({ src, isPlaying }) {
+	const ref = useRef(null);
+
+	if (isPlaying) {
+		ref.current.play(); // Calling these while rendering isn't allowed.
+	} else {
+		ref.current.pause(); // Also, this crashes.
+	}
+
+	return <video ref={ref} src={src} loop playsInline />;
+}
+
+export default function App() {
+	const [isPlaying, setIsPlaying] = useState(false);
+	return (
+		<>
+			<button on_click={() => setIsPlaying(!isPlaying)}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<VideoPlayer
+				isPlaying={isPlaying}
+				src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+			/>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+video {
+	width: 250px;
+}
+```
+
+The reason this code isn't correct is that it tries to do something with the DOM node during rendering. In React, [rendering should be a pure calculation](/learn/keeping-components-pure) of JSX and should not contain side effects like modifying the DOM.
+
+Moreover, when `VideoPlayer` is called for the first time, its DOM does not exist yet! There isn't a DOM node yet to call `play()` or `pause()` on, because React doesn't know what DOM to create until you return the JSX.
+
+The solution here is to **wrap the side effect with `useEffect` to move it out of the rendering calculation:**
+
+```js
+import { useEffect, useRef } from "react";
+
+function VideoPlayer({ src, isPlaying }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		if (isPlaying) {
+			ref.current.play();
+		} else {
+			ref.current.pause();
+		}
+	});
+
+	return <video ref={ref} src={src} loop playsInline />;
+}
+```
+
+By wrapping the DOM update in an Effect, you let React update the screen first. Then your Effect runs.
+
+When your `VideoPlayer` component renders (either the first time or if it re-renders), a few things will happen. First, React will update the screen, ensuring the `<video>` tag is in the DOM with the right props. Then React will run your Effect. Finally, your Effect will call `play()` or `pause()` depending on the value of `isPlaying`.
+
+Press Play/Pause multiple times and see how the video player stays synchronized to the `isPlaying` value:
+
+```js
+import { useState, useRef, useEffect } from "react";
+
+function VideoPlayer({ src, isPlaying }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		if (isPlaying) {
+			ref.current.play();
+		} else {
+			ref.current.pause();
+		}
+	});
+
+	return <video ref={ref} src={src} loop playsInline />;
+}
+
+export default function App() {
+	const [isPlaying, setIsPlaying] = useState(false);
+	return (
+		<>
+			<button on_click={() => setIsPlaying(!isPlaying)}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<VideoPlayer
+				isPlaying={isPlaying}
+				src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+			/>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+video {
+	width: 250px;
+}
+```
+
+In this example, the "external system" you synchronized to React state was the browser media API. You can use a similar approach to wrap legacy non-React code (like jQuery plugins) into declarative React components.
+
+Note that controlling a video player is much more complex in practice. Calling `play()` may fail, the user might play or pause using the built-in browser controls, and so on. This example is very simplified and incomplete.
+
+<Pitfall>
+
+By default, Effects run after _every_ render. This is why code like this will **produce an infinite loop:**
+
+```js
+const [count, setCount] = useState(0);
+useEffect(() => {
+	setCount(count + 1);
+});
+```
+
+Effects run as a _result_ of rendering. Setting state _triggers_ rendering. Setting state immediately in an Effect is like plugging a power outlet into itself. The Effect runs, it sets the state, which causes a re-render, which causes the Effect to run, it sets the state again, this causes another re-render, and so on.
+
+Effects should usually synchronize your components with an _external_ system. If there's no external system and you only want to adjust some state based on other state, [you might not need an Effect.](/learn/you-might-not-need-an-effect)
+
+</Pitfall>
+
+### Step 2: Specify the Effect dependencies
+
+By default, Effects run after _every_ render. Often, this is **not what you want:**
+
+-   Sometimes, it's slow. Synchronizing with an external system is not always instant, so you might want to skip doing it unless it's necessary. For example, you don't want to reconnect to the chat server on every keystroke.
+-   Sometimes, it's wrong. For example, you don't want to trigger a component fade-in animation on every keystroke. The animation should only play once when the component appears for the first time.
+
+To demonstrate the issue, here is the previous example with a few `console.log` calls and a text input that updates the parent component's state. Notice how typing causes the Effect to re-run:
+
+```js
+import { useState, useRef, useEffect } from "react";
+
+function VideoPlayer({ src, isPlaying }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		if (isPlaying) {
+			console.log("Calling video.play()");
+			ref.current.play();
+		} else {
+			console.log("Calling video.pause()");
+			ref.current.pause();
+		}
+	});
+
+	return <video ref={ref} src={src} loop playsInline />;
+}
+
+export default function App() {
+	const [isPlaying, setIsPlaying] = useState(false);
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={() => setIsPlaying(!isPlaying)}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<VideoPlayer
+				isPlaying={isPlaying}
+				src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+			/>
+		</>
+	);
+}
+```
+
+```css
+input,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+video {
+	width: 250px;
+}
+```
+
+You can tell React to **skip unnecessarily re-running the Effect** by specifying an array of _dependencies_ as the second argument to the `useEffect` call. Start by adding an empty `[]` array to the above example on line 14:
+
+```js
+useEffect(() => {
+	// ...
+}, []);
+```
+
+You should see an error saying `React Hook useEffect has a missing dependency: 'isPlaying'`:
+
+```js
+import { useState, useRef, useEffect } from "react";
+
+function VideoPlayer({ src, isPlaying }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		if (isPlaying) {
+			console.log("Calling video.play()");
+			ref.current.play();
+		} else {
+			console.log("Calling video.pause()");
+			ref.current.pause();
+		}
+	}, []); // This causes an error
+
+	return <video ref={ref} src={src} loop playsInline />;
+}
+
+export default function App() {
+	const [isPlaying, setIsPlaying] = useState(false);
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={() => setIsPlaying(!isPlaying)}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<VideoPlayer
+				isPlaying={isPlaying}
+				src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+			/>
+		</>
+	);
+}
+```
+
+```css
+input,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+video {
+	width: 250px;
+}
+```
+
+The problem is that the code inside of your Effect _depends on_ the `isPlaying` prop to decide what to do, but this dependency was not explicitly declared. To fix this issue, add `isPlaying` to the dependency array:
+
+```js
+useEffect(() => {
+	if (isPlaying) {
+		// It's used here...
+		// ...
+	} else {
+		// ...
+	}
+}, [isPlaying]); // ...so it must be declared here!
+```
+
+Now all dependencies are declared, so there is no error. Specifying `[isPlaying]` as the dependency array tells React that it should skip re-running your Effect if `isPlaying` is the same as it was during the previous render. With this change, typing into the input doesn't cause the Effect to re-run, but pressing Play/Pause does:
+
+```js
+import { useState, useRef, useEffect } from "react";
+
+function VideoPlayer({ src, isPlaying }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		if (isPlaying) {
+			console.log("Calling video.play()");
+			ref.current.play();
+		} else {
+			console.log("Calling video.pause()");
+			ref.current.pause();
+		}
+	}, [isPlaying]);
+
+	return <video ref={ref} src={src} loop playsInline />;
+}
+
+export default function App() {
+	const [isPlaying, setIsPlaying] = useState(false);
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={() => setIsPlaying(!isPlaying)}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<VideoPlayer
+				isPlaying={isPlaying}
+				src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+			/>
+		</>
+	);
+}
+```
+
+```css
+input,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+video {
+	width: 250px;
+}
+```
+
+The dependency array can contain multiple dependencies. React will only skip re-running the Effect if _all_ of the dependencies you specify have exactly the same values as they had during the previous render. React compares the dependency values using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. See the [`useEffect` reference](/reference/react/useEffect#reference) for details.
+
+**Notice that you can't "choose" your dependencies.** You will get a lint error if the dependencies you specified don't match what React expects based on the code inside your Effect. This helps catch many bugs in your code. If you don't want some code to re-run, [_edit the Effect code itself_ to not "need" that dependency.](/learn/lifecycle-of-reactive-effects#what-to-do-when-you-dont-want-to-re-synchronize)
+
+<Pitfall>
+
+The behaviors without the dependency array and with an _empty_ `[]` dependency array are different:
+
+```js
+useEffect(() => {
+	// This runs after every render
+});
+
+useEffect(() => {
+	// This runs only on mount (when the component appears)
+}, []);
+
+useEffect(() => {
+	// This runs on mount *and also* if either a or b have changed since the last render
+}, [a, b]);
+```
+
+We'll take a close look at what "mount" means in the next step.
+
+</Pitfall>
+
+<DeepDive>
+
+#### Why was the ref omitted from the dependency array?
+
+This Effect uses _both_ `ref` and `isPlaying`, but only `isPlaying` is declared as a dependency:
+
+```js
+function VideoPlayer({ src, isPlaying }) {
+  const ref = useRef(null);
+  useEffect(() => {
+    if (isPlaying) {
+      ref.current.play();
+    } else {
+      ref.current.pause();
+    }
+  }, [isPlaying]);
+```
+
+This is because the `ref` object has a _stable identity:_ React guarantees [you'll always get the same object](/reference/react/useRef#returns) from the same `useRef` call on every render. It never changes, so it will never by itself cause the Effect to re-run. Therefore, it does not matter whether you include it or not. Including it is fine too:
+
+```js
+function VideoPlayer({ src, isPlaying }) {
+  const ref = useRef(null);
+  useEffect(() => {
+    if (isPlaying) {
+      ref.current.play();
+    } else {
+      ref.current.pause();
+    }
+  }, [isPlaying, ref]);
+```
+
+The [`set` functions](/reference/react/useState#setstate) returned by `useState` also have stable identity, so you will often see them omitted from the dependencies too. If the linter lets you omit a dependency without errors, it is safe to do.
+
+Omitting always-stable dependencies only works when the linter can "see" that the object is stable. For example, if `ref` was passed from a parent component, you would have to specify it in the dependency array. However, this is good because you can't know whether the parent component always passes the same ref, or passes one of several refs conditionally. So your Effect _would_ depend on which ref is passed.
+
+</DeepDive>
+
+### Step 3: Add cleanup if needed
+
+Consider a different example. You're writing a `ChatRoom` component that needs to connect to the chat server when it appears. You are given a `createConnection()` API that returns an object with `connect()` and `disconnect()` methods. How do you keep the component connected while it is displayed to the user?
+
+Start by writing the Effect logic:
+
+```js
+useEffect(() => {
+	const connection = createConnection();
+	connection.connect();
+});
+```
+
+It would be slow to connect to the chat after every re-render, so you add the dependency array:
+
+```js
+useEffect(() => {
+	const connection = createConnection();
+	connection.connect();
+}, []);
+```
+
+**The code inside the Effect does not use any props or state, so your dependency array is `[]` (empty). This tells React to only run this code when the component "mounts", i.e. appears on the screen for the first time.**
+
+Let's try running this code:
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+export default function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection();
+		connection.connect();
+	}, []);
+	return <h1>Welcome to the chat!</h1>;
+}
+```
+
+```js
+export function createConnection() {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log("✅ Connecting...");
+		},
+		disconnect() {
+			console.log("❌ Disconnected.");
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+This Effect only runs on mount, so you might expect `"✅ Connecting..."` to be printed once in the console. **However, if you check the console, `"✅ Connecting..."` gets printed twice. Why does it happen?**
+
+Imagine the `ChatRoom` component is a part of a larger app with many different screens. The user starts their journey on the `ChatRoom` page. The component mounts and calls `connection.connect()`. Then imagine the user navigates to another screen--for example, to the Settings page. The `ChatRoom` component unmounts. Finally, the user clicks Back and `ChatRoom` mounts again. This would set up a second connection--but the first connection was never destroyed! As the user navigates across the app, the connections would keep piling up.
+
+Bugs like this are easy to miss without extensive manual testing. To help you spot them quickly, in development React remounts every component once immediately after its initial mount.
+
+Seeing the `"✅ Connecting..."` log twice helps you notice the real issue: your code doesn't close the connection when the component unmounts.
+
+To fix the issue, return a _cleanup function_ from your Effect:
+
+```js
+useEffect(() => {
+	const connection = createConnection();
+	connection.connect();
+	return () => {
+		connection.disconnect();
+	};
+}, []);
+```
+
+React will call your cleanup function each time before the Effect runs again, and one final time when the component unmounts (gets removed). Let's see what happens when the cleanup function is implemented:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+export default function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection();
+		connection.connect();
+		return () => connection.disconnect();
+	}, []);
+	return <h1>Welcome to the chat!</h1>;
+}
+```
+
+```js
+export function createConnection() {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log("✅ Connecting...");
+		},
+		disconnect() {
+			console.log("❌ Disconnected.");
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+Now you get three console logs in development:
+
+1. `"✅ Connecting..."`
+2. `"❌ Disconnected."`
+3. `"✅ Connecting..."`
+
+**This is the correct behavior in development.** By remounting your component, React verifies that navigating away and back would not break your code. Disconnecting and then connecting again is exactly what should happen! When you implement the cleanup well, there should be no user-visible difference between running the Effect once vs running it, cleaning it up, and running it again. There's an extra connect/disconnect call pair because React is probing your code for bugs in development. This is normal--don't try to make it go away!
+
+**In production, you would only see `"✅ Connecting..."` printed once.** Remounting components only happens in development to help you find Effects that need cleanup. You can turn off [Strict Mode](/reference/react/StrictMode) to opt out of the development behavior, but we recommend keeping it on. This lets you find many bugs like the one above.
+
+## How to handle the Effect firing twice in development?
+
+React intentionally remounts your components in development to find bugs like in the last example. **The right question isn't "how to run an Effect once", but "how to fix my Effect so that it works after remounting".**
+
+Usually, the answer is to implement the cleanup function. The cleanup function should stop or undo whatever the Effect was doing. The rule of thumb is that the user shouldn't be able to distinguish between the Effect running once (as in production) and a _setup → cleanup → setup_ sequence (as you'd see in development).
+
+Most of the Effects you'll write will fit into one of the common patterns below.
+
+### Controlling non-React widgets
+
+Sometimes you need to add UI widgets that aren't written to React. For example, let's say you're adding a map component to your page. It has a `setZoomLevel()` method, and you'd like to keep the zoom level in sync with a `zoomLevel` state variable in your React code. Your Effect would look similar to this:
+
+```js
+useEffect(() => {
+	const map = mapRef.current;
+	map.setZoomLevel(zoomLevel);
+}, [zoomLevel]);
+```
+
+Note that there is no cleanup needed in this case. In development, React will call the Effect twice, but this is not a problem because calling `setZoomLevel` twice with the same value does not do anything. It may be slightly slower, but this doesn't matter because it won't remount needlessly in production.
+
+Some APIs may not allow you to call them twice in a row. For example, the [`showModal`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/showModal) method of the built-in [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement) element throws if you call it twice. Implement the cleanup function and make it close the dialog:
+
+```js
+useEffect(() => {
+	const dialog = dialogRef.current;
+	dialog.showModal();
+	return () => dialog.close();
+}, []);
+```
+
+In development, your Effect will call `showModal()`, then immediately `close()`, and then `showModal()` again. This has the same user-visible behavior as calling `showModal()` once, as you would see in production.
+
+### Subscribing to events
+
+If your Effect subscribes to something, the cleanup function should unsubscribe:
+
+```js
+useEffect(() => {
+	function handleScroll(e) {
+		console.log(window.scrollX, window.scrollY);
+	}
+	window.addEventListener("scroll", handleScroll);
+	return () => window.removeEventListener("scroll", handleScroll);
+}, []);
+```
+
+In development, your Effect will call `addEventListener()`, then immediately `removeEventListener()`, and then `addEventListener()` again with the same handler. So there would be only one active subscription at a time. This has the same user-visible behavior as calling `addEventListener()` once, as in production.
+
+### Triggering animations
+
+If your Effect animates something in, the cleanup function should reset the animation to the initial values:
+
+```js
+useEffect(() => {
+	const node = ref.current;
+	node.style.opacity = 1; // Trigger the animation
+	return () => {
+		node.style.opacity = 0; // Reset to the initial value
+	};
+}, []);
+```
+
+In development, opacity will be set to `1`, then to `0`, and then to `1` again. This should have the same user-visible behavior as setting it to `1` directly, which is what would happen in production. If you use a third-party animation library with support for tweening, your cleanup function should reset the timeline to its initial state.
+
+### Fetching data
+
+If your Effect fetches something, the cleanup function should either [abort the fetch](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) or ignore its result:
+
+```js
+useEffect(() => {
+	let ignore = false;
+
+	async function startFetching() {
+		const json = await fetchTodos(userId);
+		if (!ignore) {
+			setTodos(json);
+		}
+	}
+
+	startFetching();
+
+	return () => {
+		ignore = true;
+	};
+}, [userId]);
+```
+
+You can't "undo" a network request that already happened, but your cleanup function should ensure that the fetch that's _not relevant anymore_ does not keep affecting your application. If the `userId` changes from `'Alice'` to `'Bob'`, cleanup ensures that the `'Alice'` response is ignored even if it arrives after `'Bob'`.
+
+**In development, you will see two fetches in the Network tab.** There is nothing wrong with that. With the approach above, the first Effect will immediately get cleaned up so its copy of the `ignore` variable will be set to `true`. So even though there is an extra request, it won't affect the state thanks to the `if (!ignore)` check.
+
+**In production, there will only be one request.** If the second request in development is bothering you, the best approach is to use a solution that deduplicates requests and caches their responses between components:
+
+```js
+function TodoList() {
+  const todos = useSomeDataLibrary(`/api/user/${userId}/todos`);
+  // ...
+```
+
+This will not only improve the development experience, but also make your application feel faster. For example, the user pressing the Back button won't have to wait for some data to load again because it will be cached. You can either build such a cache yourself or use one of the many alternatives to manual fetching in Effects.
+
+<DeepDive>
+
+#### What are good alternatives to data fetching in Effects?
+
+Writing `fetch` calls inside Effects is a [popular way to fetch data](https://www.robinwieruch.de/react-hooks-fetch-data/), especially in fully client-side apps. This is, however, a very manual approach and it has significant downsides:
+
+-   **Effects don't run on the server.** This means that the initial server-rendered HTML will only include a loading state with no data. The client computer will have to download all JavaScript and render your app only to discover that now it needs to load the data. This is not very efficient.
+-   **Fetching directly in Effects makes it easy to create "network waterfalls".** You render the parent component, it fetches some data, renders the child components, and then they start fetching their data. If the network is not very fast, this is significantly slower than fetching all data in parallel.
+-   **Fetching directly in Effects usually means you don't preload or cache data.** For example, if the component unmounts and then mounts again, it would have to fetch the data again.
+-   **It's not very ergonomic.** There's quite a bit of boilerplate code involved when writing `fetch` calls in a way that doesn't suffer from bugs like [race conditions.](https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect)
+
+This list of downsides is not specific to React. It applies to fetching data on mount with any library. Like with routing, data fetching is not trivial to do well, so we recommend the following approaches:
+
+-   **If you use a [framework](/learn/start-a-new-react-project#production-grade-react-frameworks), use its built-in data fetching mechanism.** Modern React frameworks have integrated data fetching mechanisms that are efficient and don't suffer from the above pitfalls.
+-   **Otherwise, consider using or building a client-side cache.** Popular open source solutions include [React Query](https://tanstack.com/query/latest), [useSWR](https://swr.vercel.app/), and [React Router 6.4+.](https://beta.reactrouter.com/en/main/start/overview) You can build your own solution too, in which case you would use Effects under the hood, but add logic for deduplicating requests, caching responses, and avoiding network waterfalls (by preloading data or hoisting data requirements to routes).
+
+You can continue fetching data directly in Effects if neither of these approaches suit you.
+
+</DeepDive>
+
+### Sending analytics
+
+Consider this code that sends an analytics event on the page visit:
+
+```js
+useEffect(() => {
+	logVisit(url); // Sends a POST request
+}, [url]);
+```
+
+In development, `logVisit` will be called twice for every URL, so you might be tempted to try to fix that. **We recommend keeping this code as is.** Like with earlier examples, there is no _user-visible_ behavior difference between running it once and running it twice. From a practical point of view, `logVisit` should not do anything in development because you don't want the logs from the development machines to skew the production metrics. Your component remounts every time you save its file, so it logs extra visits in development anyway.
+
+**In production, there will be no duplicate visit logs.**
+
+To debug the analytics events you're sending, you can deploy your app to a staging environment (which runs in production mode) or temporarily opt out of [Strict Mode](/reference/react/StrictMode) and its development-only remounting checks. You may also send analytics from the route change event handlers instead of Effects. For more precise analytics, [intersection observers](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) can help track which components are in the viewport and how long they remain visible.
+
+### Not an Effect: Initializing the application
+
+Some logic should only run once when the application starts. You can put it outside your components:
+
+```js
+if (typeof window !== "undefined") {
+	// Check if we're running in the browser.
+	checkAuthToken();
+	loadDataFromLocalStorage();
+}
+
+function App() {
+	// ...
+}
+```
+
+This guarantees that such logic only runs once after the browser loads the page.
+
+### Not an Effect: Buying a product
+
+Sometimes, even if you write a cleanup function, there's no way to prevent user-visible consequences of running the Effect twice. For example, maybe your Effect sends a POST request like buying a product:
+
+```js
+useEffect(() => {
+	// 🔴 Wrong: This Effect fires twice in development, exposing a problem in the code.
+	fetch("/api/buy", { method: "POST" });
+}, []);
+```
+
+You wouldn't want to buy the product twice. However, this is also why you shouldn't put this logic in an Effect. What if the user goes to another page and then presses Back? Your Effect would run again. You don't want to buy the product when the user _visits_ a page; you want to buy it when the user _clicks_ the Buy button.
+
+Buying is not caused by rendering; it's caused by a specific interaction. It should run only when the user presses the button. **Delete the Effect and move your `/api/buy` request into the Buy button event handler:**
+
+```js
+function handleClick() {
+	// ✅ Buying is an event because it is caused by a particular interaction.
+	fetch("/api/buy", { method: "POST" });
+}
+```
+
+**This illustrates that if remounting breaks the logic of your application, this usually uncovers existing bugs.** From the user's perspective, visiting a page shouldn't be different from visiting it, clicking a link, and pressing Back. React verifies that your components abide by this principle by remounting them once in development.
+
+## Putting it all together
+
+This playground can help you "get a feel" for how Effects work in practice.
+
+This example uses [`setTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/setTimeout) to schedule a console log with the input text to appear three seconds after the Effect runs. The cleanup function cancels the pending timeout. Start by pressing "Mount the component":
+
+```js
+import { useState, useEffect } from "react";
+
+function Playground() {
+	const [text, setText] = useState("a");
+
+	useEffect(() => {
+		function onTimeout() {
+			console.log("⏰ " + text);
+		}
+
+		console.log('🔵 Schedule "' + text + '" log');
+		const timeoutId = setTimeout(onTimeout, 3000);
+
+		return () => {
+			console.log('🟡 Cancel "' + text + '" log');
+			clearTimeout(timeoutId);
+		};
+	}, [text]);
+
+	return (
+		<>
+			<label>
+				What to log:{" "}
+				<input value={text} onChange={(e) => setText(e.target.value)} />
+			</label>
+			<h1>{text}</h1>
+		</>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow(!show)}>
+				{show ? "Unmount" : "Mount"} the component
+			</button>
+			{show && <hr />}
+			{show && <Playground />}
+		</>
+	);
+}
+```
+
+You will see three logs at first: `Schedule "a" log`, `Cancel "a" log`, and `Schedule "a" log` again. Three second later there will also be a log saying `a`. As you learned earlier, the extra schedule/cancel pair is because React remounts the component once in development to verify that you've implemented cleanup well.
+
+Now edit the input to say `abc`. If you do it fast enough, you'll see `Schedule "ab" log` immediately followed by `Cancel "ab" log` and `Schedule "abc" log`. **React always cleans up the previous render's Effect before the next render's Effect.** This is why even if you type into the input fast, there is at most one timeout scheduled at a time. Edit the input a few times and watch the console to get a feel for how Effects get cleaned up.
+
+Type something into the input and then immediately press "Unmount the component". Notice how unmounting cleans up the last render's Effect. Here, it clears the last timeout before it has a chance to fire.
+
+Finally, edit the component above and comment out the cleanup function so that the timeouts don't get cancelled. Try typing `abcde` fast. What do you expect to happen in three seconds? Will `console.log(text)` inside the timeout print the _latest_ `text` and produce five `abcde` logs? Give it a try to check your intuition!
+
+Three seconds later, you should see a sequence of logs (`a`, `ab`, `abc`, `abcd`, and `abcde`) rather than five `abcde` logs. **Each Effect "captures" the `text` value from its corresponding render.** It doesn't matter that the `text` state changed: an Effect from the render with `text = 'ab'` will always see `'ab'`. In other words, Effects from each render are isolated from each other. If you're curious how this works, you can read about [closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures).
+
+<DeepDive>
+
+#### Each render has its own Effects
+
+You can think of `useEffect` as "attaching" a piece of behavior to the render output. Consider this Effect:
+
+```js
+export default function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return <h1>Welcome to {roomId}!</h1>;
+}
+```
+
+Let's see what exactly happens as the user navigates around the app.
+
+#### Initial render
+
+The user visits `<ChatRoom roomId="general" />`. Let's [mentally substitute](/learn/state-as-a-snapshot#rendering-takes-a-snapshot-in-time) `roomId` with `'general'`:
+
+```js
+// JSX for the first render (roomId = "general")
+return <h1>Welcome to general!</h1>;
+```
+
+**The Effect is _also_ a part of the rendering output.** The first render's Effect becomes:
+
+```js
+// Effect for the first render (roomId = "general")
+() => {
+	const connection = createConnection("general");
+	connection.connect();
+	return () => connection.disconnect();
+},
+	// Dependencies for the first render (roomId = "general")
+	["general"];
+```
+
+React runs this Effect, which connects to the `'general'` chat room.
+
+#### Re-render with same dependencies
+
+Let's say `<ChatRoom roomId="general" />` re-renders. The JSX output is the same:
+
+```js
+// JSX for the second render (roomId = "general")
+return <h1>Welcome to general!</h1>;
+```
+
+React sees that the rendering output has not changed, so it doesn't update the DOM.
+
+The Effect from the second render looks like this:
+
+```js
+// Effect for the second render (roomId = "general")
+() => {
+	const connection = createConnection("general");
+	connection.connect();
+	return () => connection.disconnect();
+},
+	// Dependencies for the second render (roomId = "general")
+	["general"];
+```
+
+React compares `['general']` from the second render with `['general']` from the first render. **Because all dependencies are the same, React _ignores_ the Effect from the second render.** It never gets called.
+
+#### Re-render with different dependencies
+
+Then, the user visits `<ChatRoom roomId="travel" />`. This time, the component returns different JSX:
+
+```js
+// JSX for the third render (roomId = "travel")
+return <h1>Welcome to travel!</h1>;
+```
+
+React updates the DOM to change `"Welcome to general"` into `"Welcome to travel"`.
+
+The Effect from the third render looks like this:
+
+```js
+// Effect for the third render (roomId = "travel")
+() => {
+	const connection = createConnection("travel");
+	connection.connect();
+	return () => connection.disconnect();
+},
+	// Dependencies for the third render (roomId = "travel")
+	["travel"];
+```
+
+React compares `['travel']` from the third render with `['general']` from the second render. One dependency is different: `Object.is('travel', 'general')` is `false`. The Effect can't be skipped.
+
+**Before React can apply the Effect from the third render, it needs to clean up the last Effect that _did_ run.** The second render's Effect was skipped, so React needs to clean up the first render's Effect. If you scroll up to the first render, you'll see that its cleanup calls `disconnect()` on the connection that was created with `createConnection('general')`. This disconnects the app from the `'general'` chat room.
+
+After that, React runs the third render's Effect. It connects to the `'travel'` chat room.
+
+#### Unmount
+
+Finally, let's say the user navigates away, and the `ChatRoom` component unmounts. React runs the last Effect's cleanup function. The last Effect was from the third render. The third render's cleanup destroys the `createConnection('travel')` connection. So the app disconnects from the `'travel'` room.
+
+#### Development-only behaviors
+
+When [Strict Mode](/reference/react/StrictMode) is on, React remounts every component once after mount (state and DOM are preserved). This [helps you find Effects that need cleanup](#step-3-add-cleanup-if-needed) and exposes bugs like race conditions early. Additionally, React will remount the Effects whenever you save a file in development. Both of these behaviors are development-only.
+
+</DeepDive>
+
+<Recap>
+
+-   Unlike events, Effects are caused by rendering itself rather than a particular interaction.
+-   Effects let you synchronize a component with some external system (third-party API, network, etc).
+-   By default, Effects run after every render (including the initial one).
+-   React will skip the Effect if all of its dependencies have the same values as during the last render.
+-   You can't "choose" your dependencies. They are determined by the code inside the Effect.
+-   Empty dependency array (`[]`) corresponds to the component "mounting", i.e. being added to the screen.
+-   In Strict Mode, React mounts components twice (in development only!) to stress-test your Effects.
+-   If your Effect breaks because of remounting, you need to implement a cleanup function.
+-   React will call your cleanup function before the Effect runs next time, and during the unmount.
+
+</Recap>
+
+<Challenges>
+
+#### Focus a field on mount
+
+In this example, the form renders a `<MyInput />` component.
+
+Use the input's [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) method to make `MyInput` automatically focus when it appears on the screen. There is already a commented out implementation, but it doesn't quite work. Figure out why it doesn't work, and fix it. (If you're familiar with the `autoFocus` attribute, pretend that it does not exist: we are reimplementing the same functionality from scratch.)
+
+```js
+import { useEffect, useRef } from "react";
+
+export default function MyInput({ value, onChange }) {
+	const ref = useRef(null);
+
+	// TODO: This doesn't quite work. Fix it.
+	// ref.current.focus()
+
+	return <input ref={ref} value={value} onChange={onChange} />;
+}
+```
+
+```js
+import { useState } from "react";
+import MyInput from "./MyInput.js";
+
+export default function Form() {
+	const [show, setShow] = useState(false);
+	const [name, setName] = useState("Taylor");
+	const [upper, setUpper] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow((s) => !s)}>
+				{show ? "Hide" : "Show"} form
+			</button>
+			<br />
+			<hr />
+			{show && (
+				<>
+					<label>
+						Enter your name:
+						<MyInput
+							value={name}
+							onChange={(e) => setName(e.target.value)}
+						/>
+					</label>
+					<label>
+						<input
+							type="checkbox"
+							checked={upper}
+							onChange={(e) => setUpper(e.target.checked)}
+						/>
+						Make it uppercase
+					</label>
+					<p>
+						Hello, <b>{upper ? name.toUpperCase() : name}</b>
+					</p>
+				</>
+			)}
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+To verify that your solution works, press "Show form" and verify that the input receives focus (becomes highlighted and the cursor is placed inside). Press "Hide form" and "Show form" again. Verify the input is highlighted again.
+
+`MyInput` should only focus _on mount_ rather than after every render. To verify that the behavior is right, press "Show form" and then repeatedly press the "Make it uppercase" checkbox. Clicking the checkbox should _not_ focus the input above it.
+
+<Solution>
+
+Calling `ref.current.focus()` during render is wrong because it is a _side effect_. Side effects should either be placed inside an event handler or be declared with `useEffect`. In this case, the side effect is _caused_ by the component appearing rather than by any specific interaction, so it makes sense to put it in an Effect.
+
+To fix the mistake, wrap the `ref.current.focus()` call into an Effect declaration. Then, to ensure that this Effect runs only on mount rather than after every render, add the empty `[]` dependencies to it.
+
+```js
+import { useEffect, useRef } from "react";
+
+export default function MyInput({ value, onChange }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		ref.current.focus();
+	}, []);
+
+	return <input ref={ref} value={value} onChange={onChange} />;
+}
+```
+
+```js
+import { useState } from "react";
+import MyInput from "./MyInput.js";
+
+export default function Form() {
+	const [show, setShow] = useState(false);
+	const [name, setName] = useState("Taylor");
+	const [upper, setUpper] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow((s) => !s)}>
+				{show ? "Hide" : "Show"} form
+			</button>
+			<br />
+			<hr />
+			{show && (
+				<>
+					<label>
+						Enter your name:
+						<MyInput
+							value={name}
+							onChange={(e) => setName(e.target.value)}
+						/>
+					</label>
+					<label>
+						<input
+							type="checkbox"
+							checked={upper}
+							onChange={(e) => setUpper(e.target.checked)}
+						/>
+						Make it uppercase
+					</label>
+					<p>
+						Hello, <b>{upper ? name.toUpperCase() : name}</b>
+					</p>
+				</>
+			)}
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+</Solution>
+
+#### Focus a field conditionally
+
+This form renders two `<MyInput />` components.
+
+Press "Show form" and notice that the second field automatically gets focused. This is because both of the `<MyInput />` components try to focus the field inside. When you call `focus()` for two input fields in a row, the last one always "wins".
+
+Let's say you want to focus the first field. The first `MyInput` component now receives a boolean `shouldFocus` prop set to `true`. Change the logic so that `focus()` is only called if the `shouldFocus` prop received by `MyInput` is `true`.
+
+```js
+import { useEffect, useRef } from "react";
+
+export default function MyInput({ shouldFocus, value, onChange }) {
+	const ref = useRef(null);
+
+	// TODO: call focus() only if shouldFocus is true.
+	useEffect(() => {
+		ref.current.focus();
+	}, []);
+
+	return <input ref={ref} value={value} onChange={onChange} />;
+}
+```
+
+```js
+import { useState } from "react";
+import MyInput from "./MyInput.js";
+
+export default function Form() {
+	const [show, setShow] = useState(false);
+	const [firstName, setFirstName] = useState("Taylor");
+	const [lastName, setLastName] = useState("Swift");
+	const [upper, setUpper] = useState(false);
+	const name = firstName + " " + lastName;
+	return (
+		<>
+			<button on_click={() => setShow((s) => !s)}>
+				{show ? "Hide" : "Show"} form
+			</button>
+			<br />
+			<hr />
+			{show && (
+				<>
+					<label>
+						Enter your first name:
+						<MyInput
+							value={firstName}
+							onChange={(e) => setFirstName(e.target.value)}
+							shouldFocus={true}
+						/>
+					</label>
+					<label>
+						Enter your last name:
+						<MyInput
+							value={lastName}
+							onChange={(e) => setLastName(e.target.value)}
+							shouldFocus={false}
+						/>
+					</label>
+					<p>
+						Hello, <b>{upper ? name.toUpperCase() : name}</b>
+					</p>
+				</>
+			)}
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+To verify your solution, press "Show form" and "Hide form" repeatedly. When the form appears, only the _first_ input should get focused. This is because the parent component renders the first input with `shouldFocus={true}` and the second input with `shouldFocus={false}`. Also check that both inputs still work and you can type into both of them.
+
+<Hint>
+
+You can't declare an Effect conditionally, but your Effect can include conditional logic.
+
+</Hint>
+
+<Solution>
+
+Put the conditional logic inside the Effect. You will need to specify `shouldFocus` as a dependency because you are using it inside the Effect. (This means that if some input's `shouldFocus` changes from `false` to `true`, it will focus after mount.)
+
+```js
+import { useEffect, useRef } from "react";
+
+export default function MyInput({ shouldFocus, value, onChange }) {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		if (shouldFocus) {
+			ref.current.focus();
+		}
+	}, [shouldFocus]);
+
+	return <input ref={ref} value={value} onChange={onChange} />;
+}
+```
+
+```js
+import { useState } from "react";
+import MyInput from "./MyInput.js";
+
+export default function Form() {
+	const [show, setShow] = useState(false);
+	const [firstName, setFirstName] = useState("Taylor");
+	const [lastName, setLastName] = useState("Swift");
+	const [upper, setUpper] = useState(false);
+	const name = firstName + " " + lastName;
+	return (
+		<>
+			<button on_click={() => setShow((s) => !s)}>
+				{show ? "Hide" : "Show"} form
+			</button>
+			<br />
+			<hr />
+			{show && (
+				<>
+					<label>
+						Enter your first name:
+						<MyInput
+							value={firstName}
+							onChange={(e) => setFirstName(e.target.value)}
+							shouldFocus={true}
+						/>
+					</label>
+					<label>
+						Enter your last name:
+						<MyInput
+							value={lastName}
+							onChange={(e) => setLastName(e.target.value)}
+							shouldFocus={false}
+						/>
+					</label>
+					<p>
+						Hello, <b>{upper ? name.toUpperCase() : name}</b>
+					</p>
+				</>
+			)}
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+</Solution>
+
+#### Fix an interval that fires twice
+
+This `Counter` component displays a counter that should increment every second. On mount, it calls [`setInterval`.](https://developer.mozilla.org/en-US/docs/Web/API/setInterval) This causes `onTick` to run every second. The `onTick` function increments the counter.
+
+However, instead of incrementing once per second, it increments twice. Why is that? Find the cause of the bug and fix it.
+
+<Hint>
+
+Keep in mind that `setInterval` returns an interval ID, which you can pass to [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval) to stop the interval.
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Counter() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		function onTick() {
+			setCount((c) => c + 1);
+		}
+
+		setInterval(onTick, 1000);
+	}, []);
+
+	return <h1>{count}</h1>;
+}
+```
+
+```js
+import { useState } from "react";
+import Counter from "./Counter.js";
+
+export default function Form() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow((s) => !s)}>
+				{show ? "Hide" : "Show"} counter
+			</button>
+			<br />
+			<hr />
+			{show && <Counter />}
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+<Solution>
+
+When [Strict Mode](/reference/react/StrictMode) is on (like in the sandboxes on this site), React remounts each component once in development. This causes the interval to be set up twice, and this is why each second the counter increments twice.
+
+However, React's behavior is not the _cause_ of the bug: the bug already exists in the code. React's behavior makes the bug more noticeable. The real cause is that this Effect starts a process but doesn't provide a way to clean it up.
+
+To fix this code, save the interval ID returned by `setInterval`, and implement a cleanup function with [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval):
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Counter() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		function onTick() {
+			setCount((c) => c + 1);
+		}
+
+		const intervalId = setInterval(onTick, 1000);
+		return () => clearInterval(intervalId);
+	}, []);
+
+	return <h1>{count}</h1>;
+}
+```
+
+```js
+import { useState } from "react";
+import Counter from "./Counter.js";
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button on_click={() => setShow((s) => !s)}>
+				{show ? "Hide" : "Show"} counter
+			</button>
+			<br />
+			<hr />
+			{show && <Counter />}
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+In development, React will still remount your component once to verify that you've implemented cleanup well. So there will be a `setInterval` call, immediately followed by `clearInterval`, and `setInterval` again. In production, there will be only one `setInterval` call. The user-visible behavior in both cases is the same: the counter increments once per second.
+
+</Solution>
+
+#### Fix fetching inside an Effect
+
+This component shows the biography for the selected person. It loads the biography by calling an asynchronous function `fetchBio(person)` on mount and whenever `person` changes. That asynchronous function returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) which eventually resolves to a string. When fetching is done, it calls `setBio` to display that string under the select box.
+
+```js
+import { useState, useEffect } from "react";
+import { fetchBio } from "./api.js";
+
+export default function Page() {
+	const [person, setPerson] = useState("Alice");
+	const [bio, setBio] = useState(null);
+
+	useEffect(() => {
+		setBio(null);
+		fetchBio(person).then((result) => {
+			setBio(result);
+		});
+	}, [person]);
+
+	return (
+		<>
+			<select
+				value={person}
+				onChange={(e) => {
+					setPerson(e.target.value);
+				}}
+			>
+				<option value="Alice">Alice</option>
+				<option value="Bob">Bob</option>
+				<option value="Taylor">Taylor</option>
+			</select>
+			<hr />
+			<p>
+				<i>{bio ?? "Loading..."}</i>
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export async function fetchBio(person) {
+	const delay = person === "Bob" ? 2000 : 200;
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve("This is " + person + "’s bio.");
+		}, delay);
+	});
+}
+```
+
+There is a bug in this code. Start by selecting "Alice". Then select "Bob" and then immediately after that select "Taylor". If you do this fast enough, you will notice that bug: Taylor is selected, but the paragraph below says "This is Bob's bio."
+
+Why does this happen? Fix the bug inside this Effect.
+
+<Hint>
+
+If an Effect fetches something asynchronously, it usually needs cleanup.
+
+</Hint>
+
+<Solution>
+
+To trigger the bug, things need to happen in this order:
+
+-   Selecting `'Bob'` triggers `fetchBio('Bob')`
+-   Selecting `'Taylor'` triggers `fetchBio('Taylor')`
+-   **Fetching `'Taylor'` completes _before_ fetching `'Bob'`**
+-   The Effect from the `'Taylor'` render calls `setBio('This is Taylor’s bio')`
+-   Fetching `'Bob'` completes
+-   The Effect from the `'Bob'` render calls `setBio('This is Bob’s bio')`
+
+This is why you see Bob's bio even though Taylor is selected. Bugs like this are called [race conditions](https://en.wikipedia.org/wiki/Race_condition) because two asynchronous operations are "racing" with each other, and they might arrive in an unexpected order.
+
+To fix this race condition, add a cleanup function:
+
+```js
+import { useState, useEffect } from "react";
+import { fetchBio } from "./api.js";
+
+export default function Page() {
+	const [person, setPerson] = useState("Alice");
+	const [bio, setBio] = useState(null);
+	useEffect(() => {
+		let ignore = false;
+		setBio(null);
+		fetchBio(person).then((result) => {
+			if (!ignore) {
+				setBio(result);
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, [person]);
+
+	return (
+		<>
+			<select
+				value={person}
+				onChange={(e) => {
+					setPerson(e.target.value);
+				}}
+			>
+				<option value="Alice">Alice</option>
+				<option value="Bob">Bob</option>
+				<option value="Taylor">Taylor</option>
+			</select>
+			<hr />
+			<p>
+				<i>{bio ?? "Loading..."}</i>
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export async function fetchBio(person) {
+	const delay = person === "Bob" ? 2000 : 200;
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve("This is " + person + "’s bio.");
+		}, delay);
+	});
+}
+```
+
+Each render's Effect has its own `ignore` variable. Initially, the `ignore` variable is set to `false`. However, if an Effect gets cleaned up (such as when you select a different person), its `ignore` variable becomes `true`. So now it doesn't matter in which order the requests complete. Only the last person's Effect will have `ignore` set to `false`, so it will call `setBio(result)`. Past Effects have been cleaned up, so the `if (!ignore)` check will prevent them from calling `setBio`:
+
+-   Selecting `'Bob'` triggers `fetchBio('Bob')`
+-   Selecting `'Taylor'` triggers `fetchBio('Taylor')` **and cleans up the previous (Bob's) Effect**
+-   Fetching `'Taylor'` completes _before_ fetching `'Bob'`
+-   The Effect from the `'Taylor'` render calls `setBio('This is Taylor’s bio')`
+-   Fetching `'Bob'` completes
+-   The Effect from the `'Bob'` render **does not do anything because its `ignore` flag was set to `true`**
+
+In addition to ignoring the result of an outdated API call, you can also use [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) to cancel the requests that are no longer needed. However, by itself this is not enough to protect against race conditions. More asynchronous steps could be chained after the fetch, so using an explicit flag like `ignore` is the most reliable way to fix this type of problems.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
new file mode 100644
index 000000000..1e99ec5cc
--- /dev/null
+++ b/docs/src/learn/thinking-in-react.md
@@ -0,0 +1,631 @@
+---
+title: Thinking in React 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+React can change how you think about the designs you look at and the apps you build. When you build a user interface with React, you will first break it apart into pieces called _components_. Then, you will describe the different visual states for each of your components. Finally, you will connect your components together so that the data flows through them. In this tutorial, we’ll guide you through the thought process of building a searchable product data table with React.
+
+</p>
+
+## Start with the mockup
+
+Imagine that you already have a JSON API and a mockup from a designer.
+
+The JSON API returns some data that looks like this:
+
+```json
+[
+	{ "category": "Fruits", "price": "$1", "stocked": true, "name": "Apple" },
+	{
+		"category": "Fruits",
+		"price": "$1",
+		"stocked": true,
+		"name": "Dragonfruit"
+	},
+	{
+		"category": "Fruits",
+		"price": "$2",
+		"stocked": false,
+		"name": "Passionfruit"
+	},
+	{
+		"category": "Vegetables",
+		"price": "$2",
+		"stocked": true,
+		"name": "Spinach"
+	},
+	{
+		"category": "Vegetables",
+		"price": "$4",
+		"stocked": false,
+		"name": "Pumpkin"
+	},
+	{ "category": "Vegetables", "price": "$1", "stocked": true, "name": "Peas" }
+]
+```
+
+The mockup looks like this:
+
+<img src="../../static/images/s_thinking-in-react_ui.png" width="300" style="margin: 0 auto" />
+
+To implement a UI in React, you will usually follow the same five steps.
+
+## Step 1: Break the UI into a component hierarchy
+
+Start by drawing boxes around every component and subcomponent in the mockup and naming them. If you work with a designer, they may have already named these components in their design tool. Ask them!
+
+Depending on your background, you can think about splitting up a design into components in different ways:
+
+-   **Programming**--use the same techniques for deciding if you should create a new function or object. One such technique is the [single responsibility principle](https://en.wikipedia.org/wiki/Single_responsibility_principle), that is, a component should ideally only do one thing. If it ends up growing, it should be decomposed into smaller subcomponents.
+-   **CSS**--consider what you would make class selectors for. (However, components are a bit less granular.)
+-   **Design**--consider how you would organize the design's layers.
+
+If your JSON is well-structured, you'll often find that it naturally maps to the component structure of your UI. That's because UI and data models often have the same information architecture--that is, the same shape. Separate your UI into components, where each component matches one piece of your data model.
+
+There are five components on this screen:
+
+<!-- TODO: Change this image to use snake_case -->
+
+<img src="../../static/images/s_thinking-in-react_ui_outline.png" width="500" style="margin: 0 auto" />
+
+1. `filterable_product_table` (grey) contains the entire app.
+2. `search_bar` (blue) receives the user input.
+3. `product_table` (lavender) displays and filters the list according to the user input.
+4. `product_category_row` (green) displays a heading for each category.
+5. `product_row` (yellow) displays a row for each product.
+
+If you look at `product_table` (lavender), you'll see that the table header (containing the "Name" and "Price" labels) isn't its own component. This is a matter of preference, and you could go either way. For this example, it is a part of `product_table` because it appears inside the `product_table`'s list. However, if this header grows to be complex (e.g., if you add sorting), you can move it into its own `product_table_header` component.
+
+Now that you've identified the components in the mockup, arrange them into a hierarchy. Components that appear within another component in the mockup should appear as a child in the hierarchy:
+
+-   `filterable_product_table`
+    -   `search_bar`
+    -   `product_table`
+        -   `product_category_row`
+        -   `product_row`
+
+## Step 2: Build a static version in React
+
+Now that you have your component hierarchy, it's time to implement your app. The most straightforward approach is to build a version that renders the UI from your data model without adding any interactivity... yet! It's often easier to build the static version first and add interactivity later. Building a static version requires a lot of typing and no thinking, but adding interactivity requires a lot of thinking and not a lot of typing.
+
+To build a static version of your app that renders your data model, you'll want to build [components](your-first-component.md) that reuse other components and pass data using [props.](/learn/passing-props-to-a-component) Props are a way of passing data from parent to child. (If you're familiar with the concept of [state](/learn/state-a-components-memory), don't use state at all to build this static version. State is reserved only for interactivity, that is, data that changes over time. Since this is a static version of the app, you don't need it.)
+
+You can either build "top down" by starting with building the components higher up in the hierarchy (like `filterable_product_table`) or "bottom up" by working from components lower down (like `product_row`). In simpler examples, it’s usually easier to go top-down, and on larger projects, it’s easier to go bottom-up.
+
+```jsx
+function product_category_row({ category }) {
+	return (
+		<tr>
+			<th colSpan="2">{category}</th>
+		</tr>
+	);
+}
+
+function product_row({ product }) {
+	const name = product.stocked ? (
+		product.name
+	) : (
+		<span style={{ color: "red" }}>{product.name}</span>
+	);
+
+	return (
+		<tr>
+			<td>{name}</td>
+			<td>{product.price}</td>
+		</tr>
+	);
+}
+
+function product_table({ products }) {
+	const rows = [];
+	let lastCategory = null;
+
+	products.forEach((product) => {
+		if (product.category !== lastCategory) {
+			rows.push(
+				<product_category_row
+					category={product.category}
+					key={product.category}
+				/>
+			);
+		}
+		rows.push(<product_row product={product} key={product.name} />);
+		lastCategory = product.category;
+	});
+
+	return (
+		<table>
+			<thead>
+				<tr>
+					<th>Name</th>
+					<th>Price</th>
+				</tr>
+			</thead>
+			<tbody>{rows}</tbody>
+		</table>
+	);
+}
+
+function search_bar() {
+	return (
+		<form>
+			<input type="text" placeholder="Search..." />
+			<label>
+				<input type="checkbox" /> Only show products in stock
+			</label>
+		</form>
+	);
+}
+
+function filterable_product_table({ products }) {
+	return (
+		<div>
+			<search_bar />
+			<product_table products={products} />
+		</div>
+	);
+}
+
+const PRODUCTS = [
+	{ category: "Fruits", price: "$1", stocked: true, name: "Apple" },
+	{ category: "Fruits", price: "$1", stocked: true, name: "Dragonfruit" },
+	{ category: "Fruits", price: "$2", stocked: false, name: "Passionfruit" },
+	{ category: "Vegetables", price: "$2", stocked: true, name: "Spinach" },
+	{ category: "Vegetables", price: "$4", stocked: false, name: "Pumpkin" },
+	{ category: "Vegetables", price: "$1", stocked: true, name: "Peas" },
+];
+
+export default function App() {
+	return <filterable_product_table products={PRODUCTS} />;
+}
+```
+
+```css
+body {
+	padding: 5px;
+}
+label {
+	display: block;
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+th {
+	padding-top: 10px;
+}
+td {
+	padding: 2px;
+	padding-right: 40px;
+}
+```
+
+(If this code looks intimidating, go through the [Quick Start](/learn/) first!)
+
+After building your components, you'll have a library of reusable components that render your data model. Because this is a static app, the components will only return JSX. The component at the top of the hierarchy (`filterable_product_table`) will take your data model as a prop. This is called _one-way data flow_ because the data flows down from the top-level component to the ones at the bottom of the tree.
+
+<Pitfall>
+
+At this point, you should not be using any state values. That’s for the next step!
+
+</Pitfall>
+
+## Step 3: Find the minimal but complete representation of UI state
+
+To make the UI interactive, you need to let users change your underlying data model. You will use _state_ for this.
+
+Think of state as the minimal set of changing data that your app needs to remember. The most important principle for structuring state is to keep it [DRY (Don't Repeat Yourself).](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) Figure out the absolute minimal representation of the state your application needs and compute everything else on-demand. For example, if you're building a shopping list, you can store the items as an array in state. If you want to also display the number of items in the list, don't store the number of items as another state value--instead, read the length of your array.
+
+Now think of all of the pieces of data in this example application:
+
+1. The original list of products
+2. The search text the user has entered
+3. The value of the checkbox
+4. The filtered list of products
+
+Which of these are state? Identify the ones that are not:
+
+-   Does it **remain unchanged** over time? If so, it isn't state.
+-   Is it **passed in from a parent** via props? If so, it isn't state.
+-   **Can you compute it** based on existing state or props in your component? If so, it _definitely_ isn't state!
+
+What's left is probably state.
+
+Let's go through them one by one again:
+
+1. The original list of products is **passed in as props, so it's not state.**
+2. The search text seems to be state since it changes over time and can't be computed from anything.
+3. The value of the checkbox seems to be state since it changes over time and can't be computed from anything.
+4. The filtered list of products **isn't state because it can be computed** by taking the original list of products and filtering it according to the search text and value of the checkbox.
+
+This means only the search text and the value of the checkbox are state! Nicely done!
+
+<DeepDive>
+
+#### Props vs State
+
+There are two types of "model" data in React: props and state. The two are very different:
+
+-   [**Props** are like arguments you pass](/learn/passing-props-to-a-component) to a function. They let a parent component pass data to a child component and customize its appearance. For example, a `Form` can pass a `color` prop to a `Button`.
+-   [**State** is like a component’s memory.](/learn/state-a-components-memory) It lets a component keep track of some information and change it in response to interactions. For example, a `Button` might keep track of `isHovered` state.
+
+Props and state are different, but they work together. A parent component will often keep some information in state (so that it can change it), and _pass it down_ to child components as their props. It's okay if the difference still feels fuzzy on the first read. It takes a bit of practice for it to really stick!
+
+</DeepDive>
+
+## Step 4: Identify where your state should live
+
+After identifying your app’s minimal state data, you need to identify which component is responsible for changing this state, or _owns_ the state. Remember: React uses one-way data flow, passing data down the component hierarchy from parent to child component. It may not be immediately clear which component should own what state. This can be challenging if you’re new to this concept, but you can figure it out by following these steps!
+
+For each piece of state in your application:
+
+1. Identify _every_ component that renders something based on that state.
+2. Find their closest common parent component--a component above them all in the hierarchy.
+3. Decide where the state should live:
+    1. Often, you can put the state directly into their common parent.
+    2. You can also put the state into some component above their common parent.
+    3. If you can't find a component where it makes sense to own the state, create a new component solely for holding the state and add it somewhere in the hierarchy above the common parent component.
+
+In the previous step, you found two pieces of state in this application: the search input text, and the value of the checkbox. In this example, they always appear together, so it makes sense to put them into the same place.
+
+Now let's run through our strategy for them:
+
+1. **Identify components that use state:**
+    - `product_table` needs to filter the product list based on that state (search text and checkbox value).
+    - `search_bar` needs to display that state (search text and checkbox value).
+1. **Find their common parent:** The first parent component both components share is `filterable_product_table`.
+1. **Decide where the state lives**: We'll keep the filter text and checked state values in `filterable_product_table`.
+
+So the state values will live in `filterable_product_table`.
+
+Add state to the component with the [`useState()` Hook.](/reference/react/useState) Hooks are special functions that let you "hook into" React. Add two state variables at the top of `filterable_product_table` and specify their initial state:
+
+```js
+function filterable_product_table({ products }) {
+  const [filterText, setFilterText] = useState('');
+  const [inStockOnly, setInStockOnly] = useState(false);
+```
+
+Then, pass `filterText` and `inStockOnly` to `product_table` and `search_bar` as props:
+
+```js
+<div>
+	<search_bar filterText={filterText} inStockOnly={inStockOnly} />
+	<product_table
+		products={products}
+		filterText={filterText}
+		inStockOnly={inStockOnly}
+	/>
+</div>
+```
+
+You can start seeing how your application will behave. Edit the `filterText` initial value from `useState('')` to `useState('fruit')` in the sandbox code below. You'll see both the search input text and the table update:
+
+```jsx
+import { useState } from "react";
+
+function filterable_product_table({ products }) {
+	const [filterText, setFilterText] = useState("");
+	const [inStockOnly, setInStockOnly] = useState(false);
+
+	return (
+		<div>
+			<search_bar filterText={filterText} inStockOnly={inStockOnly} />
+			<product_table
+				products={products}
+				filterText={filterText}
+				inStockOnly={inStockOnly}
+			/>
+		</div>
+	);
+}
+
+function product_category_row({ category }) {
+	return (
+		<tr>
+			<th colSpan="2">{category}</th>
+		</tr>
+	);
+}
+
+function product_row({ product }) {
+	const name = product.stocked ? (
+		product.name
+	) : (
+		<span style={{ color: "red" }}>{product.name}</span>
+	);
+
+	return (
+		<tr>
+			<td>{name}</td>
+			<td>{product.price}</td>
+		</tr>
+	);
+}
+
+function product_table({ products, filterText, inStockOnly }) {
+	const rows = [];
+	let lastCategory = null;
+
+	products.forEach((product) => {
+		if (
+			product.name.toLowerCase().indexOf(filterText.toLowerCase()) === -1
+		) {
+			return;
+		}
+		if (inStockOnly && !product.stocked) {
+			return;
+		}
+		if (product.category !== lastCategory) {
+			rows.push(
+				<product_category_row
+					category={product.category}
+					key={product.category}
+				/>
+			);
+		}
+		rows.push(<product_row product={product} key={product.name} />);
+		lastCategory = product.category;
+	});
+
+	return (
+		<table>
+			<thead>
+				<tr>
+					<th>Name</th>
+					<th>Price</th>
+				</tr>
+			</thead>
+			<tbody>{rows}</tbody>
+		</table>
+	);
+}
+
+function search_bar({ filterText, inStockOnly }) {
+	return (
+		<form>
+			<input type="text" value={filterText} placeholder="Search..." />
+			<label>
+				<input type="checkbox" checked={inStockOnly} /> Only show
+				products in stock
+			</label>
+		</form>
+	);
+}
+
+const PRODUCTS = [
+	{ category: "Fruits", price: "$1", stocked: true, name: "Apple" },
+	{ category: "Fruits", price: "$1", stocked: true, name: "Dragonfruit" },
+	{ category: "Fruits", price: "$2", stocked: false, name: "Passionfruit" },
+	{ category: "Vegetables", price: "$2", stocked: true, name: "Spinach" },
+	{ category: "Vegetables", price: "$4", stocked: false, name: "Pumpkin" },
+	{ category: "Vegetables", price: "$1", stocked: true, name: "Peas" },
+];
+
+export default function App() {
+	return <filterable_product_table products={PRODUCTS} />;
+}
+```
+
+```css
+body {
+	padding: 5px;
+}
+label {
+	display: block;
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+th {
+	padding-top: 5px;
+}
+td {
+	padding: 2px;
+}
+```
+
+Notice that editing the form doesn't work yet. There is a console error in the sandbox above explaining why:
+
+<ConsoleBlock level="error">
+
+You provided a \`value\` prop to a form field without an \`onChange\` handler. This will render a read-only field.
+
+</ConsoleBlock>
+
+In the sandbox above, `product_table` and `search_bar` read the `filterText` and `inStockOnly` props to render the table, the input, and the checkbox. For example, here is how `search_bar` populates the input value:
+
+```js
+function search_bar({ filterText, inStockOnly }) {
+  return (
+    <form>
+      <input
+        type="text"
+        value={filterText}
+        placeholder="Search..."/>
+```
+
+However, you haven't added any code to respond to the user actions like typing yet. This will be your final step.
+
+## Step 5: Add inverse data flow
+
+Currently your app renders correctly with props and state flowing down the hierarchy. But to change the state according to user input, you will need to support data flowing the other way: the form components deep in the hierarchy need to update the state in `filterable_product_table`.
+
+React makes this data flow explicit, but it requires a little more typing than two-way data binding. If you try to type or check the box in the example above, you'll see that React ignores your input. This is intentional. By writing `<input value={filterText} />`, you've set the `value` prop of the `input` to always be equal to the `filterText` state passed in from `filterable_product_table`. Since `filterText` state is never set, the input never changes.
+
+You want to make it so whenever the user changes the form inputs, the state updates to reflect those changes. The state is owned by `filterable_product_table`, so only it can call `setFilterText` and `setInStockOnly`. To let `search_bar` update the `filterable_product_table`'s state, you need to pass these functions down to `search_bar`:
+
+```js
+function filterable_product_table({ products }) {
+  const [filterText, setFilterText] = useState('');
+  const [inStockOnly, setInStockOnly] = useState(false);
+
+  return (
+    <div>
+      <search_bar
+        filterText={filterText}
+        inStockOnly={inStockOnly}
+        onFilterTextChange={setFilterText}
+        onInStockOnlyChange={setInStockOnly} />
+```
+
+Inside the `search_bar`, you will add the `onChange` event handlers and set the parent state from them:
+
+```js
+<input
+	type="text"
+	value={filterText}
+	placeholder="Search..."
+	onChange={(e) => onFilterTextChange(e.target.value)}
+/>
+```
+
+Now the application fully works!
+
+```jsx
+import { useState } from "react";
+
+function filterable_product_table({ products }) {
+	const [filterText, setFilterText] = useState("");
+	const [inStockOnly, setInStockOnly] = useState(false);
+
+	return (
+		<div>
+			<search_bar
+				filterText={filterText}
+				inStockOnly={inStockOnly}
+				onFilterTextChange={setFilterText}
+				onInStockOnlyChange={setInStockOnly}
+			/>
+			<product_table
+				products={products}
+				filterText={filterText}
+				inStockOnly={inStockOnly}
+			/>
+		</div>
+	);
+}
+
+function product_category_row({ category }) {
+	return (
+		<tr>
+			<th colSpan="2">{category}</th>
+		</tr>
+	);
+}
+
+function product_row({ product }) {
+	const name = product.stocked ? (
+		product.name
+	) : (
+		<span style={{ color: "red" }}>{product.name}</span>
+	);
+
+	return (
+		<tr>
+			<td>{name}</td>
+			<td>{product.price}</td>
+		</tr>
+	);
+}
+
+function product_table({ products, filterText, inStockOnly }) {
+	const rows = [];
+	let lastCategory = null;
+
+	products.forEach((product) => {
+		if (
+			product.name.toLowerCase().indexOf(filterText.toLowerCase()) === -1
+		) {
+			return;
+		}
+		if (inStockOnly && !product.stocked) {
+			return;
+		}
+		if (product.category !== lastCategory) {
+			rows.push(
+				<product_category_row
+					category={product.category}
+					key={product.category}
+				/>
+			);
+		}
+		rows.push(<product_row product={product} key={product.name} />);
+		lastCategory = product.category;
+	});
+
+	return (
+		<table>
+			<thead>
+				<tr>
+					<th>Name</th>
+					<th>Price</th>
+				</tr>
+			</thead>
+			<tbody>{rows}</tbody>
+		</table>
+	);
+}
+
+function search_bar({
+	filterText,
+	inStockOnly,
+	onFilterTextChange,
+	onInStockOnlyChange,
+}) {
+	return (
+		<form>
+			<input
+				type="text"
+				value={filterText}
+				placeholder="Search..."
+				onChange={(e) => onFilterTextChange(e.target.value)}
+			/>
+			<label>
+				<input
+					type="checkbox"
+					checked={inStockOnly}
+					onChange={(e) => onInStockOnlyChange(e.target.checked)}
+				/>{" "}
+				Only show products in stock
+			</label>
+		</form>
+	);
+}
+
+const PRODUCTS = [
+	{ category: "Fruits", price: "$1", stocked: true, name: "Apple" },
+	{ category: "Fruits", price: "$1", stocked: true, name: "Dragonfruit" },
+	{ category: "Fruits", price: "$2", stocked: false, name: "Passionfruit" },
+	{ category: "Vegetables", price: "$2", stocked: true, name: "Spinach" },
+	{ category: "Vegetables", price: "$4", stocked: false, name: "Pumpkin" },
+	{ category: "Vegetables", price: "$1", stocked: true, name: "Peas" },
+];
+
+export default function App() {
+	return <filterable_product_table products={PRODUCTS} />;
+}
+```
+
+```css
+body {
+	padding: 5px;
+}
+label {
+	display: block;
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+th {
+	padding: 4px;
+}
+td {
+	padding: 2px;
+}
+```
+
+You can learn all about handling events and updating state in the [Adding Interactivity](/learn/adding-interactivity) section.
+
+## Where to go from here
+
+This was a very brief introduction to how to think about building components and applications with React. You can [start a React project](/learn/installation) right now or [dive deeper on all the syntax](/learn/describing-the-ui) used in this tutorial.
diff --git a/docs/src/learn/tutorial-material-ui.md b/docs/src/learn/tutorial-material-ui.md
new file mode 100644
index 000000000..30e56fbc7
--- /dev/null
+++ b/docs/src/learn/tutorial-material-ui.md
@@ -0,0 +1,3 @@
+---
+title: "Tutorial: Material UI 🚧"
+---
diff --git a/docs/src/learn/tutorial-react-bootstrap.md b/docs/src/learn/tutorial-react-bootstrap.md
new file mode 100644
index 000000000..79abb885c
--- /dev/null
+++ b/docs/src/learn/tutorial-react-bootstrap.md
@@ -0,0 +1,3 @@
+---
+title: "Tutorial: React Bootstrap 🚧"
+---
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
new file mode 100644
index 000000000..46ad9325e
--- /dev/null
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -0,0 +1,2996 @@
+---
+title: "Tutorial: Tic-Tac-Toe 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+You will build a small tic-tac-toe game during this tutorial. This tutorial does not assume any existing React knowledge. The techniques you'll learn in the tutorial are fundamental to building any React app, and fully understanding it will give you a deep understanding of React.
+
+</p>
+
+!!! abstract "Note"
+
+    This tutorial is designed for people who prefer to **learn by doing** and want to quickly try making something tangible. If you prefer learning each concept step by step, start with [Describing the UI.](./your-first-component.md)
+
+The tutorial is divided into several sections:
+
+-   [Setup for the tutorial](#setup-for-the-tutorial) will give you **a starting point** to follow the tutorial.
+-   [Overview](#overview) will teach you **the fundamentals** of React: components, props, and state.
+-   [Completing the game](#completing-the-game) will teach you **the most common techniques** in React development.
+-   [Adding time travel](#adding-time-travel) will give you **a deeper insight** into the unique strengths of React.
+
+### What are you building?
+
+In this tutorial, you'll build an interactive tic-tac-toe game with React.
+
+You can see what it will look like when you're finished here:
+
+=== "app.py"
+
+    ```python
+    {% include "../../examples/python/tutorial-tic-tac-toe/tic_tac_toe.py" end="# end" %}
+    ```
+
+=== "stylesheet.css"
+
+    ```css
+    {% include "../../examples/css/tutorial-tic-tac-toe/tic_tac_toe.css" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
+
+If the code doesn't make sense to you yet, or if you are unfamiliar with the code's syntax, don't worry! The goal of this tutorial is to help you understand React and its syntax.
+
+We recommend that you check out the tic-tac-toe game above before continuing with the tutorial. One of the features that you'll notice is that there is a numbered list to the right of the game's board. This list gives you a history of all of the moves that have occurred in the game, and it is updated as the game progresses.
+
+Once you've played around with the finished tic-tac-toe game, keep scrolling. You'll start with a simpler template in this tutorial. Our next step is to set you up so that you can start building the game.
+
+## Setup for the tutorial
+
+In the live code editor below, click **Fork** in the top-right corner to open the editor in a new tab using the website CodeSandbox. CodeSandbox lets you write code in your browser and preview how your users will see the app you've created. The new tab should display an empty square and the starter code for this tutorial.
+
+```js
+export default function Square() {
+	return <button className="square">X</button>;
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+<Note>
+
+You can also follow this tutorial using your local development environment. To do this, you need to:
+
+1. Install [Node.js](https://nodejs.org/en/)
+1. In the CodeSandbox tab you opened earlier, press the top-left corner button to open the menu, and then choose **File > Export to ZIP** in that menu to download an archive of the files locally
+1. Unzip the archive, then open a terminal and `cd` to the directory you unzipped
+1. Install the dependencies with `npm install`
+1. Run `npm start` to start a local server and follow the prompts to view the code running in a browser
+
+If you get stuck, don't let this stop you! Follow along online instead and try a local setup again later.
+
+</Note>
+
+## Overview
+
+Now that you're set up, let's get an overview of React!
+
+### Inspecting the starter code
+
+In CodeSandbox you'll see three main sections:
+
+![CodeSandbox with starter code]()
+
+1. The _Files_ section with a list of files like `App.js`, `index.js`, `styles.css` and a folder called `public`
+1. The _code editor_ where you'll see the source code of your selected file
+1. The _browser_ section where you'll see how the code you've written will be displayed
+
+The `App.js` file should be selected in the _Files_ section. The contents of that file in the _code editor_ should be:
+
+```jsx
+export default function Square() {
+	return <button className="square">X</button>;
+}
+```
+
+The _browser_ section should be displaying a square with a X in it like this:
+
+![x-filled square]()
+
+Now let's have a look at the files in the starter code.
+
+#### `App.js`
+
+The code in `App.js` creates a _component_. In React, a component is a piece of reusable code that represents a part of a user interface. Components are used to render, manage, and update the UI elements in your application. Let's look at the component line by line to see what's going on:
+
+```js
+export default function Square() {
+	return <button className="square">X</button>;
+}
+```
+
+The first line defines a function called `Square`. The `export` JavaScript keyword makes this function accessible outside of this file. The `default` keyword tells other files using your code that it's the main function in your file.
+
+```js
+export default function Square() {
+	return <button className="square">X</button>;
+}
+```
+
+The second line returns a button. The `return` JavaScript keyword means whatever comes after is returned as a value to the caller of the function. `<button>` is a _JSX element_. A JSX element is a combination of JavaScript code and HTML tags that describes what you'd like to display. `className="square"` is a button property or _prop_ that tells CSS how to style the button. `X` is the text displayed inside of the button and `</button>` closes the JSX element to indicate that any following content shouldn't be placed inside the button.
+
+#### `styles.css`
+
+Click on the file labeled `styles.css` in the _Files_ section of CodeSandbox. This file defines the styles for your React app. The first two _CSS selectors_ (`*` and `body`) define the style of large parts of your app while the `.square` selector defines the style of any component where the `className` property is set to `square`. In your code, that would match the button from your Square component in the `App.js` file.
+
+#### `index.js`
+
+Click on the file labeled `index.js` in the _Files_ section of CodeSandbox. You won't be editing this file during the tutorial but it is the bridge between the component you created in the `App.js` file and the web browser.
+
+```jsx
+import { StrictMode } from "react";
+import { createRoot } from "react-dom/client";
+import "./styles.css";
+
+import App from "./App";
+```
+
+Lines 1-5 brings all the necessary pieces together:
+
+-   React
+-   React's library to talk to web browsers (React DOM)
+-   the styles for your components
+-   the component you created in `App.js`.
+
+The remainder of the file brings all the pieces together and injects the final product into `index.html` in the `public` folder.
+
+### Building the board
+
+Let's get back to `App.js`. This is where you'll spend the rest of the tutorial.
+
+Currently the board is only a single square, but you need nine! If you just try and copy paste your square to make two squares like this:
+
+```js
+export default function Square() {
+  return <button className="square">X</button><button className="square">X</button>;
+}
+```
+
+You'll get this error:
+
+<ConsoleBlock level="error">
+
+/src/App.js: Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment `<>...</>`?
+
+</ConsoleBlock>
+
+React components need to return a single JSX element and not multiple adjacent JSX elements like two buttons. To fix this you can use _fragments_ (`<>` and `</>`) to wrap multiple adjacent JSX elements like this:
+
+```js
+export default function Square() {
+	return (
+		<>
+			<button className="square">X</button>
+			<button className="square">X</button>
+		</>
+	);
+}
+```
+
+Now you should see:
+
+![two x-filled squares]()
+
+Great! Now you just need to copy-paste a few times to add nine squares and...
+
+![nine x-filled squares in a line]()
+
+Oh no! The squares are all in a single line, not in a grid like you need for our board. To fix this you'll need to group your squares into rows with `div`s and add some CSS classes. While you're at it, you'll give each square a number to make sure you know where each square is displayed.
+
+In the `App.js` file, update the `Square` component to look like this:
+
+```js
+export default function Square() {
+	return (
+		<>
+			<div className="board-row">
+				<button className="square">1</button>
+				<button className="square">2</button>
+				<button className="square">3</button>
+			</div>
+			<div className="board-row">
+				<button className="square">4</button>
+				<button className="square">5</button>
+				<button className="square">6</button>
+			</div>
+			<div className="board-row">
+				<button className="square">7</button>
+				<button className="square">8</button>
+				<button className="square">9</button>
+			</div>
+		</>
+	);
+}
+```
+
+The CSS defined in `styles.css` styles the divs with the `className` of `board-row`. Now that you've grouped your components into rows with the styled `div`s you have your tic-tac-toe board:
+
+![tic-tac-toe board filled with numbers 1 through 9]()
+
+But you now have a problem. Your component named `Square`, really isn't a square anymore. Let's fix that by changing the name to `Board`:
+
+```js
+export default function Board() {
+	//...
+}
+```
+
+At this point your code should look something like this:
+
+```js
+export default function Board() {
+	return (
+		<>
+			<div className="board-row">
+				<button className="square">1</button>
+				<button className="square">2</button>
+				<button className="square">3</button>
+			</div>
+			<div className="board-row">
+				<button className="square">4</button>
+				<button className="square">5</button>
+				<button className="square">6</button>
+			</div>
+			<div className="board-row">
+				<button className="square">7</button>
+				<button className="square">8</button>
+				<button className="square">9</button>
+			</div>
+		</>
+	);
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+<Note>
+
+Psssst... That's a lot to type! It's okay to copy and paste code from this page. However, if you're up for a little challenge, we recommend only copying code that you've manually typed at least once yourself.
+
+</Note>
+
+### Passing data through props
+
+Next, you'll want to change the value of a square from empty to "X" when the user clicks on the square. With how you've built the board so far you would need to copy-paste the code that updates the square nine times (once for each square you have)! Instead of copy-pasting, React's component architecture allows you to create a reusable component to avoid messy, duplicated code.
+
+First, you are going to copy the line defining your first square (`<button className="square">1</button>`) from your `Board` component into a new `Square` component:
+
+```js
+function Square() {
+	return <button className="square">1</button>;
+}
+
+export default function Board() {
+	// ...
+}
+```
+
+Then you'll update the Board component to render that `Square` component using JSX syntax:
+
+```js
+// ...
+export default function Board() {
+	return (
+		<>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+		</>
+	);
+}
+```
+
+Note how unlike the browser `div`s, your own components `Board` and `Square` must start with a capital letter.
+
+Let's take a look:
+
+![one-filled board]()
+
+Oh no! You lost the numbered squares you had before. Now each square says "1". To fix this, you will use _props_ to pass the value each square should have from the parent component (`Board`) to its child (`Square`).
+
+Update the `Square` component to read the `value` prop that you'll pass from the `Board`:
+
+```js
+function Square({ value }) {
+	return <button className="square">1</button>;
+}
+```
+
+`function Square({ value })` indicates the Square component can be passed a prop called `value`.
+
+Now you want to display that `value` instead of `1` inside every square. Try doing it like this:
+
+```js
+function Square({ value }) {
+	return <button className="square">value</button>;
+}
+```
+
+Oops, this is not what you wanted:
+
+![value-filled board]()
+
+You wanted to render the JavaScript variable called `value` from your component, not the word "value". To "escape into JavaScript" from JSX, you need curly braces. Add curly braces around `value` in JSX like so:
+
+```js
+function Square({ value }) {
+	return <button className="square">{value}</button>;
+}
+```
+
+For now, you should see an empty board:
+
+![empty board]()
+
+This is because the `Board` component hasn't passed the `value` prop to each `Square` component it renders yet. To fix it you'll add the `value` prop to each `Square` component rendered by the `Board` component:
+
+```js
+export default function Board() {
+	return (
+		<>
+			<div className="board-row">
+				<Square value="1" />
+				<Square value="2" />
+				<Square value="3" />
+			</div>
+			<div className="board-row">
+				<Square value="4" />
+				<Square value="5" />
+				<Square value="6" />
+			</div>
+			<div className="board-row">
+				<Square value="7" />
+				<Square value="8" />
+				<Square value="9" />
+			</div>
+		</>
+	);
+}
+```
+
+Now you should see a grid of numbers again:
+
+![tic-tac-toe board filled with numbers 1 through 9]()
+
+Your updated code should look like this:
+
+```js
+function Square({ value }) {
+	return <button className="square">{value}</button>;
+}
+
+export default function Board() {
+	return (
+		<>
+			<div className="board-row">
+				<Square value="1" />
+				<Square value="2" />
+				<Square value="3" />
+			</div>
+			<div className="board-row">
+				<Square value="4" />
+				<Square value="5" />
+				<Square value="6" />
+			</div>
+			<div className="board-row">
+				<Square value="7" />
+				<Square value="8" />
+				<Square value="9" />
+			</div>
+		</>
+	);
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+### Making an interactive component
+
+Let's fill the `Square` component with an `X` when you click it. Declare a function called `handleClick` inside of the `Square`. Then, add `on_click` to the props of the button JSX element returned from the `Square`:
+
+```js
+function Square({ value }) {
+	function handleClick() {
+		console.log("clicked!");
+	}
+
+	return (
+		<button className="square" on_click={handleClick}>
+			{value}
+		</button>
+	);
+}
+```
+
+If you click on a square now, you should see a log saying `"clicked!"` in the _Console_ tab at the bottom of the _Browser_ section in CodeSandbox. Clicking the square more than once will log `"clicked!"` again. Repeated console logs with the same message will not create more lines in the console. Instead, you will see an incrementing counter next to your first `"clicked!"` log.
+
+<Note>
+
+If you are following this tutorial using your local development environment, you need to open your browser's Console. For example, if you use the Chrome browser, you can view the Console with the keyboard shortcut **Shift + Ctrl + J** (on Windows/Linux) or **Option + ⌘ + J** (on macOS).
+
+</Note>
+
+As a next step, you want the Square component to "remember" that it got clicked, and fill it with an "X" mark. To "remember" things, components use _state_.
+
+React provides a special function called `useState` that you can call from your component to let it "remember" things. Let's store the current value of the `Square` in state, and change it when the `Square` is clicked.
+
+Import `useState` at the top of the file. Remove the `value` prop from the `Square` component. Instead, add a new line at the start of the `Square` that calls `useState`. Have it return a state variable called `value`:
+
+```js
+import { useState } from 'react';
+
+function Square() {
+  const [value, setValue] = useState(null);
+
+  function handleClick() {
+    //...
+```
+
+`value` stores the value and `setValue` is a function that can be used to change the value. The `null` passed to `useState` is used as the initial value for this state variable, so `value` here starts off equal to `null`.
+
+Since the `Square` component no longer accepts props anymore, you'll remove the `value` prop from all nine of the Square components created by the Board component:
+
+```js
+// ...
+export default function Board() {
+	return (
+		<>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+		</>
+	);
+}
+```
+
+Now you'll change `Square` to display an "X" when clicked. Replace the `console.log("clicked!");` event handler with `setValue('X');`. Now your `Square` component looks like this:
+
+```js
+function Square() {
+	const [value, setValue] = useState(null);
+
+	function handleClick() {
+		setValue("X");
+	}
+
+	return (
+		<button className="square" on_click={handleClick}>
+			{value}
+		</button>
+	);
+}
+```
+
+By calling this `set` function from an `on_click` handler, you're telling React to re-render that `Square` whenever its `<button>` is clicked. After the update, the `Square`'s `value` will be `'X'`, so you'll see the "X" on the game board. Click on any Square, and "X" should show up:
+
+![adding xes to board]()
+
+Each Square has its own state: the `value` stored in each Square is completely independent of the others. When you call a `set` function in a component, React automatically updates the child components inside too.
+
+After you've made the above changes, your code will look like this:
+
+```js
+import { useState } from "react";
+
+function Square() {
+	const [value, setValue] = useState(null);
+
+	function handleClick() {
+		setValue("X");
+	}
+
+	return (
+		<button className="square" on_click={handleClick}>
+			{value}
+		</button>
+	);
+}
+
+export default function Board() {
+	return (
+		<>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+			<div className="board-row">
+				<Square />
+				<Square />
+				<Square />
+			</div>
+		</>
+	);
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+### React Developer Tools
+
+React DevTools let you check the props and the state of your React components. You can find the React DevTools tab at the bottom of the _browser_ section in CodeSandbox:
+
+![React DevTools in CodeSandbox]()
+
+To inspect a particular component on the screen, use the button in the top left corner of React DevTools:
+
+![Selecting components on the page with React DevTools]()
+
+<Note>
+
+For local development, React DevTools is available as a [Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en), [Firefox](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/), and [Edge](https://microsoftedge.microsoft.com/addons/detail/react-developer-tools/gpphkfbcpidddadnkolkpfckpihlkkil) browser extension. Install it, and the _Components_ tab will appear in your browser Developer Tools for sites using React.
+
+</Note>
+
+## Completing the game
+
+By this point, you have all the basic building blocks for your tic-tac-toe game. To have a complete game, you now need to alternate placing "X"s and "O"s on the board, and you need a way to determine a winner.
+
+### Lifting state up
+
+Currently, each `Square` component maintains a part of the game's state. To check for a winner in a tic-tac-toe game, the `Board` would need to somehow know the state of each of the 9 `Square` components.
+
+How would you approach that? At first, you might guess that the `Board` needs to "ask" each `Square` for that `Square`'s state. Although this approach is technically possible in React, we discourage it because the code becomes difficult to understand, susceptible to bugs, and hard to refactor. Instead, the best approach is to store the game's state in the parent `Board` component instead of in each `Square`. The `Board` component can tell each `Square` what to display by passing a prop, like you did when you passed a number to each Square.
+
+**To collect data from multiple children, or to have two child components communicate with each other, declare the shared state in their parent component instead. The parent component can pass that state back down to the children via props. This keeps the child components in sync with each other and with their parent.**
+
+Lifting state into a parent component is common when React components are refactored.
+
+Let's take this opportunity to try it out. Edit the `Board` component so that it declares a state variable named `squares` that defaults to an array of 9 nulls corresponding to the 9 squares:
+
+```js
+// ...
+export default function Board() {
+  const [squares, setSquares] = useState(Array(9).fill(null));
+  return (
+    // ...
+  );
+}
+```
+
+`Array(9).fill(null)` creates an array with nine elements and sets each of them to `null`. The `useState()` call around it declares a `squares` state variable that's initially set to that array. Each entry in the array corresponds to the value of a square. When you fill the board in later, the `squares` array will look like this:
+
+```jsx
+["O", null, "X", "X", "X", "O", "O", null, null];
+```
+
+Now your `Board` component needs to pass the `value` prop down to each `Square` that it renders:
+
+```js
+export default function Board() {
+	const [squares, setSquares] = useState(Array(9).fill(null));
+	return (
+		<>
+			<div className="board-row">
+				<Square value={squares[0]} />
+				<Square value={squares[1]} />
+				<Square value={squares[2]} />
+			</div>
+			<div className="board-row">
+				<Square value={squares[3]} />
+				<Square value={squares[4]} />
+				<Square value={squares[5]} />
+			</div>
+			<div className="board-row">
+				<Square value={squares[6]} />
+				<Square value={squares[7]} />
+				<Square value={squares[8]} />
+			</div>
+		</>
+	);
+}
+```
+
+Next, you'll edit the `Square` component to receive the `value` prop from the Board component. This will require removing the Square component's own stateful tracking of `value` and the button's `on_click` prop:
+
+```js
+function Square({ value }) {
+	return <button className="square">{value}</button>;
+}
+```
+
+At this point you should see an empty tic-tac-toe board:
+
+![empty board]()
+
+And your code should look like this:
+
+```js
+import { useState } from "react";
+
+function Square({ value }) {
+	return <button className="square">{value}</button>;
+}
+
+export default function Board() {
+	const [squares, setSquares] = useState(Array(9).fill(null));
+	return (
+		<>
+			<div className="board-row">
+				<Square value={squares[0]} />
+				<Square value={squares[1]} />
+				<Square value={squares[2]} />
+			</div>
+			<div className="board-row">
+				<Square value={squares[3]} />
+				<Square value={squares[4]} />
+				<Square value={squares[5]} />
+			</div>
+			<div className="board-row">
+				<Square value={squares[6]} />
+				<Square value={squares[7]} />
+				<Square value={squares[8]} />
+			</div>
+		</>
+	);
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+Each Square will now receive a `value` prop that will either be `'X'`, `'O'`, or `null` for empty squares.
+
+Next, you need to change what happens when a `Square` is clicked. The `Board` component now maintains which squares are filled. You'll need to create a way for the `Square` to update the `Board`'s state. Since state is private to a component that defines it, you cannot update the `Board`'s state directly from `Square`.
+
+Instead, you'll pass down a function from the `Board` component to the `Square` component, and you'll have `Square` call that function when a square is clicked. You'll start with the function that the `Square` component will call when it is clicked. You'll call that function `onSquareClick`:
+
+```js
+function Square({ value }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+```
+
+Next, you'll add the `onSquareClick` function to the `Square` component's props:
+
+```js
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+```
+
+Now you'll connect the `onSquareClick` prop to a function in the `Board` component that you'll name `handleClick`. To connect `onSquareClick` to `handleClick` you'll pass a function to the `onSquareClick` prop of the first `Square` component:
+
+```js
+export default function Board() {
+  const [squares, setSquares] = useState(Array(9).fill(null));
+
+  return (
+    <>
+      <div className="board-row">
+        <Square value={squares[0]} onSquareClick={handleClick} />
+        //...
+  );
+}
+```
+
+Lastly, you will define the `handleClick` function inside the Board component to update the `squares` array holding your board's state:
+
+```js
+export default function Board() {
+  const [squares, setSquares] = useState(Array(9).fill(null));
+
+  function handleClick() {
+    const nextSquares = squares.slice();
+    nextSquares[0] = "X";
+    setSquares(nextSquares);
+  }
+
+  return (
+    // ...
+  )
+}
+```
+
+The `handleClick` function creates a copy of the `squares` array (`nextSquares`) with the JavaScript `slice()` Array method. Then, `handleClick` updates the `nextSquares` array to add `X` to the first (`[0]` index) square.
+
+Calling the `setSquares` function lets React know the state of the component has changed. This will trigger a re-render of the components that use the `squares` state (`Board`) as well as its child components (the `Square` components that make up the board).
+
+<Note>
+
+JavaScript supports [closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures) which means an inner function (e.g. `handleClick`) has access to variables and functions defined in a outer function (e.g. `Board`). The `handleClick` function can read the `squares` state and call the `setSquares` method because they are both defined inside of the `Board` function.
+
+</Note>
+
+Now you can add X's to the board... but only to the upper left square. Your `handleClick` function is hardcoded to update the index for the upper left square (`0`). Let's update `handleClick` to be able to update any square. Add an argument `i` to the `handleClick` function that takes the index of the square to update:
+
+```js
+export default function Board() {
+  const [squares, setSquares] = useState(Array(9).fill(null));
+
+  function handleClick(i) {
+    const nextSquares = squares.slice();
+    nextSquares[i] = "X";
+    setSquares(nextSquares);
+  }
+
+  return (
+    // ...
+  )
+}
+```
+
+Next, you will need to pass that `i` to `handleClick`. You could try to set the `onSquareClick` prop of square to be `handleClick(0)` directly in the JSX like this, but it won't work:
+
+```jsx
+<Square value={squares[0]} onSquareClick={handleClick(0)} />
+```
+
+Here is why this doesn't work. The `handleClick(0)` call will be a part of rendering the board component. Because `handleClick(0)` alters the state of the board component by calling `setSquares`, your entire board component will be re-rendered again. But this runs `handleClick(0)` again, leading to an infinite loop:
+
+<ConsoleBlock level="error">
+
+Too many re-renders. React limits the number of renders to prevent an infinite loop.
+
+</ConsoleBlock>
+
+Why didn't this problem happen earlier?
+
+When you were passing `onSquareClick={handleClick}`, you were passing the `handleClick` function down as a prop. You were not calling it! But now you are _calling_ that function right away--notice the parentheses in `handleClick(0)`--and that's why it runs too early. You don't _want_ to call `handleClick` until the user clicks!
+
+You could fix by creating a function like `handleFirstSquareClick` that calls `handleClick(0)`, a function like `handleSecondSquareClick` that calls `handleClick(1)`, and so on. You would pass (rather than call) these functions down as props like `onSquareClick={handleFirstSquareClick}`. This would solve the infinite loop.
+
+However, defining nine different functions and giving each of them a name is too verbose. Instead, let's do this:
+
+```js
+export default function Board() {
+  // ...
+  return (
+    <>
+      <div className="board-row">
+        <Square value={squares[0]} onSquareClick={() => handleClick(0)} />
+        // ...
+  );
+}
+```
+
+Notice the new `() =>` syntax. Here, `() => handleClick(0)` is an _arrow function,_ which is a shorter way to define functions. When the square is clicked, the code after the `=>` "arrow" will run, calling `handleClick(0)`.
+
+Now you need to update the other eight squares to call `handleClick` from the arrow functions you pass. Make sure that the argument for each call of the `handleClick` corresponds to the index of the correct square:
+
+```js
+export default function Board() {
+	// ...
+	return (
+		<>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+```
+
+Now you can again add X's to any square on the board by clicking on them:
+
+![filling the board with X]()
+
+But this time all the state management is handled by the `Board` component!
+
+This is what your code should look like:
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+export default function Board() {
+	const [squares, setSquares] = useState(Array(9).fill(null));
+
+	function handleClick(i) {
+		const nextSquares = squares.slice();
+		nextSquares[i] = "X";
+		setSquares(nextSquares);
+	}
+
+	return (
+		<>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+Now that your state handling is in the `Board` component, the parent `Board` component passes props to the child `Square` components so that they can be displayed correctly. When clicking on a `Square`, the child `Square` component now asks the parent `Board` component to update the state of the board. When the `Board`'s state changes, both the `Board` component and every child `Square` re-renders automatically. Keeping the state of all squares in the `Board` component will allow it to determine the winner in the future.
+
+Let's recap what happens when a user clicks the top left square on your board to add an `X` to it:
+
+1. Clicking on the upper left square runs the function that the `button` received as its `on_click` prop from the `Square`. The `Square` component received that function as its `onSquareClick` prop from the `Board`. The `Board` component defined that function directly in the JSX. It calls `handleClick` with an argument of `0`.
+1. `handleClick` uses the argument (`0`) to update the first element of the `squares` array from `null` to `X`.
+1. The `squares` state of the `Board` component was updated, so the `Board` and all of its children re-render. This causes the `value` prop of the `Square` component with index `0` to change from `null` to `X`.
+
+In the end the user sees that the upper left square has changed from empty to having a `X` after clicking it.
+
+<Note>
+
+The DOM `<button>` element's `on_click` attribute has a special meaning to React because it is a built-in component. For custom components like Square, the naming is up to you. You could give any name to the `Square`'s `onSquareClick` prop or `Board`'s `handleClick` function, and the code would work the same. In React, it's conventional to use `onSomething` names for props which represent events and `handleSomething` for the function definitions which handle those events.
+
+</Note>
+
+### Why immutability is important
+
+Note how in `handleClick`, you call `.slice()` to create a copy of the `squares` array instead of modifying the existing array. To explain why, we need to discuss immutability and why immutability is important to learn.
+
+There are generally two approaches to changing data. The first approach is to _mutate_ the data by directly changing the data's values. The second approach is to replace the data with a new copy which has the desired changes. Here is what it would look like if you mutated the `squares` array:
+
+```jsx
+const squares = [null, null, null, null, null, null, null, null, null];
+squares[0] = "X";
+// Now `squares` is ["X", null, null, null, null, null, null, null, null];
+```
+
+And here is what it would look like if you changed data without mutating the `squares` array:
+
+```jsx
+const squares = [null, null, null, null, null, null, null, null, null];
+const nextSquares = ["X", null, null, null, null, null, null, null, null];
+// Now `squares` is unchanged, but `nextSquares` first element is 'X' rather than `null`
+```
+
+The result is the same but by not mutating (changing the underlying data) directly, you gain several benefits.
+
+Immutability makes complex features much easier to implement. Later in this tutorial, you will implement a "time travel" feature that lets you review the game's history and "jump back" to past moves. This functionality isn't specific to games--an ability to undo and redo certain actions is a common requirement for apps. Avoiding direct data mutation lets you keep previous versions of the data intact, and reuse them later.
+
+There is also another benefit of immutability. By default, all child components re-render automatically when the state of a parent component changes. This includes even the child components that weren't affected by the change. Although re-rendering is not by itself noticeable to the user (you shouldn't actively try to avoid it!), you might want to skip re-rendering a part of the tree that clearly wasn't affected by it for performance reasons. Immutability makes it very cheap for components to compare whether their data has changed or not. You can learn more about how React chooses when to re-render a component in [the `memo` API reference](/reference/react/memo).
+
+### Taking turns
+
+It's now time to fix a major defect in this tic-tac-toe game: the "O"s cannot be marked on the board.
+
+You'll set the first move to be "X" by default. Let's keep track of this by adding another piece of state to the Board component:
+
+```js
+function Board() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [squares, setSquares] = useState(Array(9).fill(null));
+
+	// ...
+}
+```
+
+Each time a player moves, `xIsNext` (a boolean) will be flipped to determine which player goes next and the game's state will be saved. You'll update the `Board`'s `handleClick` function to flip the value of `xIsNext`:
+
+```js
+export default function Board() {
+  const [xIsNext, setXIsNext] = useState(true);
+  const [squares, setSquares] = useState(Array(9).fill(null));
+
+  function handleClick(i) {
+    const nextSquares = squares.slice();
+    if (xIsNext) {
+      nextSquares[i] = "X";
+    } else {
+      nextSquares[i] = "O";
+    }
+    setSquares(nextSquares);
+    setXIsNext(!xIsNext);
+  }
+
+  return (
+    //...
+  );
+}
+```
+
+Now, as you click on different squares, they will alternate between `X` and `O`, as they should!
+
+But wait, there's a problem. Try clicking on the same square multiple times:
+
+![O overwriting an X]()
+
+The `X` is overwritten by an `O`! While this would add a very interesting twist to the game, we're going to stick to the original rules for now.
+
+When you mark a square with a `X` or an `O` you aren't first checking to see if the square already has a `X` or `O` value. You can fix this by _returning early_. You'll check to see if the square already has a `X` or an `O`. If the square is already filled, you will `return` in the `handleClick` function early--before it tries to update the board state.
+
+```js
+function handleClick(i) {
+	if (squares[i]) {
+		return;
+	}
+	const nextSquares = squares.slice();
+	//...
+}
+```
+
+Now you can only add `X`'s or `O`'s to empty squares! Here is what your code should look like at this point:
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+export default function Board() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [squares, setSquares] = useState(Array(9).fill(null));
+
+	function handleClick(i) {
+		if (squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		setSquares(nextSquares);
+		setXIsNext(!xIsNext);
+	}
+
+	return (
+		<>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+### Declaring a winner
+
+Now that the players can take turns, you'll want to show when the game is won and there are no more turns to make. To do this you'll add a helper function called `calculateWinner` that takes an array of 9 squares, checks for a winner and returns `'X'`, `'O'`, or `null` as appropriate. Don't worry too much about the `calculateWinner` function; it's not specific to React:
+
+```js
+export default function Board() {
+	//...
+}
+
+function calculateWinner(squares) {
+	const lines = [
+		[0, 1, 2],
+		[3, 4, 5],
+		[6, 7, 8],
+		[0, 3, 6],
+		[1, 4, 7],
+		[2, 5, 8],
+		[0, 4, 8],
+		[2, 4, 6],
+	];
+	for (let i = 0; i < lines.length; i++) {
+		const [a, b, c] = lines[i];
+		if (
+			squares[a] &&
+			squares[a] === squares[b] &&
+			squares[a] === squares[c]
+		) {
+			return squares[a];
+		}
+	}
+	return null;
+}
+```
+
+<Note>
+
+It does not matter whether you define `calculateWinner` before or after the `Board`. Let's put it at the end so that you don't have to scroll past it every time you edit your components.
+
+</Note>
+
+You will call `calculateWinner(squares)` in the `Board` component's `handleClick` function to check if a player has won. You can perform this check at the same time you check if a user has clicked a square that already has a `X` or and `O`. We'd like to return early in both cases:
+
+```js
+function handleClick(i) {
+	if (squares[i] || calculateWinner(squares)) {
+		return;
+	}
+	const nextSquares = squares.slice();
+	//...
+}
+```
+
+To let the players know when the game is over, you can display text such as "Winner: X" or "Winner: O". To do that you'll add a `status` section to the `Board` component. The status will display the winner if the game is over and if the game is ongoing you'll display which player's turn is next:
+
+```js
+export default function Board() {
+  // ...
+  const winner = calculateWinner(squares);
+  let status;
+  if (winner) {
+    status = "Winner: " + winner;
+  } else {
+    status = "Next player: " + (xIsNext ? "X" : "O");
+  }
+
+  return (
+    <>
+      <div className="status">{status}</div>
+      <div className="board-row">
+        // ...
+  )
+}
+```
+
+Congratulations! You now have a working tic-tac-toe game. And you've just learned the basics of React too. So _you_ are the real winner here. Here is what the code should look like:
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+export default function Board() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [squares, setSquares] = useState(Array(9).fill(null));
+
+	function handleClick(i) {
+		if (calculateWinner(squares) || squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		setSquares(nextSquares);
+		setXIsNext(!xIsNext);
+	}
+
+	const winner = calculateWinner(squares);
+	let status;
+	if (winner) {
+		status = "Winner: " + winner;
+	} else {
+		status = "Next player: " + (xIsNext ? "X" : "O");
+	}
+
+	return (
+		<>
+			<div className="status">{status}</div>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+
+function calculateWinner(squares) {
+	const lines = [
+		[0, 1, 2],
+		[3, 4, 5],
+		[6, 7, 8],
+		[0, 3, 6],
+		[1, 4, 7],
+		[2, 5, 8],
+		[0, 4, 8],
+		[2, 4, 6],
+	];
+	for (let i = 0; i < lines.length; i++) {
+		const [a, b, c] = lines[i];
+		if (
+			squares[a] &&
+			squares[a] === squares[b] &&
+			squares[a] === squares[c]
+		) {
+			return squares[a];
+		}
+	}
+	return null;
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+## Adding time travel
+
+As a final exercise, let's make it possible to "go back in time" to the previous moves in the game.
+
+### Storing a history of moves
+
+If you mutated the `squares` array, implementing time travel would be very difficult.
+
+However, you used `slice()` to create a new copy of the `squares` array after every move, and treated it as immutable. This will allow you to store every past version of the `squares` array, and navigate between the turns that have already happened.
+
+You'll store the past `squares` arrays in another array called `history`, which you'll store as a new state variable. The `history` array represents all board states, from the first to the last move, and has a shape like this:
+
+```jsx
+[
+	// Before first move
+	[null, null, null, null, null, null, null, null, null],
+	// After first move
+	[null, null, null, null, "X", null, null, null, null],
+	// After second move
+	[null, null, null, null, "X", null, null, null, "O"],
+	// ...
+];
+```
+
+### Lifting state up, again
+
+You will now write a new top-level component called `Game` to display a list of past moves. That's where you will place the `history` state that contains the entire game history.
+
+Placing the `history` state into the `Game` component will let you remove the `squares` state from its child `Board` component. Just like you "lifted state up" from the `Square` component into the `Board` component, you will now lift it up from the `Board` into the top-level `Game` component. This gives the `Game` component full control over the `Board`'s data and lets it instruct the `Board` to render previous turns from the `history`.
+
+First, add a `Game` component with `export default`. Have it render the `Board` component and some markup:
+
+```js
+function Board() {
+	// ...
+}
+
+export default function Game() {
+	return (
+		<div className="game">
+			<div className="game-board">
+				<Board />
+			</div>
+			<div className="game-info">
+				<ol>{/*TODO*/}</ol>
+			</div>
+		</div>
+	);
+}
+```
+
+Note that you are removing the `export default` keywords before the `function Board() {` declaration and adding them before the `function Game() {` declaration. This tells your `index.js` file to use the `Game` component as the top-level component instead of your `Board` component. The additional `div`s returned by the `Game` component are making room for the game information you'll add to the board later.
+
+Add some state to the `Game` component to track which player is next and the history of moves:
+
+```js
+export default function Game() {
+  const [xIsNext, setXIsNext] = useState(true);
+  const [history, setHistory] = useState([Array(9).fill(null)]);
+  // ...
+```
+
+Notice how `[Array(9).fill(null)]` is an array with a single item, which itself is an array of 9 `null`s.
+
+To render the squares for the current move, you'll want to read the last squares array from the `history`. You don't need `useState` for this--you already have enough information to calculate it during rendering:
+
+```js
+export default function Game() {
+  const [xIsNext, setXIsNext] = useState(true);
+  const [history, setHistory] = useState([Array(9).fill(null)]);
+  const currentSquares = history[history.length - 1];
+  // ...
+```
+
+Next, create a `handlePlay` function inside the `Game` component that will be called by the `Board` component to update the game. Pass `xIsNext`, `currentSquares` and `handlePlay` as props to the `Board` component:
+
+```js
+export default function Game() {
+  const [xIsNext, setXIsNext] = useState(true);
+  const [history, setHistory] = useState([Array(9).fill(null)]);
+  const currentSquares = history[history.length - 1];
+
+  function handlePlay(nextSquares) {
+    // TODO
+  }
+
+  return (
+    <div className="game">
+      <div className="game-board">
+        <Board xIsNext={xIsNext} squares={currentSquares} onPlay={handlePlay} />
+        //...
+  )
+}
+```
+
+Let's make the `Board` component fully controlled by the props it receives. Change the `Board` component to take three props: `xIsNext`, `squares`, and a new `onPlay` function that `Board` can call with the updated squares array when a player makes a move. Next, remove the first two lines of the `Board` function that call `useState`:
+
+```js
+function Board({ xIsNext, squares, onPlay }) {
+	function handleClick(i) {
+		//...
+	}
+	// ...
+}
+```
+
+Now replace the `setSquares` and `setXIsNext` calls in `handleClick` in the `Board` component with a single call to your new `onPlay` function so the `Game` component can update the `Board` when the user clicks a square:
+
+```js
+function Board({ xIsNext, squares, onPlay }) {
+	function handleClick(i) {
+		if (calculateWinner(squares) || squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		onPlay(nextSquares);
+	}
+	//...
+}
+```
+
+The `Board` component is fully controlled by the props passed to it by the `Game` component. You need to implement the `handlePlay` function in the `Game` component to get the game working again.
+
+What should `handlePlay` do when called? Remember that Board used to call `setSquares` with an updated array; now it passes the updated `squares` array to `onPlay`.
+
+The `handlePlay` function needs to update `Game`'s state to trigger a re-render, but you don't have a `setSquares` function that you can call any more--you're now using the `history` state variable to store this information. You'll want to update `history` by appending the updated `squares` array as a new history entry. You also want to toggle `xIsNext`, just as Board used to do:
+
+```js
+export default function Game() {
+	//...
+	function handlePlay(nextSquares) {
+		setHistory([...history, nextSquares]);
+		setXIsNext(!xIsNext);
+	}
+	//...
+}
+```
+
+Here, `[...history, nextSquares]` creates a new array that contains all the items in `history`, followed by `nextSquares`. (You can read the `...history` [_spread syntax_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax) as "enumerate all the items in `history`".)
+
+For example, if `history` is `[[null,null,null], ["X",null,null]]` and `nextSquares` is `["X",null,"O"]`, then the new `[...history, nextSquares]` array will be `[[null,null,null], ["X",null,null], ["X",null,"O"]]`.
+
+At this point, you've moved the state to live in the `Game` component, and the UI should be fully working, just as it was before the refactor. Here is what the code should look like at this point:
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+function Board({ xIsNext, squares, onPlay }) {
+	function handleClick(i) {
+		if (calculateWinner(squares) || squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		onPlay(nextSquares);
+	}
+
+	const winner = calculateWinner(squares);
+	let status;
+	if (winner) {
+		status = "Winner: " + winner;
+	} else {
+		status = "Next player: " + (xIsNext ? "X" : "O");
+	}
+
+	return (
+		<>
+			<div className="status">{status}</div>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+
+export default function Game() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const currentSquares = history[history.length - 1];
+
+	function handlePlay(nextSquares) {
+		setHistory([...history, nextSquares]);
+		setXIsNext(!xIsNext);
+	}
+
+	return (
+		<div className="game">
+			<div className="game-board">
+				<Board
+					xIsNext={xIsNext}
+					squares={currentSquares}
+					onPlay={handlePlay}
+				/>
+			</div>
+			<div className="game-info">
+				<ol>{/*TODO*/}</ol>
+			</div>
+		</div>
+	);
+}
+
+function calculateWinner(squares) {
+	const lines = [
+		[0, 1, 2],
+		[3, 4, 5],
+		[6, 7, 8],
+		[0, 3, 6],
+		[1, 4, 7],
+		[2, 5, 8],
+		[0, 4, 8],
+		[2, 4, 6],
+	];
+	for (let i = 0; i < lines.length; i++) {
+		const [a, b, c] = lines[i];
+		if (
+			squares[a] &&
+			squares[a] === squares[b] &&
+			squares[a] === squares[c]
+		) {
+			return squares[a];
+		}
+	}
+	return null;
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+### Showing the past moves
+
+Since you are recording the tic-tac-toe game's history, you can now display a list of past moves to the player.
+
+React elements like `<button>` are regular JavaScript objects; you can pass them around in your application. To render multiple items in React, you can use an array of React elements.
+
+You already have an array of `history` moves in state, so now you need to transform it to an array of React elements. In JavaScript, to transform one array into another, you can use the [array `map` method:](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
+
+```jsx
+[1, 2, 3].map((x) => x * 2); // [2, 4, 6]
+```
+
+You'll use `map` to transform your `history` of moves into React elements representing buttons on the screen, and display a list of buttons to "jump" to past moves. Let's `map` over the `history` in the Game component:
+
+```js
+export default function Game() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const currentSquares = history[history.length - 1];
+
+	function handlePlay(nextSquares) {
+		setHistory([...history, nextSquares]);
+		setXIsNext(!xIsNext);
+	}
+
+	function jumpTo(nextMove) {
+		// TODO
+	}
+
+	const moves = history.map((squares, move) => {
+		let description;
+		if (move > 0) {
+			description = "Go to move #" + move;
+		} else {
+			description = "Go to game start";
+		}
+		return (
+			<li>
+				<button on_click={() => jumpTo(move)}>{description}</button>
+			</li>
+		);
+	});
+
+	return (
+		<div className="game">
+			<div className="game-board">
+				<Board
+					xIsNext={xIsNext}
+					squares={currentSquares}
+					onPlay={handlePlay}
+				/>
+			</div>
+			<div className="game-info">
+				<ol>{moves}</ol>
+			</div>
+		</div>
+	);
+}
+```
+
+You can see what your code should look like below. Note that you should see an error in the developer tools console that says: `` Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `Game`. `` You'll fix this error in the next section.
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+function Board({ xIsNext, squares, onPlay }) {
+	function handleClick(i) {
+		if (calculateWinner(squares) || squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		onPlay(nextSquares);
+	}
+
+	const winner = calculateWinner(squares);
+	let status;
+	if (winner) {
+		status = "Winner: " + winner;
+	} else {
+		status = "Next player: " + (xIsNext ? "X" : "O");
+	}
+
+	return (
+		<>
+			<div className="status">{status}</div>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+
+export default function Game() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const currentSquares = history[history.length - 1];
+
+	function handlePlay(nextSquares) {
+		setHistory([...history, nextSquares]);
+		setXIsNext(!xIsNext);
+	}
+
+	function jumpTo(nextMove) {
+		// TODO
+	}
+
+	const moves = history.map((squares, move) => {
+		let description;
+		if (move > 0) {
+			description = "Go to move #" + move;
+		} else {
+			description = "Go to game start";
+		}
+		return (
+			<li>
+				<button on_click={() => jumpTo(move)}>{description}</button>
+			</li>
+		);
+	});
+
+	return (
+		<div className="game">
+			<div className="game-board">
+				<Board
+					xIsNext={xIsNext}
+					squares={currentSquares}
+					onPlay={handlePlay}
+				/>
+			</div>
+			<div className="game-info">
+				<ol>{moves}</ol>
+			</div>
+		</div>
+	);
+}
+
+function calculateWinner(squares) {
+	const lines = [
+		[0, 1, 2],
+		[3, 4, 5],
+		[6, 7, 8],
+		[0, 3, 6],
+		[1, 4, 7],
+		[2, 5, 8],
+		[0, 4, 8],
+		[2, 4, 6],
+	];
+	for (let i = 0; i < lines.length; i++) {
+		const [a, b, c] = lines[i];
+		if (
+			squares[a] &&
+			squares[a] === squares[b] &&
+			squares[a] === squares[c]
+		) {
+			return squares[a];
+		}
+	}
+	return null;
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+As you iterate through `history` array inside the function you passed to `map`, the `squares` argument goes through each element of `history`, and the `move` argument goes through each array index: `0`, `1`, `2`, …. (In most cases, you'd need the actual array elements, but to render a list of moves you will only need indexes.)
+
+For each move in the tic-tac-toe game's history, you create a list item `<li>` which contains a button `<button>`. The button has an `on_click` handler which calls a function called `jumpTo` (that you haven't implemented yet).
+
+For now, you should see a list of the moves that occurred in the game and an error in the developer tools console. Let's discuss what the "key" error means.
+
+### Picking a key
+
+When you render a list, React stores some information about each rendered list item. When you update a list, React needs to determine what has changed. You could have added, removed, re-arranged, or updated the list's items.
+
+Imagine transitioning from
+
+```html
+<li>Alexa: 7 tasks left</li>
+<li>Ben: 5 tasks left</li>
+```
+
+to
+
+```html
+<li>Ben: 9 tasks left</li>
+<li>Claudia: 8 tasks left</li>
+<li>Alexa: 5 tasks left</li>
+```
+
+In addition to the updated counts, a human reading this would probably say that you swapped Alexa and Ben's ordering and inserted Claudia between Alexa and Ben. However, React is a computer program and can't know what you intended, so you need to specify a _key_ property for each list item to differentiate each list item from its siblings. If your data was from a database, Alexa, Ben, and Claudia's database IDs could be used as keys.
+
+```js
+<li key={user.id}>
+	{user.name}: {user.taskCount} tasks left
+</li>
+```
+
+When a list is re-rendered, React takes each list item's key and searches the previous list's items for a matching key. If the current list has a key that didn't exist before, React creates a component. If the current list is missing a key that existed in the previous list, React destroys the previous component. If two keys match, the corresponding component is moved.
+
+Keys tell React about the identity of each component, which allows React to maintain state between re-renders. If a component's key changes, the component will be destroyed and re-created with a new state.
+
+`key` is a special and reserved property in React. When an element is created, React extracts the `key` property and stores the key directly on the returned element. Even though `key` may look like it is passed as props, React automatically uses `key` to decide which components to update. There's no way for a component to ask what `key` its parent specified.
+
+**It's strongly recommended that you assign proper keys whenever you build dynamic lists.** If you don't have an appropriate key, you may want to consider restructuring your data so that you do.
+
+If no key is specified, React will report an error and use the array index as a key by default. Using the array index as a key is problematic when trying to re-order a list's items or inserting/removing list items. Explicitly passing `key={i}` silences the error but has the same problems as array indices and is not recommended in most cases.
+
+Keys do not need to be globally unique; they only need to be unique between components and their siblings.
+
+### Implementing time travel
+
+In the tic-tac-toe game's history, each past move has a unique ID associated with it: it's the sequential number of the move. Moves will never be re-ordered, deleted, or inserted in the middle, so it's safe to use the move index as a key.
+
+In the `Game` function, you can add the key as `<li key={move}>`, and if you reload the rendered game, React's "key" error should disappear:
+
+```js
+const moves = history.map((squares, move) => {
+	//...
+	return (
+		<li key={move}>
+			<button on_click={() => jumpTo(move)}>{description}</button>
+		</li>
+	);
+});
+```
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+function Board({ xIsNext, squares, onPlay }) {
+	function handleClick(i) {
+		if (calculateWinner(squares) || squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		onPlay(nextSquares);
+	}
+
+	const winner = calculateWinner(squares);
+	let status;
+	if (winner) {
+		status = "Winner: " + winner;
+	} else {
+		status = "Next player: " + (xIsNext ? "X" : "O");
+	}
+
+	return (
+		<>
+			<div className="status">{status}</div>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+
+export default function Game() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const currentSquares = history[history.length - 1];
+
+	function handlePlay(nextSquares) {
+		setHistory([...history, nextSquares]);
+		setXIsNext(!xIsNext);
+	}
+
+	function jumpTo(nextMove) {
+		// TODO
+	}
+
+	const moves = history.map((squares, move) => {
+		let description;
+		if (move > 0) {
+			description = "Go to move #" + move;
+		} else {
+			description = "Go to game start";
+		}
+		return (
+			<li key={move}>
+				<button on_click={() => jumpTo(move)}>{description}</button>
+			</li>
+		);
+	});
+
+	return (
+		<div className="game">
+			<div className="game-board">
+				<Board
+					xIsNext={xIsNext}
+					squares={currentSquares}
+					onPlay={handlePlay}
+				/>
+			</div>
+			<div className="game-info">
+				<ol>{moves}</ol>
+			</div>
+		</div>
+	);
+}
+
+function calculateWinner(squares) {
+	const lines = [
+		[0, 1, 2],
+		[3, 4, 5],
+		[6, 7, 8],
+		[0, 3, 6],
+		[1, 4, 7],
+		[2, 5, 8],
+		[0, 4, 8],
+		[2, 4, 6],
+	];
+	for (let i = 0; i < lines.length; i++) {
+		const [a, b, c] = lines[i];
+		if (
+			squares[a] &&
+			squares[a] === squares[b] &&
+			squares[a] === squares[c]
+		) {
+			return squares[a];
+		}
+	}
+	return null;
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+Before you can implement `jumpTo`, you need the `Game` component to keep track of which step the user is currently viewing. To do this, define a new state variable called `currentMove`, defaulting to `0`:
+
+```js
+export default function Game() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const [currentMove, setCurrentMove] = useState(0);
+	const currentSquares = history[history.length - 1];
+	//...
+}
+```
+
+Next, update the `jumpTo` function inside `Game` to update that `currentMove`. You'll also set `xIsNext` to `true` if the number that you're changing `currentMove` to is even.
+
+```js
+export default function Game() {
+	// ...
+	function jumpTo(nextMove) {
+		setCurrentMove(nextMove);
+		setXIsNext(nextMove % 2 === 0);
+	}
+	//...
+}
+```
+
+You will now make two changes to the `Game`'s `handlePlay` function which is called when you click on a square.
+
+-   If you "go back in time" and then make a new move from that point, you only want to keep the history up to that point. Instead of adding `nextSquares` after all items (`...` spread syntax) in `history`, you'll add it after all items in `history.slice(0, currentMove + 1)` so that you're only keeping that portion of the old history.
+-   Each time a move is made, you need to update `currentMove` to point to the latest history entry.
+
+```js
+function handlePlay(nextSquares) {
+	const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+	setHistory(nextHistory);
+	setCurrentMove(nextHistory.length - 1);
+	setXIsNext(!xIsNext);
+}
+```
+
+Finally, you will modify the `Game` component to render the currently selected move, instead of always rendering the final move:
+
+```js
+export default function Game() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const [currentMove, setCurrentMove] = useState(0);
+	const currentSquares = history[currentMove];
+
+	// ...
+}
+```
+
+If you click on any step in the game's history, the tic-tac-toe board should immediately update to show what the board looked like after that step occurred.
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+function Board({ xIsNext, squares, onPlay }) {
+	function handleClick(i) {
+		if (calculateWinner(squares) || squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		onPlay(nextSquares);
+	}
+
+	const winner = calculateWinner(squares);
+	let status;
+	if (winner) {
+		status = "Winner: " + winner;
+	} else {
+		status = "Next player: " + (xIsNext ? "X" : "O");
+	}
+
+	return (
+		<>
+			<div className="status">{status}</div>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+
+export default function Game() {
+	const [xIsNext, setXIsNext] = useState(true);
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const [currentMove, setCurrentMove] = useState(0);
+	const currentSquares = history[currentMove];
+
+	function handlePlay(nextSquares) {
+		const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+		setHistory(nextHistory);
+		setCurrentMove(nextHistory.length - 1);
+		setXIsNext(!xIsNext);
+	}
+
+	function jumpTo(nextMove) {
+		setCurrentMove(nextMove);
+		setXIsNext(nextMove % 2 === 0);
+	}
+
+	const moves = history.map((squares, move) => {
+		let description;
+		if (move > 0) {
+			description = "Go to move #" + move;
+		} else {
+			description = "Go to game start";
+		}
+		return (
+			<li key={move}>
+				<button on_click={() => jumpTo(move)}>{description}</button>
+			</li>
+		);
+	});
+
+	return (
+		<div className="game">
+			<div className="game-board">
+				<Board
+					xIsNext={xIsNext}
+					squares={currentSquares}
+					onPlay={handlePlay}
+				/>
+			</div>
+			<div className="game-info">
+				<ol>{moves}</ol>
+			</div>
+		</div>
+	);
+}
+
+function calculateWinner(squares) {
+	const lines = [
+		[0, 1, 2],
+		[3, 4, 5],
+		[6, 7, 8],
+		[0, 3, 6],
+		[1, 4, 7],
+		[2, 5, 8],
+		[0, 4, 8],
+		[2, 4, 6],
+	];
+	for (let i = 0; i < lines.length; i++) {
+		const [a, b, c] = lines[i];
+		if (
+			squares[a] &&
+			squares[a] === squares[b] &&
+			squares[a] === squares[c]
+		) {
+			return squares[a];
+		}
+	}
+	return null;
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+### Final cleanup
+
+If you look at the code very closely, you may notice that `xIsNext === true` when `currentMove` is even and `xIsNext === false` when `currentMove` is odd. In other words, if you know the value of `currentMove`, then you can always figure out what `xIsNext` should be.
+
+There's no reason for you to store both of these in state. In fact, always try to avoid redundant state. Simplifying what you store in state reduces bugs and makes your code easier to understand. Change `Game` so that it doesn't store `xIsNext` as a separate state variable and instead figures it out based on the `currentMove`:
+
+```js
+export default function Game() {
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const [currentMove, setCurrentMove] = useState(0);
+	const xIsNext = currentMove % 2 === 0;
+	const currentSquares = history[currentMove];
+
+	function handlePlay(nextSquares) {
+		const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+		setHistory(nextHistory);
+		setCurrentMove(nextHistory.length - 1);
+	}
+
+	function jumpTo(nextMove) {
+		setCurrentMove(nextMove);
+	}
+	// ...
+}
+```
+
+You no longer need the `xIsNext` state declaration or the calls to `setXIsNext`. Now, there's no chance for `xIsNext` to get out of sync with `currentMove`, even if you make a mistake while coding the components.
+
+### Wrapping up
+
+Congratulations! You've created a tic-tac-toe game that:
+
+-   Lets you play tic-tac-toe,
+-   Indicates when a player has won the game,
+-   Stores a game's history as a game progresses,
+-   Allows players to review a game's history and see previous versions of a game's board.
+
+Nice work! We hope you now feel like you have a decent grasp of how React works.
+
+Check out the final result here:
+
+```js
+import { useState } from "react";
+
+function Square({ value, onSquareClick }) {
+	return (
+		<button className="square" on_click={onSquareClick}>
+			{value}
+		</button>
+	);
+}
+
+function Board({ xIsNext, squares, onPlay }) {
+	function handleClick(i) {
+		if (calculateWinner(squares) || squares[i]) {
+			return;
+		}
+		const nextSquares = squares.slice();
+		if (xIsNext) {
+			nextSquares[i] = "X";
+		} else {
+			nextSquares[i] = "O";
+		}
+		onPlay(nextSquares);
+	}
+
+	const winner = calculateWinner(squares);
+	let status;
+	if (winner) {
+		status = "Winner: " + winner;
+	} else {
+		status = "Next player: " + (xIsNext ? "X" : "O");
+	}
+
+	return (
+		<>
+			<div className="status">{status}</div>
+			<div className="board-row">
+				<Square
+					value={squares[0]}
+					onSquareClick={() => handleClick(0)}
+				/>
+				<Square
+					value={squares[1]}
+					onSquareClick={() => handleClick(1)}
+				/>
+				<Square
+					value={squares[2]}
+					onSquareClick={() => handleClick(2)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[3]}
+					onSquareClick={() => handleClick(3)}
+				/>
+				<Square
+					value={squares[4]}
+					onSquareClick={() => handleClick(4)}
+				/>
+				<Square
+					value={squares[5]}
+					onSquareClick={() => handleClick(5)}
+				/>
+			</div>
+			<div className="board-row">
+				<Square
+					value={squares[6]}
+					onSquareClick={() => handleClick(6)}
+				/>
+				<Square
+					value={squares[7]}
+					onSquareClick={() => handleClick(7)}
+				/>
+				<Square
+					value={squares[8]}
+					onSquareClick={() => handleClick(8)}
+				/>
+			</div>
+		</>
+	);
+}
+
+export default function Game() {
+	const [history, setHistory] = useState([Array(9).fill(null)]);
+	const [currentMove, setCurrentMove] = useState(0);
+	const xIsNext = currentMove % 2 === 0;
+	const currentSquares = history[currentMove];
+
+	function handlePlay(nextSquares) {
+		const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+		setHistory(nextHistory);
+		setCurrentMove(nextHistory.length - 1);
+	}
+
+	function jumpTo(nextMove) {
+		setCurrentMove(nextMove);
+	}
+
+	const moves = history.map((squares, move) => {
+		let description;
+		if (move > 0) {
+			description = "Go to move #" + move;
+		} else {
+			description = "Go to game start";
+		}
+		return (
+			<li key={move}>
+				<button on_click={() => jumpTo(move)}>{description}</button>
+			</li>
+		);
+	});
+
+	return (
+		<div className="game">
+			<div className="game-board">
+				<Board
+					xIsNext={xIsNext}
+					squares={currentSquares}
+					onPlay={handlePlay}
+				/>
+			</div>
+			<div className="game-info">
+				<ol>{moves}</ol>
+			</div>
+		</div>
+	);
+}
+
+function calculateWinner(squares) {
+	const lines = [
+		[0, 1, 2],
+		[3, 4, 5],
+		[6, 7, 8],
+		[0, 3, 6],
+		[1, 4, 7],
+		[2, 5, 8],
+		[0, 4, 8],
+		[2, 4, 6],
+	];
+	for (let i = 0; i < lines.length; i++) {
+		const [a, b, c] = lines[i];
+		if (
+			squares[a] &&
+			squares[a] === squares[b] &&
+			squares[a] === squares[c]
+		) {
+			return squares[a];
+		}
+	}
+	return null;
+}
+```
+
+```css
+* {
+	box-sizing: border-box;
+}
+
+body {
+	font-family: sans-serif;
+	margin: 20px;
+	padding: 0;
+}
+
+.square {
+	background: #fff;
+	border: 1px solid #999;
+	float: left;
+	font-size: 24px;
+	font-weight: bold;
+	line-height: 34px;
+	height: 34px;
+	margin-right: -1px;
+	margin-top: -1px;
+	padding: 0;
+	text-align: center;
+	width: 34px;
+}
+
+.board-row:after {
+	clear: both;
+	content: "";
+	display: table;
+}
+
+.status {
+	margin-bottom: 10px;
+}
+.game {
+	display: flex;
+	flex-direction: row;
+}
+
+.game-info {
+	margin-left: 20px;
+}
+```
+
+If you have extra time or want to practice your new React skills, here are some ideas for improvements that you could make to the tic-tac-toe game, listed in order of increasing difficulty:
+
+1. For the current move only, show "You are at move #..." instead of a button.
+1. Rewrite `Board` to use two loops to make the squares instead of hardcoding them.
+1. Add a toggle button that lets you sort the moves in either ascending or descending order.
+1. When someone wins, highlight the three squares that caused the win (and when no one wins, display a message about the result being a draw).
+1. Display the location for each move in the format (row, col) in the move history list.
+
+Throughout this tutorial, you've touched on React concepts including elements, components, props, and state. Now that you've seen how these concepts work when building a game, check out [Thinking in React](/learn/thinking-in-react) to see how the same React concepts work when build an app's UI.
diff --git a/docs/src/learn/updating-arrays-in-state.md b/docs/src/learn/updating-arrays-in-state.md
new file mode 100644
index 000000000..ee031175d
--- /dev/null
+++ b/docs/src/learn/updating-arrays-in-state.md
@@ -0,0 +1,1853 @@
+---
+title: Updating Arrays in State 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Arrays are mutable in JavaScript, but you should treat them as immutable when you store them in state. Just like with objects, when you want to update an array stored in state, you need to create a new one (or make a copy of an existing one), and then set state to use the new array.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to add, remove, or change items in an array in React state
+    -   How to update an object inside of an array
+    -   How to make array copying less repetitive with Immer
+
+## Updating arrays without mutation
+
+In JavaScript, arrays are just another kind of object. [Like with objects](/learn/updating-objects-in-state), **you should treat arrays in React state as read-only.** This means that you shouldn't reassign items inside an array like `arr[0] = 'bird'`, and you also shouldn't use methods that mutate the array, such as `push()` and `pop()`.
+
+Instead, every time you want to update an array, you'll want to pass a _new_ array to your state setting function. To do that, you can create a new array from the original array in your state by calling its non-mutating methods like `filter()` and `map()`. Then you can set your state to the resulting new array.
+
+Here is a reference table of common array operations. When dealing with arrays inside React state, you will need to avoid the methods in the left column, and instead prefer the methods in the right column:
+
+|  | avoid (mutates the array) | prefer (returns a new array) |
+| --- | --- | --- |
+| adding | `push`, `unshift` | `concat`, `[...arr]` spread syntax ([example](#adding-to-an-array)) |
+| removing | `pop`, `shift`, `splice` | `filter`, `slice` ([example](#removing-from-an-array)) |
+| replacing | `splice`, `arr[i] = ...` assignment | `map` ([example](#replacing-items-in-an-array)) |
+| sorting | `reverse`, `sort` | copy the array first ([example](#making-other-changes-to-an-array)) |
+
+Alternatively, you can [use Immer](#write-concise-update-logic-with-immer) which lets you use methods from both columns.
+
+<Pitfall>
+
+Unfortunately, [`slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) and [`splice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) are named similarly but are very different:
+
+-   `slice` lets you copy an array or a part of it.
+-   `splice` **mutates** the array (to insert or delete items).
+
+In React, you will be using `slice` (no `p`!) a lot more often because you don't want to mutate objects or arrays in state. [Updating Objects](/learn/updating-objects-in-state) explains what mutation is and why it's not recommended for state.
+
+</Pitfall>
+
+### Adding to an array
+
+`push()` will mutate an array, which you don't want:
+
+```js
+import { useState } from "react";
+
+let nextId = 0;
+
+export default function List() {
+	const [name, setName] = useState("");
+	const [artists, setArtists] = useState([]);
+
+	return (
+		<>
+			<h1>Inspiring sculptors:</h1>
+			<input value={name} onChange={(e) => setName(e.target.value)} />
+			<button
+				on_click={() => {
+					artists.push({
+						id: nextId++,
+						name: name,
+					});
+				}}
+			>
+				Add
+			</button>
+			<ul>
+				{artists.map((artist) => (
+					<li key={artist.id}>{artist.name}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-left: 5px;
+}
+```
+
+Instead, create a _new_ array which contains the existing items _and_ a new item at the end. There are multiple ways to do this, but the easiest one is to use the `...` [array spread](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_array_literals) syntax:
+
+```js
+setArtists(
+	// Replace the state
+	[
+		// with a new array
+		...artists, // that contains all the old items
+		{ id: nextId++, name: name }, // and one new item at the end
+	]
+);
+```
+
+Now it works correctly:
+
+```js
+import { useState } from "react";
+
+let nextId = 0;
+
+export default function List() {
+	const [name, setName] = useState("");
+	const [artists, setArtists] = useState([]);
+
+	return (
+		<>
+			<h1>Inspiring sculptors:</h1>
+			<input value={name} onChange={(e) => setName(e.target.value)} />
+			<button
+				on_click={() => {
+					setArtists([...artists, { id: nextId++, name: name }]);
+				}}
+			>
+				Add
+			</button>
+			<ul>
+				{artists.map((artist) => (
+					<li key={artist.id}>{artist.name}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-left: 5px;
+}
+```
+
+The array spread syntax also lets you prepend an item by placing it _before_ the original `...artists`:
+
+```js
+setArtists([
+	{ id: nextId++, name: name },
+	...artists, // Put old items at the end
+]);
+```
+
+In this way, spread can do the job of both `push()` by adding to the end of an array and `unshift()` by adding to the beginning of an array. Try it in the sandbox above!
+
+### Removing from an array
+
+The easiest way to remove an item from an array is to _filter it out_. In other words, you will produce a new array that will not contain that item. To do this, use the `filter` method, for example:
+
+```js
+import { useState } from "react";
+
+let initialArtists = [
+	{ id: 0, name: "Marta Colvin Andrade" },
+	{ id: 1, name: "Lamidi Olonade Fakeye" },
+	{ id: 2, name: "Louise Nevelson" },
+];
+
+export default function List() {
+	const [artists, setArtists] = useState(initialArtists);
+
+	return (
+		<>
+			<h1>Inspiring sculptors:</h1>
+			<ul>
+				{artists.map((artist) => (
+					<li key={artist.id}>
+						{artist.name}{" "}
+						<button
+							on_click={() => {
+								setArtists(
+									artists.filter((a) => a.id !== artist.id)
+								);
+							}}
+						>
+							Delete
+						</button>
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+Click the "Delete" button a few times, and look at its click handler.
+
+```js
+setArtists(artists.filter((a) => a.id !== artist.id));
+```
+
+Here, `artists.filter(a => a.id !== artist.id)` means "create an array that consists of those `artists` whose IDs are different from `artist.id`". In other words, each artist's "Delete" button will filter _that_ artist out of the array, and then request a re-render with the resulting array. Note that `filter` does not modify the original array.
+
+### Transforming an array
+
+If you want to change some or all items of the array, you can use `map()` to create a **new** array. The function you will pass to `map` can decide what to do with each item, based on its data or its index (or both).
+
+In this example, an array holds coordinates of two circles and a square. When you press the button, it moves only the circles down by 50 pixels. It does this by producing a new array of data using `map()`:
+
+```js
+import { useState } from "react";
+
+let initialShapes = [
+	{ id: 0, type: "circle", x: 50, y: 100 },
+	{ id: 1, type: "square", x: 150, y: 100 },
+	{ id: 2, type: "circle", x: 250, y: 100 },
+];
+
+export default function ShapeEditor() {
+	const [shapes, setShapes] = useState(initialShapes);
+
+	function handleClick() {
+		const nextShapes = shapes.map((shape) => {
+			if (shape.type === "square") {
+				// No change
+				return shape;
+			} else {
+				// Return a new circle 50px below
+				return {
+					...shape,
+					y: shape.y + 50,
+				};
+			}
+		});
+		// Re-render with the new array
+		setShapes(nextShapes);
+	}
+
+	return (
+		<>
+			<button on_click={handleClick}>Move circles down!</button>
+			{shapes.map((shape) => (
+				<div
+					key={shape.id}
+					style={{
+						background: "purple",
+						position: "absolute",
+						left: shape.x,
+						top: shape.y,
+						borderRadius: shape.type === "circle" ? "50%" : "",
+						width: 20,
+						height: 20,
+					}}
+				/>
+			))}
+		</>
+	);
+}
+```
+
+```css
+body {
+	height: 300px;
+}
+```
+
+### Replacing items in an array
+
+It is particularly common to want to replace one or more items in an array. Assignments like `arr[0] = 'bird'` are mutating the original array, so instead you'll want to use `map` for this as well.
+
+To replace an item, create a new array with `map`. Inside your `map` call, you will receive the item index as the second argument. Use it to decide whether to return the original item (the first argument) or something else:
+
+```js
+import { useState } from "react";
+
+let initialCounters = [0, 0, 0];
+
+export default function CounterList() {
+	const [counters, setCounters] = useState(initialCounters);
+
+	function handleIncrementClick(index) {
+		const nextCounters = counters.map((c, i) => {
+			if (i === index) {
+				// Increment the clicked counter
+				return c + 1;
+			} else {
+				// The rest haven't changed
+				return c;
+			}
+		});
+		setCounters(nextCounters);
+	}
+
+	return (
+		<ul>
+			{counters.map((counter, i) => (
+				<li key={i}>
+					{counter}
+					<button
+						on_click={() => {
+							handleIncrementClick(i);
+						}}
+					>
+						+1
+					</button>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+```
+
+### Inserting into an array
+
+Sometimes, you may want to insert an item at a particular position that's neither at the beginning nor at the end. To do this, you can use the `...` array spread syntax together with the `slice()` method. The `slice()` method lets you cut a "slice" of the array. To insert an item, you will create an array that spreads the slice _before_ the insertion point, then the new item, and then the rest of the original array.
+
+In this example, the Insert button always inserts at the index `1`:
+
+```js
+import { useState } from "react";
+
+let nextId = 3;
+const initialArtists = [
+	{ id: 0, name: "Marta Colvin Andrade" },
+	{ id: 1, name: "Lamidi Olonade Fakeye" },
+	{ id: 2, name: "Louise Nevelson" },
+];
+
+export default function List() {
+	const [name, setName] = useState("");
+	const [artists, setArtists] = useState(initialArtists);
+
+	function handleClick() {
+		const insertAt = 1; // Could be any index
+		const nextArtists = [
+			// Items before the insertion point:
+			...artists.slice(0, insertAt),
+			// New item:
+			{ id: nextId++, name: name },
+			// Items after the insertion point:
+			...artists.slice(insertAt),
+		];
+		setArtists(nextArtists);
+		setName("");
+	}
+
+	return (
+		<>
+			<h1>Inspiring sculptors:</h1>
+			<input value={name} onChange={(e) => setName(e.target.value)} />
+			<button on_click={handleClick}>Insert</button>
+			<ul>
+				{artists.map((artist) => (
+					<li key={artist.id}>{artist.name}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-left: 5px;
+}
+```
+
+### Making other changes to an array
+
+There are some things you can't do with the spread syntax and non-mutating methods like `map()` and `filter()` alone. For example, you may want to reverse or sort an array. The JavaScript `reverse()` and `sort()` methods are mutating the original array, so you can't use them directly.
+
+**However, you can copy the array first, and then make changes to it.**
+
+For example:
+
+```js
+import { useState } from "react";
+
+let nextId = 3;
+const initialList = [
+	{ id: 0, title: "Big Bellies" },
+	{ id: 1, title: "Lunar Landscape" },
+	{ id: 2, title: "Terracotta Army" },
+];
+
+export default function List() {
+	const [list, setList] = useState(initialList);
+
+	function handleClick() {
+		const nextList = [...list];
+		nextList.reverse();
+		setList(nextList);
+	}
+
+	return (
+		<>
+			<button on_click={handleClick}>Reverse</button>
+			<ul>
+				{list.map((artwork) => (
+					<li key={artwork.id}>{artwork.title}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+Here, you use the `[...list]` spread syntax to create a copy of the original array first. Now that you have a copy, you can use mutating methods like `nextList.reverse()` or `nextList.sort()`, or even assign individual items with `nextList[0] = "something"`.
+
+However, **even if you copy an array, you can't mutate existing items _inside_ of it directly.** This is because copying is shallow--the new array will contain the same items as the original one. So if you modify an object inside the copied array, you are mutating the existing state. For example, code like this is a problem.
+
+```js
+const nextList = [...list];
+nextList[0].seen = true; // Problem: mutates list[0]
+setList(nextList);
+```
+
+Although `nextList` and `list` are two different arrays, **`nextList[0]` and `list[0]` point to the same object.** So by changing `nextList[0].seen`, you are also changing `list[0].seen`. This is a state mutation, which you should avoid! You can solve this issue in a similar way to [updating nested JavaScript objects](/learn/updating-objects-in-state#updating-a-nested-object)--by copying individual items you want to change instead of mutating them. Here's how.
+
+## Updating objects inside arrays
+
+Objects are not _really_ located "inside" arrays. They might appear to be "inside" in code, but each object in an array is a separate value, to which the array "points". This is why you need to be careful when changing nested fields like `list[0]`. Another person's artwork list may point to the same element of the array!
+
+**When updating nested state, you need to create copies from the point where you want to update, and all the way up to the top level.** Let's see how this works.
+
+In this example, two separate artwork lists have the same initial state. They are supposed to be isolated, but because of a mutation, their state is accidentally shared, and checking a box in one list affects the other list:
+
+```js
+import { useState } from "react";
+
+let nextId = 3;
+const initialList = [
+	{ id: 0, title: "Big Bellies", seen: false },
+	{ id: 1, title: "Lunar Landscape", seen: false },
+	{ id: 2, title: "Terracotta Army", seen: true },
+];
+
+export default function BucketList() {
+	const [myList, setMyList] = useState(initialList);
+	const [yourList, setYourList] = useState(initialList);
+
+	function handleToggleMyList(artworkId, nextSeen) {
+		const myNextList = [...myList];
+		const artwork = myNextList.find((a) => a.id === artworkId);
+		artwork.seen = nextSeen;
+		setMyList(myNextList);
+	}
+
+	function handleToggleYourList(artworkId, nextSeen) {
+		const yourNextList = [...yourList];
+		const artwork = yourNextList.find((a) => a.id === artworkId);
+		artwork.seen = nextSeen;
+		setYourList(yourNextList);
+	}
+
+	return (
+		<>
+			<h1>Art Bucket List</h1>
+			<h2>My list of art to see:</h2>
+			<ItemList artworks={myList} onToggle={handleToggleMyList} />
+			<h2>Your list of art to see:</h2>
+			<ItemList artworks={yourList} onToggle={handleToggleYourList} />
+		</>
+	);
+}
+
+function ItemList({ artworks, onToggle }) {
+	return (
+		<ul>
+			{artworks.map((artwork) => (
+				<li key={artwork.id}>
+					<label>
+						<input
+							type="checkbox"
+							checked={artwork.seen}
+							onChange={(e) => {
+								onToggle(artwork.id, e.target.checked);
+							}}
+						/>
+						{artwork.title}
+					</label>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+The problem is in code like this:
+
+```js
+const myNextList = [...myList];
+const artwork = myNextList.find((a) => a.id === artworkId);
+artwork.seen = nextSeen; // Problem: mutates an existing item
+setMyList(myNextList);
+```
+
+Although the `myNextList` array itself is new, the _items themselves_ are the same as in the original `myList` array. So changing `artwork.seen` changes the _original_ artwork item. That artwork item is also in `yourList`, which causes the bug. Bugs like this can be difficult to think about, but thankfully they disappear if you avoid mutating state.
+
+**You can use `map` to substitute an old item with its updated version without mutation.**
+
+```js
+setMyList(
+	myList.map((artwork) => {
+		if (artwork.id === artworkId) {
+			// Create a *new* object with changes
+			return { ...artwork, seen: nextSeen };
+		} else {
+			// No changes
+			return artwork;
+		}
+	})
+);
+```
+
+Here, `...` is the object spread syntax used to [create a copy of an object.](/learn/updating-objects-in-state#copying-objects-with-the-spread-syntax)
+
+With this approach, none of the existing state items are being mutated, and the bug is fixed:
+
+```js
+import { useState } from "react";
+
+let nextId = 3;
+const initialList = [
+	{ id: 0, title: "Big Bellies", seen: false },
+	{ id: 1, title: "Lunar Landscape", seen: false },
+	{ id: 2, title: "Terracotta Army", seen: true },
+];
+
+export default function BucketList() {
+	const [myList, setMyList] = useState(initialList);
+	const [yourList, setYourList] = useState(initialList);
+
+	function handleToggleMyList(artworkId, nextSeen) {
+		setMyList(
+			myList.map((artwork) => {
+				if (artwork.id === artworkId) {
+					// Create a *new* object with changes
+					return { ...artwork, seen: nextSeen };
+				} else {
+					// No changes
+					return artwork;
+				}
+			})
+		);
+	}
+
+	function handleToggleYourList(artworkId, nextSeen) {
+		setYourList(
+			yourList.map((artwork) => {
+				if (artwork.id === artworkId) {
+					// Create a *new* object with changes
+					return { ...artwork, seen: nextSeen };
+				} else {
+					// No changes
+					return artwork;
+				}
+			})
+		);
+	}
+
+	return (
+		<>
+			<h1>Art Bucket List</h1>
+			<h2>My list of art to see:</h2>
+			<ItemList artworks={myList} onToggle={handleToggleMyList} />
+			<h2>Your list of art to see:</h2>
+			<ItemList artworks={yourList} onToggle={handleToggleYourList} />
+		</>
+	);
+}
+
+function ItemList({ artworks, onToggle }) {
+	return (
+		<ul>
+			{artworks.map((artwork) => (
+				<li key={artwork.id}>
+					<label>
+						<input
+							type="checkbox"
+							checked={artwork.seen}
+							onChange={(e) => {
+								onToggle(artwork.id, e.target.checked);
+							}}
+						/>
+						{artwork.title}
+					</label>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+In general, **you should only mutate objects that you have just created.** If you were inserting a _new_ artwork, you could mutate it, but if you're dealing with something that's already in state, you need to make a copy.
+
+### Write concise update logic with Immer
+
+Updating nested arrays without mutation can get a little bit repetitive. [Just as with objects](/learn/updating-objects-in-state#write-concise-update-logic-with-immer):
+
+-   Generally, you shouldn't need to update state more than a couple of levels deep. If your state objects are very deep, you might want to [restructure them differently](/learn/choosing-the-state-structure#avoid-deeply-nested-state) so that they are flat.
+-   If you don't want to change your state structure, you might prefer to use [Immer](https://github.com/immerjs/use-immer), which lets you write using the convenient but mutating syntax and takes care of producing the copies for you.
+
+Here is the Art Bucket List example rewritten with Immer:
+
+```js
+import { useState } from "react";
+import { useImmer } from "use-immer";
+
+let nextId = 3;
+const initialList = [
+	{ id: 0, title: "Big Bellies", seen: false },
+	{ id: 1, title: "Lunar Landscape", seen: false },
+	{ id: 2, title: "Terracotta Army", seen: true },
+];
+
+export default function BucketList() {
+	const [myList, updateMyList] = useImmer(initialList);
+	const [yourList, updateYourList] = useImmer(initialList);
+
+	function handleToggleMyList(id, nextSeen) {
+		updateMyList((draft) => {
+			const artwork = draft.find((a) => a.id === id);
+			artwork.seen = nextSeen;
+		});
+	}
+
+	function handleToggleYourList(artworkId, nextSeen) {
+		updateYourList((draft) => {
+			const artwork = draft.find((a) => a.id === artworkId);
+			artwork.seen = nextSeen;
+		});
+	}
+
+	return (
+		<>
+			<h1>Art Bucket List</h1>
+			<h2>My list of art to see:</h2>
+			<ItemList artworks={myList} onToggle={handleToggleMyList} />
+			<h2>Your list of art to see:</h2>
+			<ItemList artworks={yourList} onToggle={handleToggleYourList} />
+		</>
+	);
+}
+
+function ItemList({ artworks, onToggle }) {
+	return (
+		<ul>
+			{artworks.map((artwork) => (
+				<li key={artwork.id}>
+					<label>
+						<input
+							type="checkbox"
+							checked={artwork.seen}
+							onChange={(e) => {
+								onToggle(artwork.id, e.target.checked);
+							}}
+						/>
+						{artwork.title}
+					</label>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+Note how with Immer, **mutation like `artwork.seen = nextSeen` is now okay:**
+
+```js
+updateMyTodos((draft) => {
+	const artwork = draft.find((a) => a.id === artworkId);
+	artwork.seen = nextSeen;
+});
+```
+
+This is because you're not mutating the _original_ state, but you're mutating a special `draft` object provided by Immer. Similarly, you can apply mutating methods like `push()` and `pop()` to the content of the `draft`.
+
+Behind the scenes, Immer always constructs the next state from scratch according to the changes that you've done to the `draft`. This keeps your event handlers very concise without ever mutating state.
+
+<Recap>
+
+-   You can put arrays into state, but you can't change them.
+-   Instead of mutating an array, create a _new_ version of it, and update the state to it.
+-   You can use the `[...arr, newItem]` array spread syntax to create arrays with new items.
+-   You can use `filter()` and `map()` to create new arrays with filtered or transformed items.
+-   You can use Immer to keep your code concise.
+
+</Recap>
+
+<Challenges>
+
+#### Update an item in the shopping cart
+
+Fill in the `handleIncreaseClick` logic so that pressing "+" increases the corresponding number:
+
+```js
+import { useState } from "react";
+
+const initialProducts = [
+	{
+		id: 0,
+		name: "Baklava",
+		count: 1,
+	},
+	{
+		id: 1,
+		name: "Cheese",
+		count: 5,
+	},
+	{
+		id: 2,
+		name: "Spaghetti",
+		count: 2,
+	},
+];
+
+export default function ShoppingCart() {
+	const [products, setProducts] = useState(initialProducts);
+
+	function handleIncreaseClick(productId) {}
+
+	return (
+		<ul>
+			{products.map((product) => (
+				<li key={product.id}>
+					{product.name} (<b>{product.count}</b>)
+					<button
+						on_click={() => {
+							handleIncreaseClick(product.id);
+						}}
+					>
+						+
+					</button>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+```
+
+<Solution>
+
+You can use the `map` function to create a new array, and then use the `...` object spread syntax to create a copy of the changed object for the new array:
+
+```js
+import { useState } from "react";
+
+const initialProducts = [
+	{
+		id: 0,
+		name: "Baklava",
+		count: 1,
+	},
+	{
+		id: 1,
+		name: "Cheese",
+		count: 5,
+	},
+	{
+		id: 2,
+		name: "Spaghetti",
+		count: 2,
+	},
+];
+
+export default function ShoppingCart() {
+	const [products, setProducts] = useState(initialProducts);
+
+	function handleIncreaseClick(productId) {
+		setProducts(
+			products.map((product) => {
+				if (product.id === productId) {
+					return {
+						...product,
+						count: product.count + 1,
+					};
+				} else {
+					return product;
+				}
+			})
+		);
+	}
+
+	return (
+		<ul>
+			{products.map((product) => (
+				<li key={product.id}>
+					{product.name} (<b>{product.count}</b>)
+					<button
+						on_click={() => {
+							handleIncreaseClick(product.id);
+						}}
+					>
+						+
+					</button>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+```
+
+</Solution>
+
+#### Remove an item from the shopping cart
+
+This shopping cart has a working "+" button, but the "–" button doesn't do anything. You need to add an event handler to it so that pressing it decreases the `count` of the corresponding product. If you press "–" when the count is 1, the product should automatically get removed from the cart. Make sure it never shows 0.
+
+```js
+import { useState } from "react";
+
+const initialProducts = [
+	{
+		id: 0,
+		name: "Baklava",
+		count: 1,
+	},
+	{
+		id: 1,
+		name: "Cheese",
+		count: 5,
+	},
+	{
+		id: 2,
+		name: "Spaghetti",
+		count: 2,
+	},
+];
+
+export default function ShoppingCart() {
+	const [products, setProducts] = useState(initialProducts);
+
+	function handleIncreaseClick(productId) {
+		setProducts(
+			products.map((product) => {
+				if (product.id === productId) {
+					return {
+						...product,
+						count: product.count + 1,
+					};
+				} else {
+					return product;
+				}
+			})
+		);
+	}
+
+	return (
+		<ul>
+			{products.map((product) => (
+				<li key={product.id}>
+					{product.name} (<b>{product.count}</b>)
+					<button
+						on_click={() => {
+							handleIncreaseClick(product.id);
+						}}
+					>
+						+
+					</button>
+					<button>–</button>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+```
+
+<Solution>
+
+You can first use `map` to produce a new array, and then `filter` to remove products with a `count` set to `0`:
+
+```js
+import { useState } from "react";
+
+const initialProducts = [
+	{
+		id: 0,
+		name: "Baklava",
+		count: 1,
+	},
+	{
+		id: 1,
+		name: "Cheese",
+		count: 5,
+	},
+	{
+		id: 2,
+		name: "Spaghetti",
+		count: 2,
+	},
+];
+
+export default function ShoppingCart() {
+	const [products, setProducts] = useState(initialProducts);
+
+	function handleIncreaseClick(productId) {
+		setProducts(
+			products.map((product) => {
+				if (product.id === productId) {
+					return {
+						...product,
+						count: product.count + 1,
+					};
+				} else {
+					return product;
+				}
+			})
+		);
+	}
+
+	function handleDecreaseClick(productId) {
+		let nextProducts = products.map((product) => {
+			if (product.id === productId) {
+				return {
+					...product,
+					count: product.count - 1,
+				};
+			} else {
+				return product;
+			}
+		});
+		nextProducts = nextProducts.filter((p) => p.count > 0);
+		setProducts(nextProducts);
+	}
+
+	return (
+		<ul>
+			{products.map((product) => (
+				<li key={product.id}>
+					{product.name} (<b>{product.count}</b>)
+					<button
+						on_click={() => {
+							handleIncreaseClick(product.id);
+						}}
+					>
+						+
+					</button>
+					<button
+						on_click={() => {
+							handleDecreaseClick(product.id);
+						}}
+					>
+						–
+					</button>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+```
+
+</Solution>
+
+#### Fix the mutations using non-mutative methods
+
+In this example, all of the event handlers in `App.js` use mutation. As a result, editing and deleting todos doesn't work. Rewrite `handleAddTodo`, `handleChangeTodo`, and `handleDeleteTodo` to use the non-mutative methods:
+
+```js
+import { useState } from "react";
+import AddTodo from "./AddTodo.js";
+import TaskList from "./TaskList.js";
+
+let nextId = 3;
+const initialTodos = [
+	{ id: 0, title: "Buy milk", done: true },
+	{ id: 1, title: "Eat tacos", done: false },
+	{ id: 2, title: "Brew tea", done: false },
+];
+
+export default function TaskApp() {
+	const [todos, setTodos] = useState(initialTodos);
+
+	function handleAddTodo(title) {
+		todos.push({
+			id: nextId++,
+			title: title,
+			done: false,
+		});
+	}
+
+	function handleChangeTodo(nextTodo) {
+		const todo = todos.find((t) => t.id === nextTodo.id);
+		todo.title = nextTodo.title;
+		todo.done = nextTodo.done;
+	}
+
+	function handleDeleteTodo(todoId) {
+		const index = todos.findIndex((t) => t.id === todoId);
+		todos.splice(index, 1);
+	}
+
+	return (
+		<>
+			<AddTodo onAddTodo={handleAddTodo} />
+			<TaskList
+				todos={todos}
+				onChangeTodo={handleChangeTodo}
+				onDeleteTodo={handleDeleteTodo}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTodo({ onAddTodo }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add todo"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setTitle("");
+					onAddTodo(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ todos, onChangeTodo, onDeleteTodo }) {
+	return (
+		<ul>
+			{todos.map((todo) => (
+				<li key={todo.id}>
+					<Task
+						todo={todo}
+						onChange={onChangeTodo}
+						onDelete={onDeleteTodo}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ todo, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let todoContent;
+	if (isEditing) {
+		todoContent = (
+			<>
+				<input
+					value={todo.title}
+					onChange={(e) => {
+						onChange({
+							...todo,
+							title: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		todoContent = (
+			<>
+				{todo.title}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={todo.done}
+				onChange={(e) => {
+					onChange({
+						...todo,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{todoContent}
+			<button on_click={() => onDelete(todo.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+<Solution>
+
+In `handleAddTodo`, you can use the array spread syntax. In `handleChangeTodo`, you can create a new array with `map`. In `handleDeleteTodo`, you can create a new array with `filter`. Now the list works correctly:
+
+```js
+import { useState } from "react";
+import AddTodo from "./AddTodo.js";
+import TaskList from "./TaskList.js";
+
+let nextId = 3;
+const initialTodos = [
+	{ id: 0, title: "Buy milk", done: true },
+	{ id: 1, title: "Eat tacos", done: false },
+	{ id: 2, title: "Brew tea", done: false },
+];
+
+export default function TaskApp() {
+	const [todos, setTodos] = useState(initialTodos);
+
+	function handleAddTodo(title) {
+		setTodos([
+			...todos,
+			{
+				id: nextId++,
+				title: title,
+				done: false,
+			},
+		]);
+	}
+
+	function handleChangeTodo(nextTodo) {
+		setTodos(
+			todos.map((t) => {
+				if (t.id === nextTodo.id) {
+					return nextTodo;
+				} else {
+					return t;
+				}
+			})
+		);
+	}
+
+	function handleDeleteTodo(todoId) {
+		setTodos(todos.filter((t) => t.id !== todoId));
+	}
+
+	return (
+		<>
+			<AddTodo onAddTodo={handleAddTodo} />
+			<TaskList
+				todos={todos}
+				onChangeTodo={handleChangeTodo}
+				onDeleteTodo={handleDeleteTodo}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTodo({ onAddTodo }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add todo"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setTitle("");
+					onAddTodo(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ todos, onChangeTodo, onDeleteTodo }) {
+	return (
+		<ul>
+			{todos.map((todo) => (
+				<li key={todo.id}>
+					<Task
+						todo={todo}
+						onChange={onChangeTodo}
+						onDelete={onDeleteTodo}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ todo, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let todoContent;
+	if (isEditing) {
+		todoContent = (
+			<>
+				<input
+					value={todo.title}
+					onChange={(e) => {
+						onChange({
+							...todo,
+							title: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		todoContent = (
+			<>
+				{todo.title}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={todo.done}
+				onChange={(e) => {
+					onChange({
+						...todo,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{todoContent}
+			<button on_click={() => onDelete(todo.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+</Solution>
+
+#### Fix the mutations using Immer
+
+This is the same example as in the previous challenge. This time, fix the mutations by using Immer. For your convenience, `useImmer` is already imported, so you need to change the `todos` state variable to use it.
+
+```js
+import { useState } from "react";
+import { useImmer } from "use-immer";
+import AddTodo from "./AddTodo.js";
+import TaskList from "./TaskList.js";
+
+let nextId = 3;
+const initialTodos = [
+	{ id: 0, title: "Buy milk", done: true },
+	{ id: 1, title: "Eat tacos", done: false },
+	{ id: 2, title: "Brew tea", done: false },
+];
+
+export default function TaskApp() {
+	const [todos, setTodos] = useState(initialTodos);
+
+	function handleAddTodo(title) {
+		todos.push({
+			id: nextId++,
+			title: title,
+			done: false,
+		});
+	}
+
+	function handleChangeTodo(nextTodo) {
+		const todo = todos.find((t) => t.id === nextTodo.id);
+		todo.title = nextTodo.title;
+		todo.done = nextTodo.done;
+	}
+
+	function handleDeleteTodo(todoId) {
+		const index = todos.findIndex((t) => t.id === todoId);
+		todos.splice(index, 1);
+	}
+
+	return (
+		<>
+			<AddTodo onAddTodo={handleAddTodo} />
+			<TaskList
+				todos={todos}
+				onChangeTodo={handleChangeTodo}
+				onDeleteTodo={handleDeleteTodo}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTodo({ onAddTodo }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add todo"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setTitle("");
+					onAddTodo(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ todos, onChangeTodo, onDeleteTodo }) {
+	return (
+		<ul>
+			{todos.map((todo) => (
+				<li key={todo.id}>
+					<Task
+						todo={todo}
+						onChange={onChangeTodo}
+						onDelete={onDeleteTodo}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ todo, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let todoContent;
+	if (isEditing) {
+		todoContent = (
+			<>
+				<input
+					value={todo.title}
+					onChange={(e) => {
+						onChange({
+							...todo,
+							title: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		todoContent = (
+			<>
+				{todo.title}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={todo.done}
+				onChange={(e) => {
+					onChange({
+						...todo,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{todoContent}
+			<button on_click={() => onDelete(todo.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+<Solution>
+
+With Immer, you can write code in the mutative fashion, as long as you're only mutating parts of the `draft` that Immer gives you. Here, all mutations are performed on the `draft` so the code works:
+
+```js
+import { useState } from "react";
+import { useImmer } from "use-immer";
+import AddTodo from "./AddTodo.js";
+import TaskList from "./TaskList.js";
+
+let nextId = 3;
+const initialTodos = [
+	{ id: 0, title: "Buy milk", done: true },
+	{ id: 1, title: "Eat tacos", done: false },
+	{ id: 2, title: "Brew tea", done: false },
+];
+
+export default function TaskApp() {
+	const [todos, updateTodos] = useImmer(initialTodos);
+
+	function handleAddTodo(title) {
+		updateTodos((draft) => {
+			draft.push({
+				id: nextId++,
+				title: title,
+				done: false,
+			});
+		});
+	}
+
+	function handleChangeTodo(nextTodo) {
+		updateTodos((draft) => {
+			const todo = draft.find((t) => t.id === nextTodo.id);
+			todo.title = nextTodo.title;
+			todo.done = nextTodo.done;
+		});
+	}
+
+	function handleDeleteTodo(todoId) {
+		updateTodos((draft) => {
+			const index = draft.findIndex((t) => t.id === todoId);
+			draft.splice(index, 1);
+		});
+	}
+
+	return (
+		<>
+			<AddTodo onAddTodo={handleAddTodo} />
+			<TaskList
+				todos={todos}
+				onChangeTodo={handleChangeTodo}
+				onDeleteTodo={handleDeleteTodo}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTodo({ onAddTodo }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add todo"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setTitle("");
+					onAddTodo(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ todos, onChangeTodo, onDeleteTodo }) {
+	return (
+		<ul>
+			{todos.map((todo) => (
+				<li key={todo.id}>
+					<Task
+						todo={todo}
+						onChange={onChangeTodo}
+						onDelete={onDeleteTodo}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ todo, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let todoContent;
+	if (isEditing) {
+		todoContent = (
+			<>
+				<input
+					value={todo.title}
+					onChange={(e) => {
+						onChange({
+							...todo,
+							title: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		todoContent = (
+			<>
+				{todo.title}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={todo.done}
+				onChange={(e) => {
+					onChange({
+						...todo,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{todoContent}
+			<button on_click={() => onDelete(todo.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+You can also mix and match the mutative and non-mutative approaches with Immer.
+
+For example, in this version `handleAddTodo` is implemented by mutating the Immer `draft`, while `handleChangeTodo` and `handleDeleteTodo` use the non-mutative `map` and `filter` methods:
+
+```js
+import { useState } from "react";
+import { useImmer } from "use-immer";
+import AddTodo from "./AddTodo.js";
+import TaskList from "./TaskList.js";
+
+let nextId = 3;
+const initialTodos = [
+	{ id: 0, title: "Buy milk", done: true },
+	{ id: 1, title: "Eat tacos", done: false },
+	{ id: 2, title: "Brew tea", done: false },
+];
+
+export default function TaskApp() {
+	const [todos, updateTodos] = useImmer(initialTodos);
+
+	function handleAddTodo(title) {
+		updateTodos((draft) => {
+			draft.push({
+				id: nextId++,
+				title: title,
+				done: false,
+			});
+		});
+	}
+
+	function handleChangeTodo(nextTodo) {
+		updateTodos(
+			todos.map((todo) => {
+				if (todo.id === nextTodo.id) {
+					return nextTodo;
+				} else {
+					return todo;
+				}
+			})
+		);
+	}
+
+	function handleDeleteTodo(todoId) {
+		updateTodos(todos.filter((t) => t.id !== todoId));
+	}
+
+	return (
+		<>
+			<AddTodo onAddTodo={handleAddTodo} />
+			<TaskList
+				todos={todos}
+				onChangeTodo={handleChangeTodo}
+				onDeleteTodo={handleDeleteTodo}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTodo({ onAddTodo }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add todo"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				on_click={() => {
+					setTitle("");
+					onAddTodo(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ todos, onChangeTodo, onDeleteTodo }) {
+	return (
+		<ul>
+			{todos.map((todo) => (
+				<li key={todo.id}>
+					<Task
+						todo={todo}
+						onChange={onChangeTodo}
+						onDelete={onDeleteTodo}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ todo, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let todoContent;
+	if (isEditing) {
+		todoContent = (
+			<>
+				<input
+					value={todo.title}
+					onChange={(e) => {
+						onChange({
+							...todo,
+							title: e.target.value,
+						});
+					}}
+				/>
+				<button on_click={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		todoContent = (
+			<>
+				{todo.title}
+				<button on_click={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={todo.done}
+				onChange={(e) => {
+					onChange({
+						...todo,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{todoContent}
+			<button on_click={() => onDelete(todo.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+With Immer, you can pick the style that feels the most natural for each separate case.
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/updating-objects-in-state.md b/docs/src/learn/updating-objects-in-state.md
new file mode 100644
index 000000000..ec6459955
--- /dev/null
+++ b/docs/src/learn/updating-objects-in-state.md
@@ -0,0 +1,1569 @@
+---
+title: Updating Objects in State 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+State can hold any kind of JavaScript value, including objects. But you shouldn't change objects that you hold in the React state directly. Instead, when you want to update an object, you need to create a new one (or make a copy of an existing one), and then set the state to use that copy.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   How to correctly update an object in React state
+    -   How to update a nested object without mutating it
+    -   What immutability is, and how not to break it
+    -   How to make object copying less repetitive with Immer
+
+## What's a mutation?
+
+You can store any kind of JavaScript value in state.
+
+```js
+const [x, setX] = useState(0);
+```
+
+So far you've been working with numbers, strings, and booleans. These kinds of JavaScript values are "immutable", meaning unchangeable or "read-only". You can trigger a re-render to _replace_ a value:
+
+```js
+setX(5);
+```
+
+The `x` state changed from `0` to `5`, but the _number `0` itself_ did not change. It's not possible to make any changes to the built-in primitive values like numbers, strings, and booleans in JavaScript.
+
+Now consider an object in state:
+
+```js
+const [position, setPosition] = useState({ x: 0, y: 0 });
+```
+
+Technically, it is possible to change the contents of _the object itself_. **This is called a mutation:**
+
+```js
+position.x = 5;
+```
+
+However, although objects in React state are technically mutable, you should treat them **as if** they were immutable--like numbers, booleans, and strings. Instead of mutating them, you should always replace them.
+
+## Treat state as read-only
+
+In other words, you should **treat any JavaScript object that you put into state as read-only.**
+
+This example holds an object in state to represent the current pointer position. The red dot is supposed to move when you touch or move the cursor over the preview area. But the dot stays in the initial position:
+
+```js
+import { useState } from "react";
+export default function MovingDot() {
+	const [position, setPosition] = useState({
+		x: 0,
+		y: 0,
+	});
+	return (
+		<div
+			onPointerMove={(e) => {
+				position.x = e.clientX;
+				position.y = e.clientY;
+			}}
+			style={{
+				position: "relative",
+				width: "100vw",
+				height: "100vh",
+			}}
+		>
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "red",
+					borderRadius: "50%",
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					left: -10,
+					top: -10,
+					width: 20,
+					height: 20,
+				}}
+			/>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	margin: 0;
+	padding: 0;
+	height: 250px;
+}
+```
+
+The problem is with this bit of code.
+
+```js
+onPointerMove={e => {
+  position.x = e.clientX;
+  position.y = e.clientY;
+}}
+```
+
+This code modifies the object assigned to `position` from [the previous render.](/learn/state-as-a-snapshot#rendering-takes-a-snapshot-in-time) But without using the state setting function, React has no idea that object has changed. So React does not do anything in response. It's like trying to change the order after you've already eaten the meal. While mutating state can work in some cases, we don't recommend it. You should treat the state value you have access to in a render as read-only.
+
+To actually [trigger a re-render](/learn/state-as-a-snapshot#setting-state-triggers-renders) in this case, **create a _new_ object and pass it to the state setting function:**
+
+```js
+onPointerMove={e => {
+  setPosition({
+    x: e.clientX,
+    y: e.clientY
+  });
+}}
+```
+
+With `setPosition`, you're telling React:
+
+-   Replace `position` with this new object
+-   And render this component again
+
+Notice how the red dot now follows your pointer when you touch or hover over the preview area:
+
+```js
+import { useState } from "react";
+export default function MovingDot() {
+	const [position, setPosition] = useState({
+		x: 0,
+		y: 0,
+	});
+	return (
+		<div
+			onPointerMove={(e) => {
+				setPosition({
+					x: e.clientX,
+					y: e.clientY,
+				});
+			}}
+			style={{
+				position: "relative",
+				width: "100vw",
+				height: "100vh",
+			}}
+		>
+			<div
+				style={{
+					position: "absolute",
+					backgroundColor: "red",
+					borderRadius: "50%",
+					transform: `translate(${position.x}px, ${position.y}px)`,
+					left: -10,
+					top: -10,
+					width: 20,
+					height: 20,
+				}}
+			/>
+		</div>
+	);
+}
+```
+
+```css
+body {
+	margin: 0;
+	padding: 0;
+	height: 250px;
+}
+```
+
+<DeepDive>
+
+#### Local mutation is fine
+
+Code like this is a problem because it modifies an _existing_ object in state:
+
+```js
+position.x = e.clientX;
+position.y = e.clientY;
+```
+
+But code like this is **absolutely fine** because you're mutating a fresh object you have _just created_:
+
+```js
+const nextPosition = {};
+nextPosition.x = e.clientX;
+nextPosition.y = e.clientY;
+setPosition(nextPosition);
+```
+
+In fact, it is completely equivalent to writing this:
+
+```js
+setPosition({
+	x: e.clientX,
+	y: e.clientY,
+});
+```
+
+Mutation is only a problem when you change _existing_ objects that are already in state. Mutating an object you've just created is okay because _no other code references it yet._ Changing it isn't going to accidentally impact something that depends on it. This is called a "local mutation". You can even do local mutation [while rendering.](/learn/keeping-components-pure#local-mutation-your-components-little-secret) Very convenient and completely okay!
+
+</DeepDive>
+
+## Copying objects with the spread syntax
+
+In the previous example, the `position` object is always created fresh from the current cursor position. But often, you will want to include _existing_ data as a part of the new object you're creating. For example, you may want to update _only one_ field in a form, but keep the previous values for all other fields.
+
+These input fields don't work because the `onChange` handlers mutate the state:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [person, setPerson] = useState({
+		firstName: "Barbara",
+		lastName: "Hepworth",
+		email: "bhepworth@sculpture.com",
+	});
+
+	function handleFirstNameChange(e) {
+		person.firstName = e.target.value;
+	}
+
+	function handleLastNameChange(e) {
+		person.lastName = e.target.value;
+	}
+
+	function handleEmailChange(e) {
+		person.email = e.target.value;
+	}
+
+	return (
+		<>
+			<label>
+				First name:
+				<input
+					value={person.firstName}
+					onChange={handleFirstNameChange}
+				/>
+			</label>
+			<label>
+				Last name:
+				<input
+					value={person.lastName}
+					onChange={handleLastNameChange}
+				/>
+			</label>
+			<label>
+				Email:
+				<input value={person.email} onChange={handleEmailChange} />
+			</label>
+			<p>
+				{person.firstName} {person.lastName} ({person.email})
+			</p>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+```
+
+For example, this line mutates the state from a past render:
+
+```js
+person.firstName = e.target.value;
+```
+
+The reliable way to get the behavior you're looking for is to create a new object and pass it to `setPerson`. But here, you want to also **copy the existing data into it** because only one of the fields has changed:
+
+```js
+setPerson({
+	firstName: e.target.value, // New first name from the input
+	lastName: person.lastName,
+	email: person.email,
+});
+```
+
+You can use the `...` [object spread](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_object_literals) syntax so that you don't need to copy every property separately.
+
+```js
+setPerson({
+	...person, // Copy the old fields
+	firstName: e.target.value, // But override this one
+});
+```
+
+Now the form works!
+
+Notice how you didn't declare a separate state variable for each input field. For large forms, keeping all data grouped in an object is very convenient--as long as you update it correctly!
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [person, setPerson] = useState({
+		firstName: "Barbara",
+		lastName: "Hepworth",
+		email: "bhepworth@sculpture.com",
+	});
+
+	function handleFirstNameChange(e) {
+		setPerson({
+			...person,
+			firstName: e.target.value,
+		});
+	}
+
+	function handleLastNameChange(e) {
+		setPerson({
+			...person,
+			lastName: e.target.value,
+		});
+	}
+
+	function handleEmailChange(e) {
+		setPerson({
+			...person,
+			email: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<label>
+				First name:
+				<input
+					value={person.firstName}
+					onChange={handleFirstNameChange}
+				/>
+			</label>
+			<label>
+				Last name:
+				<input
+					value={person.lastName}
+					onChange={handleLastNameChange}
+				/>
+			</label>
+			<label>
+				Email:
+				<input value={person.email} onChange={handleEmailChange} />
+			</label>
+			<p>
+				{person.firstName} {person.lastName} ({person.email})
+			</p>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+```
+
+Note that the `...` spread syntax is "shallow"--it only copies things one level deep. This makes it fast, but it also means that if you want to update a nested property, you'll have to use it more than once.
+
+<DeepDive>
+
+#### Using a single event handler for multiple fields
+
+You can also use the `[` and `]` braces inside your object definition to specify a property with dynamic name. Here is the same example, but with a single event handler instead of three different ones:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [person, setPerson] = useState({
+		firstName: "Barbara",
+		lastName: "Hepworth",
+		email: "bhepworth@sculpture.com",
+	});
+
+	function handleChange(e) {
+		setPerson({
+			...person,
+			[e.target.name]: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<label>
+				First name:
+				<input
+					name="firstName"
+					value={person.firstName}
+					onChange={handleChange}
+				/>
+			</label>
+			<label>
+				Last name:
+				<input
+					name="lastName"
+					value={person.lastName}
+					onChange={handleChange}
+				/>
+			</label>
+			<label>
+				Email:
+				<input
+					name="email"
+					value={person.email}
+					onChange={handleChange}
+				/>
+			</label>
+			<p>
+				{person.firstName} {person.lastName} ({person.email})
+			</p>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+```
+
+Here, `e.target.name` refers to the `name` property given to the `<input>` DOM element.
+
+</DeepDive>
+
+## Updating a nested object
+
+Consider a nested object structure like this:
+
+```js
+const [person, setPerson] = useState({
+	name: "Niki de Saint Phalle",
+	artwork: {
+		title: "Blue Nana",
+		city: "Hamburg",
+		image: "https://i.imgur.com/Sd1AgUOm.jpg",
+	},
+});
+```
+
+If you wanted to update `person.artwork.city`, it's clear how to do it with mutation:
+
+```js
+person.artwork.city = "New Delhi";
+```
+
+But in React, you treat state as immutable! In order to change `city`, you would first need to produce the new `artwork` object (pre-populated with data from the previous one), and then produce the new `person` object which points at the new `artwork`:
+
+```js
+const nextArtwork = { ...person.artwork, city: "New Delhi" };
+const nextPerson = { ...person, artwork: nextArtwork };
+setPerson(nextPerson);
+```
+
+Or, written as a single function call:
+
+```js
+setPerson({
+	...person, // Copy other fields
+	artwork: {
+		// but replace the artwork
+		...person.artwork, // with the same one
+		city: "New Delhi", // but in New Delhi!
+	},
+});
+```
+
+This gets a bit wordy, but it works fine for many cases:
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [person, setPerson] = useState({
+		name: "Niki de Saint Phalle",
+		artwork: {
+			title: "Blue Nana",
+			city: "Hamburg",
+			image: "https://i.imgur.com/Sd1AgUOm.jpg",
+		},
+	});
+
+	function handleNameChange(e) {
+		setPerson({
+			...person,
+			name: e.target.value,
+		});
+	}
+
+	function handleTitleChange(e) {
+		setPerson({
+			...person,
+			artwork: {
+				...person.artwork,
+				title: e.target.value,
+			},
+		});
+	}
+
+	function handleCityChange(e) {
+		setPerson({
+			...person,
+			artwork: {
+				...person.artwork,
+				city: e.target.value,
+			},
+		});
+	}
+
+	function handleImageChange(e) {
+		setPerson({
+			...person,
+			artwork: {
+				...person.artwork,
+				image: e.target.value,
+			},
+		});
+	}
+
+	return (
+		<>
+			<label>
+				Name:
+				<input value={person.name} onChange={handleNameChange} />
+			</label>
+			<label>
+				Title:
+				<input
+					value={person.artwork.title}
+					onChange={handleTitleChange}
+				/>
+			</label>
+			<label>
+				City:
+				<input
+					value={person.artwork.city}
+					onChange={handleCityChange}
+				/>
+			</label>
+			<label>
+				Image:
+				<input
+					value={person.artwork.image}
+					onChange={handleImageChange}
+				/>
+			</label>
+			<p>
+				<i>{person.artwork.title}</i>
+				{" by "}
+				{person.name}
+				<br />
+				(located in {person.artwork.city})
+			</p>
+			<img src={person.artwork.image} alt={person.artwork.title} />
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+img {
+	width: 200px;
+	height: 200px;
+}
+```
+
+<DeepDive>
+
+#### Objects are not really nested
+
+An object like this appears "nested" in code:
+
+```js
+let obj = {
+	name: "Niki de Saint Phalle",
+	artwork: {
+		title: "Blue Nana",
+		city: "Hamburg",
+		image: "https://i.imgur.com/Sd1AgUOm.jpg",
+	},
+};
+```
+
+However, "nesting" is an inaccurate way to think about how objects behave. When the code executes, there is no such thing as a "nested" object. You are really looking at two different objects:
+
+```js
+let obj1 = {
+	title: "Blue Nana",
+	city: "Hamburg",
+	image: "https://i.imgur.com/Sd1AgUOm.jpg",
+};
+
+let obj2 = {
+	name: "Niki de Saint Phalle",
+	artwork: obj1,
+};
+```
+
+The `obj1` object is not "inside" `obj2`. For example, `obj3` could "point" at `obj1` too:
+
+```js
+let obj1 = {
+	title: "Blue Nana",
+	city: "Hamburg",
+	image: "https://i.imgur.com/Sd1AgUOm.jpg",
+};
+
+let obj2 = {
+	name: "Niki de Saint Phalle",
+	artwork: obj1,
+};
+
+let obj3 = {
+	name: "Copycat",
+	artwork: obj1,
+};
+```
+
+If you were to mutate `obj3.artwork.city`, it would affect both `obj2.artwork.city` and `obj1.city`. This is because `obj3.artwork`, `obj2.artwork`, and `obj1` are the same object. This is difficult to see when you think of objects as "nested". Instead, they are separate objects "pointing" at each other with properties.
+
+</DeepDive>
+
+### Write concise update logic with Immer
+
+If your state is deeply nested, you might want to consider [flattening it.](/learn/choosing-the-state-structure#avoid-deeply-nested-state) But, if you don't want to change your state structure, you might prefer a shortcut to nested spreads. [Immer](https://github.com/immerjs/use-immer) is a popular library that lets you write using the convenient but mutating syntax and takes care of producing the copies for you. With Immer, the code you write looks like you are "breaking the rules" and mutating an object:
+
+```js
+updatePerson((draft) => {
+	draft.artwork.city = "Lagos";
+});
+```
+
+But unlike a regular mutation, it doesn't overwrite the past state!
+
+<DeepDive>
+
+#### How does Immer work?
+
+The `draft` provided by Immer is a special type of object, called a [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy), that "records" what you do with it. This is why you can mutate it freely as much as you like! Under the hood, Immer figures out which parts of the `draft` have been changed, and produces a completely new object that contains your edits.
+
+</DeepDive>
+
+To try Immer:
+
+1. Run `npm install use-immer` to add Immer as a dependency
+2. Then replace `import { useState } from 'react'` with `import { useImmer } from 'use-immer'`
+
+Here is the above example converted to Immer:
+
+```js
+import { useImmer } from "use-immer";
+
+export default function Form() {
+	const [person, updatePerson] = useImmer({
+		name: "Niki de Saint Phalle",
+		artwork: {
+			title: "Blue Nana",
+			city: "Hamburg",
+			image: "https://i.imgur.com/Sd1AgUOm.jpg",
+		},
+	});
+
+	function handleNameChange(e) {
+		updatePerson((draft) => {
+			draft.name = e.target.value;
+		});
+	}
+
+	function handleTitleChange(e) {
+		updatePerson((draft) => {
+			draft.artwork.title = e.target.value;
+		});
+	}
+
+	function handleCityChange(e) {
+		updatePerson((draft) => {
+			draft.artwork.city = e.target.value;
+		});
+	}
+
+	function handleImageChange(e) {
+		updatePerson((draft) => {
+			draft.artwork.image = e.target.value;
+		});
+	}
+
+	return (
+		<>
+			<label>
+				Name:
+				<input value={person.name} onChange={handleNameChange} />
+			</label>
+			<label>
+				Title:
+				<input
+					value={person.artwork.title}
+					onChange={handleTitleChange}
+				/>
+			</label>
+			<label>
+				City:
+				<input
+					value={person.artwork.city}
+					onChange={handleCityChange}
+				/>
+			</label>
+			<label>
+				Image:
+				<input
+					value={person.artwork.image}
+					onChange={handleImageChange}
+				/>
+			</label>
+			<p>
+				<i>{person.artwork.title}</i>
+				{" by "}
+				{person.name}
+				<br />
+				(located in {person.artwork.city})
+			</p>
+			<img src={person.artwork.image} alt={person.artwork.title} />
+		</>
+	);
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+img {
+	width: 200px;
+	height: 200px;
+}
+```
+
+Notice how much more concise the event handlers have become. You can mix and match `useState` and `useImmer` in a single component as much as you like. Immer is a great way to keep the update handlers concise, especially if there's nesting in your state, and copying objects leads to repetitive code.
+
+<DeepDive>
+
+#### Why is mutating state not recommended in React?
+
+There are a few reasons:
+
+-   **Debugging:** If you use `console.log` and don't mutate state, your past logs won't get clobbered by the more recent state changes. So you can clearly see how state has changed between renders.
+-   **Optimizations:** Common React [optimization strategies](/reference/react/memo) rely on skipping work if previous props or state are the same as the next ones. If you never mutate state, it is very fast to check whether there were any changes. If `prevObj === obj`, you can be sure that nothing could have changed inside of it.
+-   **New Features:** The new React features we're building rely on state being [treated like a snapshot.](/learn/state-as-a-snapshot) If you're mutating past versions of state, that may prevent you from using the new features.
+-   **Requirement Changes:** Some application features, like implementing Undo/Redo, showing a history of changes, or letting the user reset a form to earlier values, are easier to do when nothing is mutated. This is because you can keep past copies of state in memory, and reuse them when appropriate. If you start with a mutative approach, features like this can be difficult to add later on.
+-   **Simpler Implementation:** Because React does not rely on mutation, it does not need to do anything special with your objects. It does not need to hijack their properties, always wrap them into Proxies, or do other work at initialization as many "reactive" solutions do. This is also why React lets you put any object into state--no matter how large--without additional performance or correctness pitfalls.
+
+In practice, you can often "get away" with mutating state in React, but we strongly advise you not to do that so that you can use new React features developed with this approach in mind. Future contributors and perhaps even your future self will thank you!
+
+</DeepDive>
+
+<Recap>
+
+-   Treat all state in React as immutable.
+-   When you store objects in state, mutating them will not trigger renders and will change the state in previous render "snapshots".
+-   Instead of mutating an object, create a _new_ version of it, and trigger a re-render by setting state to it.
+-   You can use the `{...obj, something: 'newValue'}` object spread syntax to create copies of objects.
+-   Spread syntax is shallow: it only copies one level deep.
+-   To update a nested object, you need to create copies all the way up from the place you're updating.
+-   To reduce repetitive copying code, use Immer.
+
+</Recap>
+
+<Challenges>
+
+#### Fix incorrect state updates
+
+This form has a few bugs. Click the button that increases the score a few times. Notice that it does not increase. Then edit the first name, and notice that the score has suddenly "caught up" with your changes. Finally, edit the last name, and notice that the score has disappeared completely.
+
+Your task is to fix all of these bugs. As you fix them, explain why each of them happens.
+
+```js
+import { useState } from "react";
+
+export default function Scoreboard() {
+	const [player, setPlayer] = useState({
+		firstName: "Ranjani",
+		lastName: "Shettar",
+		score: 10,
+	});
+
+	function handlePlusClick() {
+		player.score++;
+	}
+
+	function handleFirstNameChange(e) {
+		setPlayer({
+			...player,
+			firstName: e.target.value,
+		});
+	}
+
+	function handleLastNameChange(e) {
+		setPlayer({
+			lastName: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<label>
+				Score: <b>{player.score}</b>{" "}
+				<button on_click={handlePlusClick}>+1</button>
+			</label>
+			<label>
+				First name:
+				<input
+					value={player.firstName}
+					onChange={handleFirstNameChange}
+				/>
+			</label>
+			<label>
+				Last name:
+				<input
+					value={player.lastName}
+					onChange={handleLastNameChange}
+				/>
+			</label>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+	margin-bottom: 10px;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+```
+
+<Solution>
+
+Here is a version with both bugs fixed:
+
+```js
+import { useState } from "react";
+
+export default function Scoreboard() {
+	const [player, setPlayer] = useState({
+		firstName: "Ranjani",
+		lastName: "Shettar",
+		score: 10,
+	});
+
+	function handlePlusClick() {
+		setPlayer({
+			...player,
+			score: player.score + 1,
+		});
+	}
+
+	function handleFirstNameChange(e) {
+		setPlayer({
+			...player,
+			firstName: e.target.value,
+		});
+	}
+
+	function handleLastNameChange(e) {
+		setPlayer({
+			...player,
+			lastName: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<label>
+				Score: <b>{player.score}</b>{" "}
+				<button on_click={handlePlusClick}>+1</button>
+			</label>
+			<label>
+				First name:
+				<input
+					value={player.firstName}
+					onChange={handleFirstNameChange}
+				/>
+			</label>
+			<label>
+				Last name:
+				<input
+					value={player.lastName}
+					onChange={handleLastNameChange}
+				/>
+			</label>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+```
+
+The problem with `handlePlusClick` was that it mutated the `player` object. As a result, React did not know that there's a reason to re-render, and did not update the score on the screen. This is why, when you edited the first name, the state got updated, triggering a re-render which _also_ updated the score on the screen.
+
+The problem with `handleLastNameChange` was that it did not copy the existing `...player` fields into the new object. This is why the score got lost after you edited the last name.
+
+</Solution>
+
+#### Find and fix the mutation
+
+There is a draggable box on a static background. You can change the box's color using the select input.
+
+But there is a bug. If you move the box first, and then change its color, the background (which isn't supposed to move!) will "jump" to the box position. But this should not happen: the `Background`'s `position` prop is set to `initialPosition`, which is `{ x: 0, y: 0 }`. Why is the background moving after the color change?
+
+Find the bug and fix it.
+
+<Hint>
+
+If something unexpected changes, there is a mutation. Find the mutation in `App.js` and fix it.
+
+</Hint>
+
+```js
+import { useState } from "react";
+import Background from "./Background.js";
+import Box from "./Box.js";
+
+const initialPosition = {
+	x: 0,
+	y: 0,
+};
+
+export default function Canvas() {
+	const [shape, setShape] = useState({
+		color: "orange",
+		position: initialPosition,
+	});
+
+	function handleMove(dx, dy) {
+		shape.position.x += dx;
+		shape.position.y += dy;
+	}
+
+	function handleColorChange(e) {
+		setShape({
+			...shape,
+			color: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<select value={shape.color} onChange={handleColorChange}>
+				<option value="orange">orange</option>
+				<option value="lightpink">lightpink</option>
+				<option value="aliceblue">aliceblue</option>
+			</select>
+			<Background position={initialPosition} />
+			<Box
+				color={shape.color}
+				position={shape.position}
+				onMove={handleMove}
+			>
+				Drag me!
+			</Box>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Box({ children, color, position, onMove }) {
+	const [lastCoordinates, setLastCoordinates] = useState(null);
+
+	function handlePointerDown(e) {
+		e.target.setPointerCapture(e.pointerId);
+		setLastCoordinates({
+			x: e.clientX,
+			y: e.clientY,
+		});
+	}
+
+	function handlePointerMove(e) {
+		if (lastCoordinates) {
+			setLastCoordinates({
+				x: e.clientX,
+				y: e.clientY,
+			});
+			const dx = e.clientX - lastCoordinates.x;
+			const dy = e.clientY - lastCoordinates.y;
+			onMove(dx, dy);
+		}
+	}
+
+	function handlePointerUp(e) {
+		setLastCoordinates(null);
+	}
+
+	return (
+		<div
+			onPointerDown={handlePointerDown}
+			onPointerMove={handlePointerMove}
+			onPointerUp={handlePointerUp}
+			style={{
+				width: 100,
+				height: 100,
+				cursor: "grab",
+				backgroundColor: color,
+				position: "absolute",
+				border: "1px solid black",
+				display: "flex",
+				justifyContent: "center",
+				alignItems: "center",
+				transform: `translate(
+          ${position.x}px,
+          ${position.y}px
+        )`,
+			}}
+		>
+			{children}
+		</div>
+	);
+}
+```
+
+```js
+export default function Background({ position }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				transform: `translate(
+        ${position.x}px,
+        ${position.y}px
+      )`,
+				width: 250,
+				height: 250,
+				backgroundColor: "rgba(200, 200, 0, 0.2)",
+			}}
+		/>
+	);
+}
+```
+
+```css
+body {
+	height: 280px;
+}
+select {
+	margin-bottom: 10px;
+}
+```
+
+<Solution>
+
+The problem was in the mutation inside `handleMove`. It mutated `shape.position`, but that's the same object that `initialPosition` points at. This is why both the shape and the background move. (It's a mutation, so the change doesn't reflect on the screen until an unrelated update--the color change--triggers a re-render.)
+
+The fix is to remove the mutation from `handleMove`, and use the spread syntax to copy the shape. Note that `+=` is a mutation, so you need to rewrite it to use a regular `+` operation.
+
+```js
+import { useState } from "react";
+import Background from "./Background.js";
+import Box from "./Box.js";
+
+const initialPosition = {
+	x: 0,
+	y: 0,
+};
+
+export default function Canvas() {
+	const [shape, setShape] = useState({
+		color: "orange",
+		position: initialPosition,
+	});
+
+	function handleMove(dx, dy) {
+		setShape({
+			...shape,
+			position: {
+				x: shape.position.x + dx,
+				y: shape.position.y + dy,
+			},
+		});
+	}
+
+	function handleColorChange(e) {
+		setShape({
+			...shape,
+			color: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<select value={shape.color} onChange={handleColorChange}>
+				<option value="orange">orange</option>
+				<option value="lightpink">lightpink</option>
+				<option value="aliceblue">aliceblue</option>
+			</select>
+			<Background position={initialPosition} />
+			<Box
+				color={shape.color}
+				position={shape.position}
+				onMove={handleMove}
+			>
+				Drag me!
+			</Box>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Box({ children, color, position, onMove }) {
+	const [lastCoordinates, setLastCoordinates] = useState(null);
+
+	function handlePointerDown(e) {
+		e.target.setPointerCapture(e.pointerId);
+		setLastCoordinates({
+			x: e.clientX,
+			y: e.clientY,
+		});
+	}
+
+	function handlePointerMove(e) {
+		if (lastCoordinates) {
+			setLastCoordinates({
+				x: e.clientX,
+				y: e.clientY,
+			});
+			const dx = e.clientX - lastCoordinates.x;
+			const dy = e.clientY - lastCoordinates.y;
+			onMove(dx, dy);
+		}
+	}
+
+	function handlePointerUp(e) {
+		setLastCoordinates(null);
+	}
+
+	return (
+		<div
+			onPointerDown={handlePointerDown}
+			onPointerMove={handlePointerMove}
+			onPointerUp={handlePointerUp}
+			style={{
+				width: 100,
+				height: 100,
+				cursor: "grab",
+				backgroundColor: color,
+				position: "absolute",
+				border: "1px solid black",
+				display: "flex",
+				justifyContent: "center",
+				alignItems: "center",
+				transform: `translate(
+          ${position.x}px,
+          ${position.y}px
+        )`,
+			}}
+		>
+			{children}
+		</div>
+	);
+}
+```
+
+```js
+export default function Background({ position }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				transform: `translate(
+        ${position.x}px,
+        ${position.y}px
+      )`,
+				width: 250,
+				height: 250,
+				backgroundColor: "rgba(200, 200, 0, 0.2)",
+			}}
+		/>
+	);
+}
+```
+
+```css
+body {
+	height: 280px;
+}
+select {
+	margin-bottom: 10px;
+}
+```
+
+</Solution>
+
+#### Update an object with Immer
+
+This is the same buggy example as in the previous challenge. This time, fix the mutation by using Immer. For your convenience, `useImmer` is already imported, so you need to change the `shape` state variable to use it.
+
+```js
+import { useState } from "react";
+import { useImmer } from "use-immer";
+import Background from "./Background.js";
+import Box from "./Box.js";
+
+const initialPosition = {
+	x: 0,
+	y: 0,
+};
+
+export default function Canvas() {
+	const [shape, setShape] = useState({
+		color: "orange",
+		position: initialPosition,
+	});
+
+	function handleMove(dx, dy) {
+		shape.position.x += dx;
+		shape.position.y += dy;
+	}
+
+	function handleColorChange(e) {
+		setShape({
+			...shape,
+			color: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<select value={shape.color} onChange={handleColorChange}>
+				<option value="orange">orange</option>
+				<option value="lightpink">lightpink</option>
+				<option value="aliceblue">aliceblue</option>
+			</select>
+			<Background position={initialPosition} />
+			<Box
+				color={shape.color}
+				position={shape.position}
+				onMove={handleMove}
+			>
+				Drag me!
+			</Box>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Box({ children, color, position, onMove }) {
+	const [lastCoordinates, setLastCoordinates] = useState(null);
+
+	function handlePointerDown(e) {
+		e.target.setPointerCapture(e.pointerId);
+		setLastCoordinates({
+			x: e.clientX,
+			y: e.clientY,
+		});
+	}
+
+	function handlePointerMove(e) {
+		if (lastCoordinates) {
+			setLastCoordinates({
+				x: e.clientX,
+				y: e.clientY,
+			});
+			const dx = e.clientX - lastCoordinates.x;
+			const dy = e.clientY - lastCoordinates.y;
+			onMove(dx, dy);
+		}
+	}
+
+	function handlePointerUp(e) {
+		setLastCoordinates(null);
+	}
+
+	return (
+		<div
+			onPointerDown={handlePointerDown}
+			onPointerMove={handlePointerMove}
+			onPointerUp={handlePointerUp}
+			style={{
+				width: 100,
+				height: 100,
+				cursor: "grab",
+				backgroundColor: color,
+				position: "absolute",
+				border: "1px solid black",
+				display: "flex",
+				justifyContent: "center",
+				alignItems: "center",
+				transform: `translate(
+          ${position.x}px,
+          ${position.y}px
+        )`,
+			}}
+		>
+			{children}
+		</div>
+	);
+}
+```
+
+```js
+export default function Background({ position }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				transform: `translate(
+        ${position.x}px,
+        ${position.y}px
+      )`,
+				width: 250,
+				height: 250,
+				backgroundColor: "rgba(200, 200, 0, 0.2)",
+			}}
+		/>
+	);
+}
+```
+
+```css
+body {
+	height: 280px;
+}
+select {
+	margin-bottom: 10px;
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+<Solution>
+
+This is the solution rewritten with Immer. Notice how the event handlers are written in a mutating fashion, but the bug does not occur. This is because under the hood, Immer never mutates the existing objects.
+
+```js
+import { useImmer } from "use-immer";
+import Background from "./Background.js";
+import Box from "./Box.js";
+
+const initialPosition = {
+	x: 0,
+	y: 0,
+};
+
+export default function Canvas() {
+	const [shape, updateShape] = useImmer({
+		color: "orange",
+		position: initialPosition,
+	});
+
+	function handleMove(dx, dy) {
+		updateShape((draft) => {
+			draft.position.x += dx;
+			draft.position.y += dy;
+		});
+	}
+
+	function handleColorChange(e) {
+		updateShape((draft) => {
+			draft.color = e.target.value;
+		});
+	}
+
+	return (
+		<>
+			<select value={shape.color} onChange={handleColorChange}>
+				<option value="orange">orange</option>
+				<option value="lightpink">lightpink</option>
+				<option value="aliceblue">aliceblue</option>
+			</select>
+			<Background position={initialPosition} />
+			<Box
+				color={shape.color}
+				position={shape.position}
+				onMove={handleMove}
+			>
+				Drag me!
+			</Box>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function Box({ children, color, position, onMove }) {
+	const [lastCoordinates, setLastCoordinates] = useState(null);
+
+	function handlePointerDown(e) {
+		e.target.setPointerCapture(e.pointerId);
+		setLastCoordinates({
+			x: e.clientX,
+			y: e.clientY,
+		});
+	}
+
+	function handlePointerMove(e) {
+		if (lastCoordinates) {
+			setLastCoordinates({
+				x: e.clientX,
+				y: e.clientY,
+			});
+			const dx = e.clientX - lastCoordinates.x;
+			const dy = e.clientY - lastCoordinates.y;
+			onMove(dx, dy);
+		}
+	}
+
+	function handlePointerUp(e) {
+		setLastCoordinates(null);
+	}
+
+	return (
+		<div
+			onPointerDown={handlePointerDown}
+			onPointerMove={handlePointerMove}
+			onPointerUp={handlePointerUp}
+			style={{
+				width: 100,
+				height: 100,
+				cursor: "grab",
+				backgroundColor: color,
+				position: "absolute",
+				border: "1px solid black",
+				display: "flex",
+				justifyContent: "center",
+				alignItems: "center",
+				transform: `translate(
+          ${position.x}px,
+          ${position.y}px
+        )`,
+			}}
+		>
+			{children}
+		</div>
+	);
+}
+```
+
+```js
+export default function Background({ position }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				transform: `translate(
+        ${position.x}px,
+        ${position.y}px
+      )`,
+				width: 250,
+				height: 250,
+				backgroundColor: "rgba(200, 200, 0, 0.2)",
+			}}
+		/>
+	);
+}
+```
+
+```css
+body {
+	height: 280px;
+}
+select {
+	margin-bottom: 10px;
+}
+```
+
+```json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/vdom-mutations.md b/docs/src/learn/vdom-mutations.md
new file mode 100644
index 000000000..6015f6905
--- /dev/null
+++ b/docs/src/learn/vdom-mutations.md
@@ -0,0 +1,3 @@
+---
+title: VDOM Mutations 🚧
+---
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
new file mode 100644
index 000000000..829a83725
--- /dev/null
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -0,0 +1,326 @@
+---
+title: Writing Markup with PSX 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+_JSX_ is a syntax extension for JavaScript that lets you write HTML-like markup inside a JavaScript file. Although there are other ways to write components, most React developers prefer the conciseness of JSX, and most codebases use it.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   Why React mixes markup with rendering logic
+    -   How JSX is different from HTML
+    -   How to display information with JSX
+
+## JSX: Putting markup into JavaScript
+
+The Web has been built on HTML, CSS, and JavaScript. For many years, web developers kept content in HTML, design in CSS, and logic in JavaScript—often in separate files! Content was marked up inside HTML while the page's logic lived separately in JavaScript:
+
+<!-- TODO: Diagram -->
+
+But as the Web became more interactive, logic increasingly determined content. JavaScript was in charge of the HTML! This is why **in React, rendering logic and markup live together in the same place—components.**
+
+<!-- TODO: Diagram -->
+
+Keeping a button's rendering logic and markup together ensures that they stay in sync with each other on every edit. Conversely, details that are unrelated, such as the button's markup and a sidebar's markup, are isolated from each other, making it safer to change either of them on their own.
+
+Each React component is a JavaScript function that may contain some markup that React renders into the browser. React components use a syntax extension called JSX to represent that markup. JSX looks a lot like HTML, but it is a bit stricter and can display dynamic information. The best way to understand this is to convert some HTML markup to JSX markup.
+
+<Note>
+
+JSX and React are two separate things. They're often used together, but you _can_ [use them independently](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#whats-a-jsx-transform) of each other. JSX is a syntax extension, while React is a JavaScript library.
+
+</Note>
+
+## Converting HTML to JSX
+
+Suppose that you have some (perfectly valid) HTML:
+
+```html
+<h1>Hedy Lamarr's Todos</h1>
+<img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" class="photo" />
+<ul>
+	<li>Invent new traffic lights</li>
+	<li>Rehearse a movie scene</li>
+	<li>Improve the spectrum technology</li>
+</ul>
+```
+
+And you want to put it into your component:
+
+```js
+export default function TodoList() {
+  return (
+    // ???
+  )
+}
+```
+
+If you copy and paste it as is, it will not work:
+
+```js
+export default function TodoList() {
+  return (
+    // This doesn't quite work!
+    <h1>Hedy Lamarr's Todos</h1>
+    <img
+      src="https://i.imgur.com/yXOvdOSs.jpg"
+      alt="Hedy Lamarr"
+      class="photo"
+    >
+    <ul>
+      <li>Invent new traffic lights
+      <li>Rehearse a movie scene
+      <li>Improve the spectrum technology
+    </ul>
+  );
+}
+```
+
+```css
+img {
+	height: 90px;
+}
+```
+
+This is because JSX is stricter and has a few more rules than HTML! If you read the error messages above, they'll guide you to fix the markup, or you can follow the guide below.
+
+<Note>
+
+Most of the time, React's on-screen error messages will help you find where the problem is. Give them a read if you get stuck!
+
+</Note>
+
+## The Rules of JSX
+
+### 1. Return a single root element
+
+To return multiple elements from a component, **wrap them with a single parent tag.**
+
+For example, you can use a `<div>`:
+
+```js
+<div>
+  <h1>Hedy Lamarr's Todos</h1>
+  <img
+    src="https://i.imgur.com/yXOvdOSs.jpg"
+    alt="Hedy Lamarr"
+    class="photo"
+  >
+  <ul>
+    ...
+  </ul>
+</div>
+```
+
+If you don't want to add an extra `<div>` to your markup, you can write `<>` and `</>` instead:
+
+```js
+<>
+  <h1>Hedy Lamarr's Todos</h1>
+  <img
+    src="https://i.imgur.com/yXOvdOSs.jpg"
+    alt="Hedy Lamarr"
+    class="photo"
+  >
+  <ul>
+    ...
+  </ul>
+</>
+```
+
+This empty tag is called a _[Fragment.](/reference/react/Fragment)_ Fragments let you group things without leaving any trace in the browser HTML tree.
+
+<DeepDive>
+
+#### Why do multiple JSX tags need to be wrapped?
+
+JSX looks like HTML, but under the hood it is transformed into plain JavaScript objects. You can't return two objects from a function without wrapping them into an array. This explains why you also can't return two JSX tags without wrapping them into another tag or a Fragment.
+
+</DeepDive>
+
+### 2. Close all the tags
+
+JSX requires tags to be explicitly closed: self-closing tags like `<img>` must become `<img />`, and wrapping tags like `<li>oranges` must be written as `<li>oranges</li>`.
+
+This is how Hedy Lamarr's image and list items look closed:
+
+```js
+<>
+	<img
+		src="https://i.imgur.com/yXOvdOSs.jpg"
+		alt="Hedy Lamarr"
+		class="photo"
+	/>
+	<ul>
+		<li>Invent new traffic lights</li>
+		<li>Rehearse a movie scene</li>
+		<li>Improve the spectrum technology</li>
+	</ul>
+</>
+```
+
+### 3. camelCase <s>all</s> most of the things!
+
+JSX turns into JavaScript and attributes written in JSX become keys of JavaScript objects. In your own components, you will often want to read those attributes into variables. But JavaScript has limitations on variable names. For example, their names can't contain dashes or be reserved words like `class`.
+
+This is why, in React, many HTML and SVG attributes are written in camelCase. For example, instead of `stroke-width` you use `strokeWidth`. Since `class` is a reserved word, in React you write `className` instead, named after the [corresponding DOM property](https://developer.mozilla.org/en-US/docs/Web/API/Element/className):
+
+```js
+<img
+	src="https://i.imgur.com/yXOvdOSs.jpg"
+	alt="Hedy Lamarr"
+	className="photo"
+/>
+```
+
+You can [find all these attributes in the list of DOM component props.](/reference/react-dom/components/common) If you get one wrong, don't worry—React will print a message with a possible correction to the [browser console.](https://developer.mozilla.org/docs/Tools/Browser_Console)
+
+<Pitfall>
+
+For historical reasons, [`aria-*`](https://developer.mozilla.org/docs/Web/Accessibility/ARIA) and [`data-*`](https://developer.mozilla.org/docs/Learn/HTML/Howto/Use_data_attributes) attributes are written as in HTML with dashes.
+
+</Pitfall>
+
+### Pro-tip: Use a JSX Converter
+
+Converting all these attributes in existing markup can be tedious! We recommend using a [converter](https://transform.tools/html-to-jsx) to translate your existing HTML and SVG to JSX. Converters are very useful in practice, but it's still worth understanding what is going on so that you can comfortably write JSX on your own.
+
+Here is your final result:
+
+```js
+export default function TodoList() {
+	return (
+		<>
+			<h1>Hedy Lamarr's Todos</h1>
+			<img
+				src="https://i.imgur.com/yXOvdOSs.jpg"
+				alt="Hedy Lamarr"
+				className="photo"
+			/>
+			<ul>
+				<li>Invent new traffic lights</li>
+				<li>Rehearse a movie scene</li>
+				<li>Improve the spectrum technology</li>
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+img {
+	height: 90px;
+}
+```
+
+<Recap>
+
+Now you know why JSX exists and how to use it in components:
+
+-   React components group rendering logic together with markup because they are related.
+-   JSX is similar to HTML, with a few differences. You can use a [converter](https://transform.tools/html-to-jsx) if you need to.
+-   Error messages will often point you in the right direction to fixing your markup.
+
+</Recap>
+
+<Challenges>
+
+#### Convert some HTML to JSX
+
+This HTML was pasted into a component, but it's not valid JSX. Fix it:
+
+```js
+export default function Bio() {
+  return (
+    <div class="intro">
+      <h1>Welcome to my website!</h1>
+    </div>
+    <p class="summary">
+      You can find my thoughts here.
+      <br><br>
+      <b>And <i>pictures</b></i> of scientists!
+    </p>
+  );
+}
+```
+
+```css
+.intro {
+	background-image: linear-gradient(
+		to left,
+		violet,
+		indigo,
+		blue,
+		green,
+		yellow,
+		orange,
+		red
+	);
+	background-clip: text;
+	color: transparent;
+	-webkit-background-clip: text;
+	-webkit-text-fill-color: transparent;
+}
+
+.summary {
+	padding: 20px;
+	border: 10px solid gold;
+}
+```
+
+Whether to do it by hand or using the converter is up to you!
+
+<Solution>
+
+```js
+export default function Bio() {
+	return (
+		<div>
+			<div className="intro">
+				<h1>Welcome to my website!</h1>
+			</div>
+			<p className="summary">
+				You can find my thoughts here.
+				<br />
+				<br />
+				<b>
+					And <i>pictures</i>
+				</b> of scientists!
+			</p>
+		</div>
+	);
+}
+```
+
+```css
+.intro {
+	background-image: linear-gradient(
+		to left,
+		violet,
+		indigo,
+		blue,
+		green,
+		yellow,
+		orange,
+		red
+	);
+	background-clip: text;
+	color: transparent;
+	-webkit-background-clip: text;
+	-webkit-text-fill-color: transparent;
+}
+
+.summary {
+	padding: 20px;
+	border: 10px solid gold;
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/you-might-not-need-an-effect.md b/docs/src/learn/you-might-not-need-an-effect.md
new file mode 100644
index 000000000..712c5e946
--- /dev/null
+++ b/docs/src/learn/you-might-not-need-an-effect.md
@@ -0,0 +1,1702 @@
+---
+title: "You Might Not Need an Effect 🚧"
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+Effects are an escape hatch from the React paradigm. They let you "step outside" of React and synchronize your components with some external system like a non-React widget, network, or the browser DOM. If there is no external system involved (for example, if you want to update a component's state when some props or state change), you shouldn't need an Effect. Removing unnecessary Effects will make your code easier to follow, faster to run, and less error-prone.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   Why and how to remove unnecessary Effects from your components
+    -   How to cache expensive computations without Effects
+    -   How to reset and adjust component state without Effects
+    -   How to share logic between event handlers
+    -   Which logic should be moved to event handlers
+    -   How to notify parent components about changes
+
+## How to remove unnecessary Effects
+
+There are two common cases in which you don't need Effects:
+
+-   **You don't need Effects to transform data for rendering.** For example, let's say you want to filter a list before displaying it. You might feel tempted to write an Effect that updates a state variable when the list changes. However, this is inefficient. When you update the state, React will first call your component functions to calculate what should be on the screen. Then React will ["commit"](/learn/render-and-commit) these changes to the DOM, updating the screen. Then React will run your Effects. If your Effect _also_ immediately updates the state, this restarts the whole process from scratch! To avoid the unnecessary render passes, transform all the data at the top level of your components. That code will automatically re-run whenever your props or state change.
+-   **You don't need Effects to handle user events.** For example, let's say you want to send an `/api/buy` POST request and show a notification when the user buys a product. In the Buy button click event handler, you know exactly what happened. By the time an Effect runs, you don't know _what_ the user did (for example, which button was clicked). This is why you'll usually handle user events in the corresponding event handlers.
+
+You _do_ need Effects to [synchronize](/learn/synchronizing-with-effects#what-are-effects-and-how-are-they-different-from-events) with external systems. For example, you can write an Effect that keeps a jQuery widget synchronized with the React state. You can also fetch data with Effects: for example, you can synchronize the search results with the current search query. Keep in mind that modern [frameworks](/learn/start-a-new-react-project#production-grade-react-frameworks) provide more efficient built-in data fetching mechanisms than writing Effects directly in your components.
+
+To help you gain the right intuition, let's look at some common concrete examples!
+
+### Updating state based on props or state
+
+Suppose you have a component with two state variables: `firstName` and `lastName`. You want to calculate a `fullName` from them by concatenating them. Moreover, you'd like `fullName` to update whenever `firstName` or `lastName` change. Your first instinct might be to add a `fullName` state variable and update it in an Effect:
+
+```js
+function Form() {
+	const [firstName, setFirstName] = useState("Taylor");
+	const [lastName, setLastName] = useState("Swift");
+
+	// 🔴 Avoid: redundant state and unnecessary Effect
+	const [fullName, setFullName] = useState("");
+	useEffect(() => {
+		setFullName(firstName + " " + lastName);
+	}, [firstName, lastName]);
+	// ...
+}
+```
+
+This is more complicated than necessary. It is inefficient too: it does an entire render pass with a stale value for `fullName`, then immediately re-renders with the updated value. Remove the state variable and the Effect:
+
+```js
+function Form() {
+	const [firstName, setFirstName] = useState("Taylor");
+	const [lastName, setLastName] = useState("Swift");
+	// ✅ Good: calculated during rendering
+	const fullName = firstName + " " + lastName;
+	// ...
+}
+```
+
+**When something can be calculated from the existing props or state, [don't put it in state.](/learn/choosing-the-state-structure#avoid-redundant-state) Instead, calculate it during rendering.** This makes your code faster (you avoid the extra "cascading" updates), simpler (you remove some code), and less error-prone (you avoid bugs caused by different state variables getting out of sync with each other). If this approach feels new to you, [Thinking in React](/learn/thinking-in-react#step-3-find-the-minimal-but-complete-representation-of-ui-state) explains what should go into state.
+
+### Caching expensive calculations
+
+This component computes `visibleTodos` by taking the `todos` it receives by props and filtering them according to the `filter` prop. You might feel tempted to store the result in state and update it from an Effect:
+
+```js
+function TodoList({ todos, filter }) {
+	const [newTodo, setNewTodo] = useState("");
+
+	// 🔴 Avoid: redundant state and unnecessary Effect
+	const [visibleTodos, setVisibleTodos] = useState([]);
+	useEffect(() => {
+		setVisibleTodos(getFilteredTodos(todos, filter));
+	}, [todos, filter]);
+
+	// ...
+}
+```
+
+Like in the earlier example, this is both unnecessary and inefficient. First, remove the state and the Effect:
+
+```js
+function TodoList({ todos, filter }) {
+	const [newTodo, setNewTodo] = useState("");
+	// ✅ This is fine if getFilteredTodos() is not slow.
+	const visibleTodos = getFilteredTodos(todos, filter);
+	// ...
+}
+```
+
+Usually, this code is fine! But maybe `getFilteredTodos()` is slow or you have a lot of `todos`. In that case you don't want to recalculate `getFilteredTodos()` if some unrelated state variable like `newTodo` has changed.
+
+You can cache (or ["memoize"](https://en.wikipedia.org/wiki/Memoization)) an expensive calculation by wrapping it in a [`useMemo`](/reference/react/useMemo) Hook:
+
+```js
+import { useMemo, useState } from "react";
+
+function TodoList({ todos, filter }) {
+	const [newTodo, setNewTodo] = useState("");
+	const visibleTodos = useMemo(() => {
+		// ✅ Does not re-run unless todos or filter change
+		return getFilteredTodos(todos, filter);
+	}, [todos, filter]);
+	// ...
+}
+```
+
+Or, written as a single line:
+
+```js
+import { useMemo, useState } from "react";
+
+function TodoList({ todos, filter }) {
+	const [newTodo, setNewTodo] = useState("");
+	// ✅ Does not re-run getFilteredTodos() unless todos or filter change
+	const visibleTodos = useMemo(
+		() => getFilteredTodos(todos, filter),
+		[todos, filter]
+	);
+	// ...
+}
+```
+
+**This tells React that you don't want the inner function to re-run unless either `todos` or `filter` have changed.** React will remember the return value of `getFilteredTodos()` during the initial render. During the next renders, it will check if `todos` or `filter` are different. If they're the same as last time, `useMemo` will return the last result it has stored. But if they are different, React will call the inner function again (and store its result).
+
+The function you wrap in [`useMemo`](/reference/react/useMemo) runs during rendering, so this only works for [pure calculations.](/learn/keeping-components-pure)
+
+<DeepDive>
+
+#### How to tell if a calculation is expensive?
+
+In general, unless you're creating or looping over thousands of objects, it's probably not expensive. If you want to get more confidence, you can add a console log to measure the time spent in a piece of code:
+
+```js
+console.time("filter array");
+const visibleTodos = getFilteredTodos(todos, filter);
+console.timeEnd("filter array");
+```
+
+Perform the interaction you're measuring (for example, typing into the input). You will then see logs like `filter array: 0.15ms` in your console. If the overall logged time adds up to a significant amount (say, `1ms` or more), it might make sense to memoize that calculation. As an experiment, you can then wrap the calculation in `useMemo` to verify whether the total logged time has decreased for that interaction or not:
+
+```js
+console.time("filter array");
+const visibleTodos = useMemo(() => {
+	return getFilteredTodos(todos, filter); // Skipped if todos and filter haven't changed
+}, [todos, filter]);
+console.timeEnd("filter array");
+```
+
+`useMemo` won't make the _first_ render faster. It only helps you skip unnecessary work on updates.
+
+Keep in mind that your machine is probably faster than your users' so it's a good idea to test the performance with an artificial slowdown. For example, Chrome offers a [CPU Throttling](https://developer.chrome.com/blog/new-in-devtools-61/#throttling) option for this.
+
+Also note that measuring performance in development will not give you the most accurate results. (For example, when [Strict Mode](/reference/react/StrictMode) is on, you will see each component render twice rather than once.) To get the most accurate timings, build your app for production and test it on a device like your users have.
+
+</DeepDive>
+
+### Resetting all state when a prop changes
+
+This `ProfilePage` component receives a `userId` prop. The page contains a comment input, and you use a `comment` state variable to hold its value. One day, you notice a problem: when you navigate from one profile to another, the `comment` state does not get reset. As a result, it's easy to accidentally post a comment on a wrong user's profile. To fix the issue, you want to clear out the `comment` state variable whenever the `userId` changes:
+
+```js
+export default function ProfilePage({ userId }) {
+	const [comment, setComment] = useState("");
+
+	// 🔴 Avoid: Resetting state on prop change in an Effect
+	useEffect(() => {
+		setComment("");
+	}, [userId]);
+	// ...
+}
+```
+
+This is inefficient because `ProfilePage` and its children will first render with the stale value, and then render again. It is also complicated because you'd need to do this in _every_ component that has some state inside `ProfilePage`. For example, if the comment UI is nested, you'd want to clear out nested comment state too.
+
+Instead, you can tell React that each user's profile is conceptually a _different_ profile by giving it an explicit key. Split your component in two and pass a `key` attribute from the outer component to the inner one:
+
+```js
+export default function ProfilePage({ userId }) {
+	return <Profile userId={userId} key={userId} />;
+}
+
+function Profile({ userId }) {
+	// ✅ This and any other state below will reset on key change automatically
+	const [comment, setComment] = useState("");
+	// ...
+}
+```
+
+Normally, React preserves the state when the same component is rendered in the same spot. **By passing `userId` as a `key` to the `Profile` component, you're asking React to treat two `Profile` components with different `userId` as two different components that should not share any state.** Whenever the key (which you've set to `userId`) changes, React will recreate the DOM and [reset the state](/learn/preserving-and-resetting-state#option-2-resetting-state-with-a-key) of the `Profile` component and all of its children. Now the `comment` field will clear out automatically when navigating between profiles.
+
+Note that in this example, only the outer `ProfilePage` component is exported and visible to other files in the project. Components rendering `ProfilePage` don't need to pass the key to it: they pass `userId` as a regular prop. The fact `ProfilePage` passes it as a `key` to the inner `Profile` component is an implementation detail.
+
+### Adjusting some state when a prop changes
+
+Sometimes, you might want to reset or adjust a part of the state on a prop change, but not all of it.
+
+This `List` component receives a list of `items` as a prop, and maintains the selected item in the `selection` state variable. You want to reset the `selection` to `null` whenever the `items` prop receives a different array:
+
+```js
+function List({ items }) {
+	const [isReverse, setIsReverse] = useState(false);
+	const [selection, setSelection] = useState(null);
+
+	// 🔴 Avoid: Adjusting state on prop change in an Effect
+	useEffect(() => {
+		setSelection(null);
+	}, [items]);
+	// ...
+}
+```
+
+This, too, is not ideal. Every time the `items` change, the `List` and its child components will render with a stale `selection` value at first. Then React will update the DOM and run the Effects. Finally, the `setSelection(null)` call will cause another re-render of the `List` and its child components, restarting this whole process again.
+
+Start by deleting the Effect. Instead, adjust the state directly during rendering:
+
+```js
+function List({ items }) {
+	const [isReverse, setIsReverse] = useState(false);
+	const [selection, setSelection] = useState(null);
+
+	// Better: Adjust the state while rendering
+	const [prevItems, setPrevItems] = useState(items);
+	if (items !== prevItems) {
+		setPrevItems(items);
+		setSelection(null);
+	}
+	// ...
+}
+```
+
+[Storing information from previous renders](/reference/react/useState#storing-information-from-previous-renders) like this can be hard to understand, but it’s better than updating the same state in an Effect. In the above example, `setSelection` is called directly during a render. React will re-render the `List` _immediately_ after it exits with a `return` statement. React has not rendered the `List` children or updated the DOM yet, so this lets the `List` children skip rendering the stale `selection` value.
+
+When you update a component during rendering, React throws away the returned JSX and immediately retries rendering. To avoid very slow cascading retries, React only lets you update the _same_ component's state during a render. If you update another component's state during a render, you'll see an error. A condition like `items !== prevItems` is necessary to avoid loops. You may adjust state like this, but any other side effects (like changing the DOM or setting timeouts) should stay in event handlers or Effects to [keep components pure.](/learn/keeping-components-pure)
+
+**Although this pattern is more efficient than an Effect, most components shouldn't need it either.** No matter how you do it, adjusting state based on props or other state makes your data flow more difficult to understand and debug. Always check whether you can [reset all state with a key](#resetting-all-state-when-a-prop-changes) or [calculate everything during rendering](#updating-state-based-on-props-or-state) instead. For example, instead of storing (and resetting) the selected _item_, you can store the selected _item ID:_
+
+```js
+function List({ items }) {
+	const [isReverse, setIsReverse] = useState(false);
+	const [selectedId, setSelectedId] = useState(null);
+	// ✅ Best: Calculate everything during rendering
+	const selection = items.find((item) => item.id === selectedId) ?? null;
+	// ...
+}
+```
+
+Now there is no need to "adjust" the state at all. If the item with the selected ID is in the list, it remains selected. If it's not, the `selection` calculated during rendering will be `null` because no matching item was found. This behavior is different, but arguably better because most changes to `items` preserve the selection.
+
+### Sharing logic between event handlers
+
+Let's say you have a product page with two buttons (Buy and Checkout) that both let you buy that product. You want to show a notification whenever the user puts the product in the cart. Calling `showNotification()` in both buttons' click handlers feels repetitive so you might be tempted to place this logic in an Effect:
+
+```js
+function ProductPage({ product, addToCart }) {
+	// 🔴 Avoid: Event-specific logic inside an Effect
+	useEffect(() => {
+		if (product.isInCart) {
+			showNotification(`Added ${product.name} to the shopping cart!`);
+		}
+	}, [product]);
+
+	function handleBuyClick() {
+		addToCart(product);
+	}
+
+	function handleCheckoutClick() {
+		addToCart(product);
+		navigateTo("/checkout");
+	}
+	// ...
+}
+```
+
+This Effect is unnecessary. It will also most likely cause bugs. For example, let's say that your app "remembers" the shopping cart between the page reloads. If you add a product to the cart once and refresh the page, the notification will appear again. It will keep appearing every time you refresh that product's page. This is because `product.isInCart` will already be `true` on the page load, so the Effect above will call `showNotification()`.
+
+**When you're not sure whether some code should be in an Effect or in an event handler, ask yourself _why_ this code needs to run. Use Effects only for code that should run _because_ the component was displayed to the user.** In this example, the notification should appear because the user _pressed the button_, not because the page was displayed! Delete the Effect and put the shared logic into a function called from both event handlers:
+
+```js
+function ProductPage({ product, addToCart }) {
+	// ✅ Good: Event-specific logic is called from event handlers
+	function buyProduct() {
+		addToCart(product);
+		showNotification(`Added ${product.name} to the shopping cart!`);
+	}
+
+	function handleBuyClick() {
+		buyProduct();
+	}
+
+	function handleCheckoutClick() {
+		buyProduct();
+		navigateTo("/checkout");
+	}
+	// ...
+}
+```
+
+This both removes the unnecessary Effect and fixes the bug.
+
+### Sending a POST request
+
+This `Form` component sends two kinds of POST requests. It sends an analytics event when it mounts. When you fill in the form and click the Submit button, it will send a POST request to the `/api/register` endpoint:
+
+```js
+function Form() {
+	const [firstName, setFirstName] = useState("");
+	const [lastName, setLastName] = useState("");
+
+	// ✅ Good: This logic should run because the component was displayed
+	useEffect(() => {
+		post("/analytics/event", { eventName: "visit_form" });
+	}, []);
+
+	// 🔴 Avoid: Event-specific logic inside an Effect
+	const [jsonToSubmit, setJsonToSubmit] = useState(null);
+	useEffect(() => {
+		if (jsonToSubmit !== null) {
+			post("/api/register", jsonToSubmit);
+		}
+	}, [jsonToSubmit]);
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		setJsonToSubmit({ firstName, lastName });
+	}
+	// ...
+}
+```
+
+Let's apply the same criteria as in the example before.
+
+The analytics POST request should remain in an Effect. This is because the _reason_ to send the analytics event is that the form was displayed. (It would fire twice in development, but [see here](/learn/synchronizing-with-effects#sending-analytics) for how to deal with that.)
+
+However, the `/api/register` POST request is not caused by the form being _displayed_. You only want to send the request at one specific moment in time: when the user presses the button. It should only ever happen _on that particular interaction_. Delete the second Effect and move that POST request into the event handler:
+
+```js
+function Form() {
+	const [firstName, setFirstName] = useState("");
+	const [lastName, setLastName] = useState("");
+
+	// ✅ Good: This logic runs because the component was displayed
+	useEffect(() => {
+		post("/analytics/event", { eventName: "visit_form" });
+	}, []);
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		// ✅ Good: Event-specific logic is in the event handler
+		post("/api/register", { firstName, lastName });
+	}
+	// ...
+}
+```
+
+When you choose whether to put some logic into an event handler or an Effect, the main question you need to answer is _what kind of logic_ it is from the user's perspective. If this logic is caused by a particular interaction, keep it in the event handler. If it's caused by the user _seeing_ the component on the screen, keep it in the Effect.
+
+### Chains of computations
+
+Sometimes you might feel tempted to chain Effects that each adjust a piece of state based on other state:
+
+```js
+function Game() {
+  const [card, setCard] = useState(null);
+  const [goldCardCount, setGoldCardCount] = useState(0);
+  const [round, setRound] = useState(1);
+  const [isGameOver, setIsGameOver] = useState(false);
+
+  // 🔴 Avoid: Chains of Effects that adjust the state solely to trigger each other
+  useEffect(() => {
+    if (card !== null && card.gold) {
+      setGoldCardCount(c => c + 1);
+    }
+  }, [card]);
+
+  useEffect(() => {
+    if (goldCardCount > 3) {
+      setRound(r => r + 1)
+      setGoldCardCount(0);
+    }
+  }, [goldCardCount]);
+
+  useEffect(() => {
+    if (round > 5) {
+      setIsGameOver(true);
+    }
+  }, [round]);
+
+  useEffect(() => {
+    alert('Good game!');
+  }, [isGameOver]);
+
+  function handlePlaceCard(nextCard) {
+    if (isGameOver) {
+      throw Error('Game already ended.');
+    } else {
+      setCard(nextCard);
+    }
+  }
+
+  // ...
+```
+
+There are two problems with this code.
+
+One problem is that it is very inefficient: the component (and its children) have to re-render between each `set` call in the chain. In the example above, in the worst case (`setCard` → render → `setGoldCardCount` → render → `setRound` → render → `setIsGameOver` → render) there are three unnecessary re-renders of the tree below.
+
+Even if it weren't slow, as your code evolves, you will run into cases where the "chain" you wrote doesn't fit the new requirements. Imagine you are adding a way to step through the history of the game moves. You'd do it by updating each state variable to a value from the past. However, setting the `card` state to a value from the past would trigger the Effect chain again and change the data you're showing. Such code is often rigid and fragile.
+
+In this case, it's better to calculate what you can during rendering, and adjust the state in the event handler:
+
+```js
+function Game() {
+  const [card, setCard] = useState(null);
+  const [goldCardCount, setGoldCardCount] = useState(0);
+  const [round, setRound] = useState(1);
+
+  // ✅ Calculate what you can during rendering
+  const isGameOver = round > 5;
+
+  function handlePlaceCard(nextCard) {
+    if (isGameOver) {
+      throw Error('Game already ended.');
+    }
+
+    // ✅ Calculate all the next state in the event handler
+    setCard(nextCard);
+    if (nextCard.gold) {
+      if (goldCardCount <= 3) {
+        setGoldCardCount(goldCardCount + 1);
+      } else {
+        setGoldCardCount(0);
+        setRound(round + 1);
+        if (round === 5) {
+          alert('Good game!');
+        }
+      }
+    }
+  }
+
+  // ...
+```
+
+This is a lot more efficient. Also, if you implement a way to view game history, now you will be able to set each state variable to a move from the past without triggering the Effect chain that adjusts every other value. If you need to reuse logic between several event handlers, you can [extract a function](#sharing-logic-between-event-handlers) and call it from those handlers.
+
+Remember that inside event handlers, [state behaves like a snapshot.](/learn/state-as-a-snapshot) For example, even after you call `setRound(round + 1)`, the `round` variable will reflect the value at the time the user clicked the button. If you need to use the next value for calculations, define it manually like `const nextRound = round + 1`.
+
+In some cases, you _can't_ calculate the next state directly in the event handler. For example, imagine a form with multiple dropdowns where the options of the next dropdown depend on the selected value of the previous dropdown. Then, a chain of Effects is appropriate because you are synchronizing with network.
+
+### Initializing the application
+
+Some logic should only run once when the app loads.
+
+You might be tempted to place it in an Effect in the top-level component:
+
+```js
+function App() {
+	// 🔴 Avoid: Effects with logic that should only ever run once
+	useEffect(() => {
+		loadDataFromLocalStorage();
+		checkAuthToken();
+	}, []);
+	// ...
+}
+```
+
+However, you'll quickly discover that it [runs twice in development.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development) This can cause issues--for example, maybe it invalidates the authentication token because the function wasn't designed to be called twice. In general, your components should be resilient to being remounted. This includes your top-level `App` component.
+
+Although it may not ever get remounted in practice in production, following the same constraints in all components makes it easier to move and reuse code. If some logic must run _once per app load_ rather than _once per component mount_, add a top-level variable to track whether it has already executed:
+
+```js
+let didInit = false;
+
+function App() {
+	useEffect(() => {
+		if (!didInit) {
+			didInit = true;
+			// ✅ Only runs once per app load
+			loadDataFromLocalStorage();
+			checkAuthToken();
+		}
+	}, []);
+	// ...
+}
+```
+
+You can also run it during module initialization and before the app renders:
+
+```js
+if (typeof window !== "undefined") {
+	// Check if we're running in the browser.
+	// ✅ Only runs once per app load
+	checkAuthToken();
+	loadDataFromLocalStorage();
+}
+
+function App() {
+	// ...
+}
+```
+
+Code at the top level runs once when your component is imported--even if it doesn't end up being rendered. To avoid slowdown or surprising behavior when importing arbitrary components, don't overuse this pattern. Keep app-wide initialization logic to root component modules like `App.js` or in your application's entry point.
+
+### Notifying parent components about state changes
+
+Let's say you're writing a `Toggle` component with an internal `isOn` state which can be either `true` or `false`. There are a few different ways to toggle it (by clicking or dragging). You want to notify the parent component whenever the `Toggle` internal state changes, so you expose an `onChange` event and call it from an Effect:
+
+```js
+function Toggle({ onChange }) {
+	const [isOn, setIsOn] = useState(false);
+
+	// 🔴 Avoid: The onChange handler runs too late
+	useEffect(() => {
+		onChange(isOn);
+	}, [isOn, onChange]);
+
+	function handleClick() {
+		setIsOn(!isOn);
+	}
+
+	function handleDragEnd(e) {
+		if (isCloserToRightEdge(e)) {
+			setIsOn(true);
+		} else {
+			setIsOn(false);
+		}
+	}
+
+	// ...
+}
+```
+
+Like earlier, this is not ideal. The `Toggle` updates its state first, and React updates the screen. Then React runs the Effect, which calls the `onChange` function passed from a parent component. Now the parent component will update its own state, starting another render pass. It would be better to do everything in a single pass.
+
+Delete the Effect and instead update the state of _both_ components within the same event handler:
+
+```js
+function Toggle({ onChange }) {
+	const [isOn, setIsOn] = useState(false);
+
+	function updateToggle(nextIsOn) {
+		// ✅ Good: Perform all updates during the event that caused them
+		setIsOn(nextIsOn);
+		onChange(nextIsOn);
+	}
+
+	function handleClick() {
+		updateToggle(!isOn);
+	}
+
+	function handleDragEnd(e) {
+		if (isCloserToRightEdge(e)) {
+			updateToggle(true);
+		} else {
+			updateToggle(false);
+		}
+	}
+
+	// ...
+}
+```
+
+With this approach, both the `Toggle` component and its parent component update their state during the event. React [batches updates](/learn/queueing-a-series-of-state-updates) from different components together, so there will only be one render pass.
+
+You might also be able to remove the state altogether, and instead receive `isOn` from the parent component:
+
+```js
+// ✅ Also good: the component is fully controlled by its parent
+function Toggle({ isOn, onChange }) {
+	function handleClick() {
+		onChange(!isOn);
+	}
+
+	function handleDragEnd(e) {
+		if (isCloserToRightEdge(e)) {
+			onChange(true);
+		} else {
+			onChange(false);
+		}
+	}
+
+	// ...
+}
+```
+
+["Lifting state up"](/learn/sharing-state-between-components) lets the parent component fully control the `Toggle` by toggling the parent's own state. This means the parent component will have to contain more logic, but there will be less state overall to worry about. Whenever you try to keep two different state variables synchronized, try lifting state up instead!
+
+### Passing data to the parent
+
+This `Child` component fetches some data and then passes it to the `Parent` component in an Effect:
+
+```js
+function Parent() {
+	const [data, setData] = useState(null);
+	// ...
+	return <Child onFetched={setData} />;
+}
+
+function Child({ onFetched }) {
+	const data = useSomeAPI();
+	// 🔴 Avoid: Passing data to the parent in an Effect
+	useEffect(() => {
+		if (data) {
+			onFetched(data);
+		}
+	}, [onFetched, data]);
+	// ...
+}
+```
+
+In React, data flows from the parent components to their children. When you see something wrong on the screen, you can trace where the information comes from by going up the component chain until you find which component passes the wrong prop or has the wrong state. When child components update the state of their parent components in Effects, the data flow becomes very difficult to trace. Since both the child and the parent need the same data, let the parent component fetch that data, and _pass it down_ to the child instead:
+
+```js
+function Parent() {
+	const data = useSomeAPI();
+	// ...
+	// ✅ Good: Passing data down to the child
+	return <Child data={data} />;
+}
+
+function Child({ data }) {
+	// ...
+}
+```
+
+This is simpler and keeps the data flow predictable: the data flows down from the parent to the child.
+
+### Subscribing to an external store
+
+Sometimes, your components may need to subscribe to some data outside of the React state. This data could be from a third-party library or a built-in browser API. Since this data can change without React's knowledge, you need to manually subscribe your components to it. This is often done with an Effect, for example:
+
+```js
+function useOnlineStatus() {
+	// Not ideal: Manual store subscription in an Effect
+	const [isOnline, setIsOnline] = useState(true);
+	useEffect(() => {
+		function updateState() {
+			setIsOnline(navigator.onLine);
+		}
+
+		updateState();
+
+		window.addEventListener("online", updateState);
+		window.addEventListener("offline", updateState);
+		return () => {
+			window.removeEventListener("online", updateState);
+			window.removeEventListener("offline", updateState);
+		};
+	}, []);
+	return isOnline;
+}
+
+function ChatIndicator() {
+	const isOnline = useOnlineStatus();
+	// ...
+}
+```
+
+Here, the component subscribes to an external data store (in this case, the browser `navigator.onLine` API). Since this API does not exist on the server (so it can't be used for the initial HTML), initially the state is set to `true`. Whenever the value of that data store changes in the browser, the component updates its state.
+
+Although it's common to use Effects for this, React has a purpose-built Hook for subscribing to an external store that is preferred instead. Delete the Effect and replace it with a call to [`useSyncExternalStore`](/reference/react/useSyncExternalStore):
+
+```js
+function subscribe(callback) {
+	window.addEventListener("online", callback);
+	window.addEventListener("offline", callback);
+	return () => {
+		window.removeEventListener("online", callback);
+		window.removeEventListener("offline", callback);
+	};
+}
+
+function useOnlineStatus() {
+	// ✅ Good: Subscribing to an external store with a built-in Hook
+	return useSyncExternalStore(
+		subscribe, // React won't resubscribe for as long as you pass the same function
+		() => navigator.onLine, // How to get the value on the client
+		() => true // How to get the value on the server
+	);
+}
+
+function ChatIndicator() {
+	const isOnline = useOnlineStatus();
+	// ...
+}
+```
+
+This approach is less error-prone than manually syncing mutable data to React state with an Effect. Typically, you'll write a custom Hook like `useOnlineStatus()` above so that you don't need to repeat this code in the individual components. [Read more about subscribing to external stores from React components.](/reference/react/useSyncExternalStore)
+
+### Fetching data
+
+Many apps use Effects to kick off data fetching. It is quite common to write a data fetching Effect like this:
+
+```js
+function SearchResults({ query }) {
+	const [results, setResults] = useState([]);
+	const [page, setPage] = useState(1);
+
+	useEffect(() => {
+		// 🔴 Avoid: Fetching without cleanup logic
+		fetchResults(query, page).then((json) => {
+			setResults(json);
+		});
+	}, [query, page]);
+
+	function handleNextPageClick() {
+		setPage(page + 1);
+	}
+	// ...
+}
+```
+
+You _don't_ need to move this fetch to an event handler.
+
+This might seem like a contradiction with the earlier examples where you needed to put the logic into the event handlers! However, consider that it's not _the typing event_ that's the main reason to fetch. Search inputs are often prepopulated from the URL, and the user might navigate Back and Forward without touching the input.
+
+It doesn't matter where `page` and `query` come from. While this component is visible, you want to keep `results` [synchronized](/learn/synchronizing-with-effects) with data from the network for the current `page` and `query`. This is why it's an Effect.
+
+However, the code above has a bug. Imagine you type `"hello"` fast. Then the `query` will change from `"h"`, to `"he"`, `"hel"`, `"hell"`, and `"hello"`. This will kick off separate fetches, but there is no guarantee about which order the responses will arrive in. For example, the `"hell"` response may arrive _after_ the `"hello"` response. Since it will call `setResults()` last, you will be displaying the wrong search results. This is called a ["race condition"](https://en.wikipedia.org/wiki/Race_condition): two different requests "raced" against each other and came in a different order than you expected.
+
+**To fix the race condition, you need to [add a cleanup function](/learn/synchronizing-with-effects#fetching-data) to ignore stale responses:**
+
+```js
+function SearchResults({ query }) {
+	const [results, setResults] = useState([]);
+	const [page, setPage] = useState(1);
+	useEffect(() => {
+		let ignore = false;
+		fetchResults(query, page).then((json) => {
+			if (!ignore) {
+				setResults(json);
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, [query, page]);
+
+	function handleNextPageClick() {
+		setPage(page + 1);
+	}
+	// ...
+}
+```
+
+This ensures that when your Effect fetches data, all responses except the last requested one will be ignored.
+
+Handling race conditions is not the only difficulty with implementing data fetching. You might also want to think about caching responses (so that the user can click Back and see the previous screen instantly), how to fetch data on the server (so that the initial server-rendered HTML contains the fetched content instead of a spinner), and how to avoid network waterfalls (so that a child can fetch data without waiting for every parent).
+
+**These issues apply to any UI library, not just React. Solving them is not trivial, which is why modern [frameworks](/learn/start-a-new-react-project#production-grade-react-frameworks) provide more efficient built-in data fetching mechanisms than fetching data in Effects.**
+
+If you don't use a framework (and don't want to build your own) but would like to make data fetching from Effects more ergonomic, consider extracting your fetching logic into a custom Hook like in this example:
+
+```js
+function SearchResults({ query }) {
+	const [page, setPage] = useState(1);
+	const params = new URLSearchParams({ query, page });
+	const results = useData(`/api/search?${params}`);
+
+	function handleNextPageClick() {
+		setPage(page + 1);
+	}
+	// ...
+}
+
+function useData(url) {
+	const [data, setData] = useState(null);
+	useEffect(() => {
+		let ignore = false;
+		fetch(url)
+			.then((response) => response.json())
+			.then((json) => {
+				if (!ignore) {
+					setData(json);
+				}
+			});
+		return () => {
+			ignore = true;
+		};
+	}, [url]);
+	return data;
+}
+```
+
+You'll likely also want to add some logic for error handling and to track whether the content is loading. You can build a Hook like this yourself or use one of the many solutions already available in the React ecosystem. **Although this alone won't be as efficient as using a framework's built-in data fetching mechanism, moving the data fetching logic into a custom Hook will make it easier to adopt an efficient data fetching strategy later.**
+
+In general, whenever you have to resort to writing Effects, keep an eye out for when you can extract a piece of functionality into a custom Hook with a more declarative and purpose-built API like `useData` above. The fewer raw `useEffect` calls you have in your components, the easier you will find to maintain your application.
+
+<Recap>
+
+-   If you can calculate something during render, you don't need an Effect.
+-   To cache expensive calculations, add `useMemo` instead of `useEffect`.
+-   To reset the state of an entire component tree, pass a different `key` to it.
+-   To reset a particular bit of state in response to a prop change, set it during rendering.
+-   Code that runs because a component was _displayed_ should be in Effects, the rest should be in events.
+-   If you need to update the state of several components, it's better to do it during a single event.
+-   Whenever you try to synchronize state variables in different components, consider lifting state up.
+-   You can fetch data with Effects, but you need to implement cleanup to avoid race conditions.
+
+</Recap>
+
+<Challenges>
+
+#### Transform data without Effects
+
+The `TodoList` below displays a list of todos. When the "Show only active todos" checkbox is ticked, completed todos are not displayed in the list. Regardless of which todos are visible, the footer displays the count of todos that are not yet completed.
+
+Simplify this component by removing all the unnecessary state and Effects.
+
+```js
+import { useState, useEffect } from "react";
+import { initialTodos, createTodo } from "./todos.js";
+
+export default function TodoList() {
+	const [todos, setTodos] = useState(initialTodos);
+	const [showActive, setShowActive] = useState(false);
+	const [activeTodos, setActiveTodos] = useState([]);
+	const [visibleTodos, setVisibleTodos] = useState([]);
+	const [footer, setFooter] = useState(null);
+
+	useEffect(() => {
+		setActiveTodos(todos.filter((todo) => !todo.completed));
+	}, [todos]);
+
+	useEffect(() => {
+		setVisibleTodos(showActive ? activeTodos : todos);
+	}, [showActive, todos, activeTodos]);
+
+	useEffect(() => {
+		setFooter(<footer>{activeTodos.length} todos left</footer>);
+	}, [activeTodos]);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={showActive}
+					onChange={(e) => setShowActive(e.target.checked)}
+				/>
+				Show only active todos
+			</label>
+			<NewTodo onAdd={(newTodo) => setTodos([...todos, newTodo])} />
+			<ul>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+			{footer}
+		</>
+	);
+}
+
+function NewTodo({ onAdd }) {
+	const [text, setText] = useState("");
+
+	function handleAddClick() {
+		setText("");
+		onAdd(createTodo(text));
+	}
+
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={handleAddClick}>Add</button>
+		</>
+	);
+}
+```
+
+```js
+let nextId = 0;
+
+export function createTodo(text, completed = false) {
+	return {
+		id: nextId++,
+		text,
+		completed,
+	};
+}
+
+export const initialTodos = [
+	createTodo("Get apples", true),
+	createTodo("Get oranges", true),
+	createTodo("Get carrots"),
+];
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-top: 10px;
+}
+```
+
+<Hint>
+
+If you can calculate something during rendering, you don't need state or an Effect that updates it.
+
+</Hint>
+
+<Solution>
+
+There are only two essential pieces of state in this example: the list of `todos` and the `showActive` state variable which represents whether the checkbox is ticked. All of the other state variables are [redundant](/learn/choosing-the-state-structure#avoid-redundant-state) and can be calculated during rendering instead. This includes the `footer` which you can move directly into the surrounding JSX.
+
+Your result should end up looking like this:
+
+```js
+import { useState } from "react";
+import { initialTodos, createTodo } from "./todos.js";
+
+export default function TodoList() {
+	const [todos, setTodos] = useState(initialTodos);
+	const [showActive, setShowActive] = useState(false);
+	const activeTodos = todos.filter((todo) => !todo.completed);
+	const visibleTodos = showActive ? activeTodos : todos;
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={showActive}
+					onChange={(e) => setShowActive(e.target.checked)}
+				/>
+				Show only active todos
+			</label>
+			<NewTodo onAdd={(newTodo) => setTodos([...todos, newTodo])} />
+			<ul>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+			<footer>{activeTodos.length} todos left</footer>
+		</>
+	);
+}
+
+function NewTodo({ onAdd }) {
+	const [text, setText] = useState("");
+
+	function handleAddClick() {
+		setText("");
+		onAdd(createTodo(text));
+	}
+
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={handleAddClick}>Add</button>
+		</>
+	);
+}
+```
+
+```js
+let nextId = 0;
+
+export function createTodo(text, completed = false) {
+	return {
+		id: nextId++,
+		text,
+		completed,
+	};
+}
+
+export const initialTodos = [
+	createTodo("Get apples", true),
+	createTodo("Get oranges", true),
+	createTodo("Get carrots"),
+];
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-top: 10px;
+}
+```
+
+</Solution>
+
+#### Cache a calculation without Effects
+
+In this example, filtering the todos was extracted into a separate function called `getVisibleTodos()`. This function contains a `console.log()` call inside of it which helps you notice when it's being called. Toggle "Show only active todos" and notice that it causes `getVisibleTodos()` to re-run. This is expected because visible todos change when you toggle which ones to display.
+
+Your task is to remove the Effect that recomputes the `visibleTodos` list in the `TodoList` component. However, you need to make sure that `getVisibleTodos()` does _not_ re-run (and so does not print any logs) when you type into the input.
+
+<Hint>
+
+One solution is to add a `useMemo` call to cache the visible todos. There is also another, less obvious solution.
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+import { initialTodos, createTodo, getVisibleTodos } from "./todos.js";
+
+export default function TodoList() {
+	const [todos, setTodos] = useState(initialTodos);
+	const [showActive, setShowActive] = useState(false);
+	const [text, setText] = useState("");
+	const [visibleTodos, setVisibleTodos] = useState([]);
+
+	useEffect(() => {
+		setVisibleTodos(getVisibleTodos(todos, showActive));
+	}, [todos, showActive]);
+
+	function handleAddClick() {
+		setText("");
+		setTodos([...todos, createTodo(text)]);
+	}
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={showActive}
+					onChange={(e) => setShowActive(e.target.checked)}
+				/>
+				Show only active todos
+			</label>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={handleAddClick}>Add</button>
+			<ul>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+let nextId = 0;
+let calls = 0;
+
+export function getVisibleTodos(todos, showActive) {
+	console.log(`getVisibleTodos() was called ${++calls} times`);
+	const activeTodos = todos.filter((todo) => !todo.completed);
+	const visibleTodos = showActive ? activeTodos : todos;
+	return visibleTodos;
+}
+
+export function createTodo(text, completed = false) {
+	return {
+		id: nextId++,
+		text,
+		completed,
+	};
+}
+
+export const initialTodos = [
+	createTodo("Get apples", true),
+	createTodo("Get oranges", true),
+	createTodo("Get carrots"),
+];
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-top: 10px;
+}
+```
+
+<Solution>
+
+Remove the state variable and the Effect, and instead add a `useMemo` call to cache the result of calling `getVisibleTodos()`:
+
+```js
+import { useState, useMemo } from "react";
+import { initialTodos, createTodo, getVisibleTodos } from "./todos.js";
+
+export default function TodoList() {
+	const [todos, setTodos] = useState(initialTodos);
+	const [showActive, setShowActive] = useState(false);
+	const [text, setText] = useState("");
+	const visibleTodos = useMemo(
+		() => getVisibleTodos(todos, showActive),
+		[todos, showActive]
+	);
+
+	function handleAddClick() {
+		setText("");
+		setTodos([...todos, createTodo(text)]);
+	}
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={showActive}
+					onChange={(e) => setShowActive(e.target.checked)}
+				/>
+				Show only active todos
+			</label>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={handleAddClick}>Add</button>
+			<ul>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+let nextId = 0;
+let calls = 0;
+
+export function getVisibleTodos(todos, showActive) {
+	console.log(`getVisibleTodos() was called ${++calls} times`);
+	const activeTodos = todos.filter((todo) => !todo.completed);
+	const visibleTodos = showActive ? activeTodos : todos;
+	return visibleTodos;
+}
+
+export function createTodo(text, completed = false) {
+	return {
+		id: nextId++,
+		text,
+		completed,
+	};
+}
+
+export const initialTodos = [
+	createTodo("Get apples", true),
+	createTodo("Get oranges", true),
+	createTodo("Get carrots"),
+];
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-top: 10px;
+}
+```
+
+With this change, `getVisibleTodos()` will be called only if `todos` or `showActive` change. Typing into the input only changes the `text` state variable, so it does not trigger a call to `getVisibleTodos()`.
+
+There is also another solution which does not need `useMemo`. Since the `text` state variable can't possibly affect the list of todos, you can extract the `NewTodo` form into a separate component, and move the `text` state variable inside of it:
+
+```js
+import { useState, useMemo } from "react";
+import { initialTodos, createTodo, getVisibleTodos } from "./todos.js";
+
+export default function TodoList() {
+	const [todos, setTodos] = useState(initialTodos);
+	const [showActive, setShowActive] = useState(false);
+	const visibleTodos = getVisibleTodos(todos, showActive);
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={showActive}
+					onChange={(e) => setShowActive(e.target.checked)}
+				/>
+				Show only active todos
+			</label>
+			<NewTodo onAdd={(newTodo) => setTodos([...todos, newTodo])} />
+			<ul>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+		</>
+	);
+}
+
+function NewTodo({ onAdd }) {
+	const [text, setText] = useState("");
+
+	function handleAddClick() {
+		setText("");
+		onAdd(createTodo(text));
+	}
+
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button on_click={handleAddClick}>Add</button>
+		</>
+	);
+}
+```
+
+```js
+let nextId = 0;
+let calls = 0;
+
+export function getVisibleTodos(todos, showActive) {
+	console.log(`getVisibleTodos() was called ${++calls} times`);
+	const activeTodos = todos.filter((todo) => !todo.completed);
+	const visibleTodos = showActive ? activeTodos : todos;
+	return visibleTodos;
+}
+
+export function createTodo(text, completed = false) {
+	return {
+		id: nextId++,
+		text,
+		completed,
+	};
+}
+
+export const initialTodos = [
+	createTodo("Get apples", true),
+	createTodo("Get oranges", true),
+	createTodo("Get carrots"),
+];
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-top: 10px;
+}
+```
+
+This approach satisfies the requirements too. When you type into the input, only the `text` state variable updates. Since the `text` state variable is in the child `NewTodo` component, the parent `TodoList` component won't get re-rendered. This is why `getVisibleTodos()` doesn't get called when you type. (It would still be called if the `TodoList` re-renders for another reason.)
+
+</Solution>
+
+#### Reset state without Effects
+
+This `EditContact` component receives a contact object shaped like `{ id, name, email }` as the `savedContact` prop. Try editing the name and email input fields. When you press Save, the contact's button above the form updates to the edited name. When you press Reset, any pending changes in the form are discarded. Play around with this UI to get a feel for it.
+
+When you select a contact with the buttons at the top, the form resets to reflect that contact's details. This is done with an Effect inside `EditContact.js`. Remove this Effect. Find another way to reset the form when `savedContact.id` changes.
+
+```js
+import { useState } from "react";
+import ContactList from "./ContactList.js";
+import EditContact from "./EditContact.js";
+
+export default function ContactManager() {
+	const [contacts, setContacts] = useState(initialContacts);
+	const [selectedId, setSelectedId] = useState(0);
+	const selectedContact = contacts.find((c) => c.id === selectedId);
+
+	function handleSave(updatedData) {
+		const nextContacts = contacts.map((c) => {
+			if (c.id === updatedData.id) {
+				return updatedData;
+			} else {
+				return c;
+			}
+		});
+		setContacts(nextContacts);
+	}
+
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={selectedId}
+				onSelect={(id) => setSelectedId(id)}
+			/>
+			<hr />
+			<EditContact savedContact={selectedContact} onSave={handleSave} />
+		</div>
+	);
+}
+
+const initialContacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export default function ContactList({ contacts, selectedId, onSelect }) {
+	return (
+		<section>
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								onSelect(contact.id);
+							}}
+						>
+							{contact.id === selectedId ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export default function EditContact({ savedContact, onSave }) {
+	const [name, setName] = useState(savedContact.name);
+	const [email, setEmail] = useState(savedContact.email);
+
+	useEffect(() => {
+		setName(savedContact.name);
+		setEmail(savedContact.email);
+	}, [savedContact]);
+
+	return (
+		<section>
+			<label>
+				Name:{" "}
+				<input
+					type="text"
+					value={name}
+					onChange={(e) => setName(e.target.value)}
+				/>
+			</label>
+			<label>
+				Email:{" "}
+				<input
+					type="email"
+					value={email}
+					onChange={(e) => setEmail(e.target.value)}
+				/>
+			</label>
+			<button
+				on_click={() => {
+					const updatedData = {
+						id: savedContact.id,
+						name: name,
+						email: email,
+					};
+					onSave(updatedData);
+				}}
+			>
+				Save
+			</button>
+			<button
+				on_click={() => {
+					setName(savedContact.name);
+					setEmail(savedContact.email);
+				}}
+			>
+				Reset
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li {
+	display: inline-block;
+}
+li button {
+	padding: 10px;
+}
+label {
+	display: block;
+	margin: 10px 0;
+}
+button {
+	margin-right: 10px;
+	margin-bottom: 10px;
+}
+```
+
+<Hint>
+
+It would be nice if there was a way to tell React that when `savedContact.id` is different, the `EditContact` form is conceptually a _different contact's form_ and should not preserve state. Do you recall any such way?
+
+</Hint>
+
+<Solution>
+
+Split the `EditContact` component in two. Move all the form state into the inner `EditForm` component. Export the outer `EditContact` component, and make it pass `savedContact.id` as the `key` to the inner `EditContact` component. As a result, the inner `EditForm` component resets all of the form state and recreates the DOM whenever you select a different contact.
+
+```js
+import { useState } from "react";
+import ContactList from "./ContactList.js";
+import EditContact from "./EditContact.js";
+
+export default function ContactManager() {
+	const [contacts, setContacts] = useState(initialContacts);
+	const [selectedId, setSelectedId] = useState(0);
+	const selectedContact = contacts.find((c) => c.id === selectedId);
+
+	function handleSave(updatedData) {
+		const nextContacts = contacts.map((c) => {
+			if (c.id === updatedData.id) {
+				return updatedData;
+			} else {
+				return c;
+			}
+		});
+		setContacts(nextContacts);
+	}
+
+	return (
+		<div>
+			<ContactList
+				contacts={contacts}
+				selectedId={selectedId}
+				onSelect={(id) => setSelectedId(id)}
+			/>
+			<hr />
+			<EditContact savedContact={selectedContact} onSave={handleSave} />
+		</div>
+	);
+}
+
+const initialContacts = [
+	{ id: 0, name: "Taylor", email: "taylor@mail.com" },
+	{ id: 1, name: "Alice", email: "alice@mail.com" },
+	{ id: 2, name: "Bob", email: "bob@mail.com" },
+];
+```
+
+```js
+export default function ContactList({ contacts, selectedId, onSelect }) {
+	return (
+		<section>
+			<ul>
+				{contacts.map((contact) => (
+					<li key={contact.id}>
+						<button
+							on_click={() => {
+								onSelect(contact.id);
+							}}
+						>
+							{contact.id === selectedId ? (
+								<b>{contact.name}</b>
+							) : (
+								contact.name
+							)}
+						</button>
+					</li>
+				))}
+			</ul>
+		</section>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function EditContact(props) {
+	return <EditForm {...props} key={props.savedContact.id} />;
+}
+
+function EditForm({ savedContact, onSave }) {
+	const [name, setName] = useState(savedContact.name);
+	const [email, setEmail] = useState(savedContact.email);
+
+	return (
+		<section>
+			<label>
+				Name:{" "}
+				<input
+					type="text"
+					value={name}
+					onChange={(e) => setName(e.target.value)}
+				/>
+			</label>
+			<label>
+				Email:{" "}
+				<input
+					type="email"
+					value={email}
+					onChange={(e) => setEmail(e.target.value)}
+				/>
+			</label>
+			<button
+				on_click={() => {
+					const updatedData = {
+						id: savedContact.id,
+						name: name,
+						email: email,
+					};
+					onSave(updatedData);
+				}}
+			>
+				Save
+			</button>
+			<button
+				on_click={() => {
+					setName(savedContact.name);
+					setEmail(savedContact.email);
+				}}
+			>
+				Reset
+			</button>
+		</section>
+	);
+}
+```
+
+```css
+ul,
+li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+li {
+	display: inline-block;
+}
+li button {
+	padding: 10px;
+}
+label {
+	display: block;
+	margin: 10px 0;
+}
+button {
+	margin-right: 10px;
+	margin-bottom: 10px;
+}
+```
+
+</Solution>
+
+#### Submit a form without Effects
+
+This `Form` component lets you send a message to a friend. When you submit the form, the `showForm` state variable is set to `false`. This triggers an Effect calling `sendMessage(message)`, which sends the message (you can see it in the console). After the message is sent, you see a "Thank you" dialog with an "Open chat" button that lets you get back to the form.
+
+Your app's users are sending way too many messages. To make chatting a little bit more difficult, you've decided to show the "Thank you" dialog _first_ rather than the form. Change the `showForm` state variable to initialize to `false` instead of `true`. As soon as you make that change, the console will show that an empty message was sent. Something in this logic is wrong!
+
+What's the root cause of this problem? And how can you fix it?
+
+<Hint>
+
+Should the message be sent _because_ the user saw the "Thank you" dialog? Or is it the other way around?
+
+</Hint>
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Form() {
+	const [showForm, setShowForm] = useState(true);
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		if (!showForm) {
+			sendMessage(message);
+		}
+	}, [showForm, message]);
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		setShowForm(false);
+	}
+
+	if (!showForm) {
+		return (
+			<>
+				<h1>Thanks for using our services!</h1>
+				<button
+					on_click={() => {
+						setMessage("");
+						setShowForm(true);
+					}}
+				>
+					Open chat
+				</button>
+			</>
+		);
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<textarea
+				placeholder="Message"
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+			<button type="submit" disabled={message === ""}>
+				Send
+			</button>
+		</form>
+	);
+}
+
+function sendMessage(message) {
+	console.log("Sending message: " + message);
+}
+```
+
+```css
+label,
+textarea {
+	margin-bottom: 10px;
+	display: block;
+}
+```
+
+<Solution>
+
+The `showForm` state variable determines whether to show the form or the "Thank you" dialog. However, you aren't sending the message because the "Thank you" dialog was _displayed_. You want to send the message because the user has _submitted the form._ Delete the misleading Effect and move the `sendMessage` call inside the `handleSubmit` event handler:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Form() {
+	const [showForm, setShowForm] = useState(true);
+	const [message, setMessage] = useState("");
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		setShowForm(false);
+		sendMessage(message);
+	}
+
+	if (!showForm) {
+		return (
+			<>
+				<h1>Thanks for using our services!</h1>
+				<button
+					on_click={() => {
+						setMessage("");
+						setShowForm(true);
+					}}
+				>
+					Open chat
+				</button>
+			</>
+		);
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<textarea
+				placeholder="Message"
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+			<button type="submit" disabled={message === ""}>
+				Send
+			</button>
+		</form>
+	);
+}
+
+function sendMessage(message) {
+	console.log("Sending message: " + message);
+}
+```
+
+```css
+label,
+textarea {
+	margin-bottom: 10px;
+	display: block;
+}
+```
+
+Notice how in this version, only _submitting the form_ (which is an event) causes the message to be sent. It works equally well regardless of whether `showForm` is initially set to `true` or `false`. (Set it to `false` and notice no extra console messages.)
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/learn/your-first-component.md b/docs/src/learn/your-first-component.md
new file mode 100644
index 000000000..a22d43f9b
--- /dev/null
+++ b/docs/src/learn/your-first-component.md
@@ -0,0 +1,404 @@
+---
+title: Your First Component 🚧
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+_Components_ are one of the core concepts of React. They are the foundation upon which you build user interfaces (UI), which makes them the perfect place to start your React journey!
+
+</p>
+
+!!! summary "You Will Learn"
+
+    -   What a component is
+    -   What role components play in a React application
+    -   How to write your first React component
+
+## Components: UI building blocks
+
+On the Web, HTML lets us create rich structured documents with its built-in set of tags like `<h1>` and `<li>`:
+
+```html
+<article>
+	<h1>My First Component</h1>
+	<ol>
+		<li>Components: UI Building Blocks</li>
+		<li>Defining a Component</li>
+		<li>Using a Component</li>
+	</ol>
+</article>
+```
+
+This markup represents this article `<article>`, its heading `<h1>`, and an (abbreviated) table of contents as an ordered list `<ol>`. Markup like this, combined with CSS for style, and JavaScript for interactivity, lies behind every sidebar, avatar, modal, dropdown—every piece of UI you see on the Web.
+
+React lets you combine your markup, CSS, and JavaScript into custom "components", **reusable UI elements for your app.** The table of contents code you saw above could be turned into a `<TableOfContents />` component you could render on every page. Under the hood, it still uses the same HTML tags like `<article>`, `<h1>`, etc.
+
+Just like with HTML tags, you can compose, order and nest components to design whole pages. For example, the documentation page you're reading is made out of React components:
+
+```js
+<PageLayout>
+	<NavigationHeader>
+		<SearchBar />
+		<Link to="/docs">Docs</Link>
+	</NavigationHeader>
+	<Sidebar />
+	<PageContent>
+		<TableOfContents />
+		<DocumentationText />
+	</PageContent>
+</PageLayout>
+```
+
+As your project grows, you will notice that many of your designs can be composed by reusing components you already wrote, speeding up your development. Our table of contents above could be added to any screen with `<TableOfContents />`! You can even jumpstart your project with the thousands of components shared by the React open source community like [Chakra UI](https://chakra-ui.com/) and [Material UI.](https://material-ui.com/)
+
+## Defining a component
+
+Traditionally when creating web pages, web developers marked up their content and then added interaction by sprinkling on some JavaScript. This worked great when interaction was a nice-to-have on the web. Now it is expected for many sites and all apps. React puts interactivity first while still using the same technology: **a React component is a JavaScript function that you can _sprinkle with markup_.** Here's what that looks like (you can edit the example below):
+
+```js
+export default function Profile() {
+	return (
+		<img src="https://i.imgur.com/MK3eW3Am.jpg" alt="Katherine Johnson" />
+	);
+}
+```
+
+```css
+img {
+	height: 200px;
+}
+```
+
+And here's how to build a component:
+
+### Step 1: Export the component
+
+The `export default` prefix is a [standard JavaScript syntax](https://developer.mozilla.org/docs/web/javascript/reference/statements/export) (not specific to React). It lets you mark the main function in a file so that you can later import it from other files. (More on importing in [Importing and Exporting Components](/learn/importing-and-exporting-components)!)
+
+### Step 2: Define the function
+
+With `function Profile() { }` you define a JavaScript function with the name `Profile`.
+
+<Pitfall>
+
+React components are regular JavaScript functions, but **their names must start with a capital letter** or they won't work!
+
+</Pitfall>
+
+### Step 3: Add markup
+
+The component returns an `<img />` tag with `src` and `alt` attributes. `<img />` is written like HTML, but it is actually JavaScript under the hood! This syntax is called [JSX](/learn/writing-markup-with-jsx), and it lets you embed markup inside JavaScript.
+
+Return statements can be written all on one line, as in this component:
+
+```js
+return <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />;
+```
+
+But if your markup isn't all on the same line as the `return` keyword, you must wrap it in a pair of parentheses:
+
+```js
+return (
+	<div>
+		<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
+	</div>
+);
+```
+
+<Pitfall>
+
+Without parentheses, any code on the lines after `return` [will be ignored](https://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi)!
+
+</Pitfall>
+
+## Using a component
+
+Now that you've defined your `Profile` component, you can nest it inside other components. For example, you can export a `Gallery` component that uses multiple `Profile` components:
+
+```js
+function Profile() {
+	return (
+		<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
+	);
+}
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+### What the browser sees
+
+Notice the difference in casing:
+
+-   `<section>` is lowercase, so React knows we refer to an HTML tag.
+-   `<Profile />` starts with a capital `P`, so React knows that we want to use our component called `Profile`.
+
+And `Profile` contains even more HTML: `<img />`. In the end, this is what the browser sees:
+
+```html
+<section>
+	<h1>Amazing scientists</h1>
+	<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
+	<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
+	<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
+</section>
+```
+
+### Nesting and organizing components
+
+Components are regular JavaScript functions, so you can keep multiple components in the same file. This is convenient when components are relatively small or tightly related to each other. If this file gets crowded, you can always move `Profile` to a separate file. You will learn how to do this shortly on the [page about imports.](/learn/importing-and-exporting-components)
+
+Because the `Profile` components are rendered inside `Gallery`—even several times!—we can say that `Gallery` is a **parent component,** rendering each `Profile` as a "child". This is part of the magic of React: you can define a component once, and then use it in as many places and as many times as you like.
+
+<Pitfall>
+
+Components can render other components, but **you must never nest their definitions:**
+
+```js
+export default function Gallery() {
+	// 🔴 Never define a component inside another component!
+	function Profile() {
+		// ...
+	}
+	// ...
+}
+```
+
+The snippet above is [very slow and causes bugs.](/learn/preserving-and-resetting-state#different-components-at-the-same-position-reset-state) Instead, define every component at the top level:
+
+```js
+export default function Gallery() {
+	// ...
+}
+
+// ✅ Declare components at the top level
+function Profile() {
+	// ...
+}
+```
+
+When a child component needs some data from a parent, [pass it by props](/learn/passing-props-to-a-component) instead of nesting definitions.
+
+</Pitfall>
+
+<DeepDive>
+
+#### Components all the way down
+
+Your React application begins at a "root" component. Usually, it is created automatically when you start a new project. For example, if you use [CodeSandbox](https://codesandbox.io/) or [Create React App](https://create-react-app.dev/), the root component is defined in `src/App.js`. If you use the framework [Next.js](https://nextjs.org/), the root component is defined in `pages/index.js`. In these examples, you've been exporting root components.
+
+Most React apps use components all the way down. This means that you won't only use components for reusable pieces like buttons, but also for larger pieces like sidebars, lists, and ultimately, complete pages! Components are a handy way to organize UI code and markup, even if some of them are only used once.
+
+[React-based frameworks](/learn/start-a-new-react-project) take this a step further. Instead of using an empty HTML file and letting React "take over" managing the page with JavaScript, they _also_ generate the HTML automatically from your React components. This allows your app to show some content before the JavaScript code loads.
+
+Still, many websites only use React to [add interactivity to existing HTML pages.](/learn/add-react-to-an-existing-project#using-react-for-a-part-of-your-existing-page) They have many root components instead of a single one for the entire page. You can use as much—or as little—React as you need.
+
+</DeepDive>
+
+<Recap>
+
+You've just gotten your first taste of React! Let's recap some key points.
+
+-   React lets you create components, **reusable UI elements for your app.**
+-   In a React app, every piece of UI is a component.
+-   React components are regular JavaScript functions except:
+
+    1. Their names always begin with a capital letter.
+    2. They return JSX markup.
+
+</Recap>
+
+<Challenges>
+
+#### Export the component
+
+This sandbox doesn't work because the root component is not exported:
+
+```js
+function Profile() {
+	return <img src="https://i.imgur.com/lICfvbD.jpg" alt="Aklilu Lemma" />;
+}
+```
+
+```css
+img {
+	height: 181px;
+}
+```
+
+Try to fix it yourself before looking at the solution!
+
+<Solution>
+
+Add `export default` before the function definition like so:
+
+```js
+export default function Profile() {
+	return <img src="https://i.imgur.com/lICfvbD.jpg" alt="Aklilu Lemma" />;
+}
+```
+
+```css
+img {
+	height: 181px;
+}
+```
+
+You might be wondering why writing `export` alone is not enough to fix this example. You can learn the difference between `export` and `export default` in [Importing and Exporting Components.](/learn/importing-and-exporting-components)
+
+</Solution>
+
+#### Fix the return statement
+
+Something isn't right about this `return` statement. Can you fix it?
+
+<Hint>
+
+You may get an "Unexpected token" error while trying to fix this. In that case, check that the semicolon appears _after_ the closing parenthesis. Leaving a semicolon inside `return ( )` will cause an error.
+
+</Hint>
+
+```js
+export default function Profile() {
+	return;
+	<img src="https://i.imgur.com/jA8hHMpm.jpg" alt="Katsuko Saruhashi" />;
+}
+```
+
+```css
+img {
+	height: 180px;
+}
+```
+
+<Solution>
+
+You can fix this component by moving the return statement to one line like so:
+
+```js
+export default function Profile() {
+	return (
+		<img src="https://i.imgur.com/jA8hHMpm.jpg" alt="Katsuko Saruhashi" />
+	);
+}
+```
+
+```css
+img {
+	height: 180px;
+}
+```
+
+Or by wrapping the returned JSX markup in parentheses that open right after `return`:
+
+```js
+export default function Profile() {
+	return (
+		<img src="https://i.imgur.com/jA8hHMpm.jpg" alt="Katsuko Saruhashi" />
+	);
+}
+```
+
+```css
+img {
+	height: 180px;
+}
+```
+
+</Solution>
+
+#### Spot the mistake
+
+Something's wrong with how the `Profile` component is declared and used. Can you spot the mistake? (Try to remember how React distinguishes components from the regular HTML tags!)
+
+```js
+function profile() {
+	return <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" />;
+}
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<profile />
+			<profile />
+			<profile />
+		</section>
+	);
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+	height: 90px;
+}
+```
+
+<Solution>
+
+React component names must start with a capital letter.
+
+Change `function profile()` to `function Profile()`, and then change every `<profile />` to `<Profile />`:
+
+```js
+function Profile() {
+	return <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" />;
+}
+
+export default function Gallery() {
+	return (
+		<section>
+			<h1>Amazing scientists</h1>
+			<Profile />
+			<Profile />
+			<Profile />
+		</section>
+	);
+}
+```
+
+```css
+img {
+	margin: 0 10px 10px 0;
+}
+```
+
+</Solution>
+
+#### Your own component
+
+Write a component from scratch. You can give it any valid name and return any markup. If you're out of ideas, you can write a `Congratulations` component that shows `<h1>Good job!</h1>`. Don't forget to export it!
+
+```js
+// Write your component below!
+```
+
+<Solution>
+
+```js
+export default function Congratulations() {
+	return <h1>Good job!</h1>;
+}
+```
+
+</Solution>
+
+</Challenges>
diff --git a/docs/src/reference/client-api.md b/docs/src/reference/client-api.md
new file mode 100644
index 000000000..777830f09
--- /dev/null
+++ b/docs/src/reference/client-api.md
@@ -0,0 +1,3 @@
+---
+title: Client API 🚧
+---
diff --git a/docs/src/reference/common-events.md b/docs/src/reference/common-events.md
new file mode 100644
index 000000000..573da7afc
--- /dev/null
+++ b/docs/src/reference/common-events.md
@@ -0,0 +1,3 @@
+---
+title: Common Events 🚧
+---
diff --git a/docs/src/reference/common-props.md b/docs/src/reference/common-props.md
new file mode 100644
index 000000000..1c53918ff
--- /dev/null
+++ b/docs/src/reference/common-props.md
@@ -0,0 +1,3 @@
+---
+title: Common Props 🚧
+---
diff --git a/docs/src/reference/common-types.md b/docs/src/reference/common-types.md
new file mode 100644
index 000000000..950107e6f
--- /dev/null
+++ b/docs/src/reference/common-types.md
@@ -0,0 +1,3 @@
+---
+title: Common Types 🚧
+---
diff --git a/docs/src/reference/django.md b/docs/src/reference/django.md
new file mode 100644
index 000000000..3cc86a05e
--- /dev/null
+++ b/docs/src/reference/django.md
@@ -0,0 +1,3 @@
+---
+title: Django 🚧
+---
diff --git a/docs/src/reference/fastapi.md b/docs/src/reference/fastapi.md
new file mode 100644
index 000000000..e62f39fd3
--- /dev/null
+++ b/docs/src/reference/fastapi.md
@@ -0,0 +1,3 @@
+---
+title: FastAPI 🚧
+---
diff --git a/docs/src/reference/flask.md b/docs/src/reference/flask.md
new file mode 100644
index 000000000..a5fc59a07
--- /dev/null
+++ b/docs/src/reference/flask.md
@@ -0,0 +1,3 @@
+---
+title: Flask 🚧
+---
diff --git a/docs/src/reference/jupyter.md b/docs/src/reference/jupyter.md
new file mode 100644
index 000000000..5d0149420
--- /dev/null
+++ b/docs/src/reference/jupyter.md
@@ -0,0 +1,3 @@
+---
+title: Jupyter 🚧
+---
diff --git a/docs/src/reference/plotly-dash.md b/docs/src/reference/plotly-dash.md
new file mode 100644
index 000000000..c050957e8
--- /dev/null
+++ b/docs/src/reference/plotly-dash.md
@@ -0,0 +1,3 @@
+---
+title: Plotly Dash 🚧
+---
diff --git a/docs/src/reference/protocol-structure.md b/docs/src/reference/protocol-structure.md
new file mode 100644
index 000000000..cc48c47dc
--- /dev/null
+++ b/docs/src/reference/protocol-structure.md
@@ -0,0 +1,3 @@
+---
+title: Protocol Structure 🚧
+---
diff --git a/docs/src/reference/sanic.md b/docs/src/reference/sanic.md
new file mode 100644
index 000000000..4b941c71c
--- /dev/null
+++ b/docs/src/reference/sanic.md
@@ -0,0 +1,3 @@
+---
+title: Sanic 🚧
+---
diff --git a/docs/src/reference/starlette.md b/docs/src/reference/starlette.md
new file mode 100644
index 000000000..1414d1327
--- /dev/null
+++ b/docs/src/reference/starlette.md
@@ -0,0 +1,3 @@
+---
+title: Starlette 🚧
+---
diff --git a/docs/src/reference/tornado.md b/docs/src/reference/tornado.md
new file mode 100644
index 000000000..6f09d1bb8
--- /dev/null
+++ b/docs/src/reference/tornado.md
@@ -0,0 +1,3 @@
+---
+title: Tornado 🚧
+---
diff --git a/docs/src/reference/usage.md b/docs/src/reference/usage.md
new file mode 100644
index 000000000..32d698308
--- /dev/null
+++ b/docs/src/reference/usage.md
@@ -0,0 +1,3 @@
+---
+title: Usage 🚧
+---
diff --git a/docs/src/reference/use-callback.md b/docs/src/reference/use-callback.md
new file mode 100644
index 000000000..0eb38f4a4
--- /dev/null
+++ b/docs/src/reference/use-callback.md
@@ -0,0 +1,3 @@
+---
+title: Use Callback 🚧
+---
diff --git a/docs/src/reference/use-connection.md b/docs/src/reference/use-connection.md
new file mode 100644
index 000000000..582dd88c4
--- /dev/null
+++ b/docs/src/reference/use-connection.md
@@ -0,0 +1,3 @@
+---
+title: Use Connection 🚧
+---
diff --git a/docs/src/reference/use-context.md b/docs/src/reference/use-context.md
new file mode 100644
index 000000000..f9843a78e
--- /dev/null
+++ b/docs/src/reference/use-context.md
@@ -0,0 +1,3 @@
+---
+title: Use Context 🚧
+---
diff --git a/docs/src/reference/use-debug-value.md b/docs/src/reference/use-debug-value.md
new file mode 100644
index 000000000..a2685d9af
--- /dev/null
+++ b/docs/src/reference/use-debug-value.md
@@ -0,0 +1,3 @@
+---
+title: Use Debug Value 🚧
+---
diff --git a/docs/src/reference/use-effect.md b/docs/src/reference/use-effect.md
new file mode 100644
index 000000000..9b28b65e7
--- /dev/null
+++ b/docs/src/reference/use-effect.md
@@ -0,0 +1,3 @@
+---
+title: Use Effect 🚧
+---
diff --git a/docs/src/reference/use-location.md b/docs/src/reference/use-location.md
new file mode 100644
index 000000000..0d7ff700f
--- /dev/null
+++ b/docs/src/reference/use-location.md
@@ -0,0 +1,3 @@
+---
+title: Use Location 🚧
+---
diff --git a/docs/src/reference/use-memo.md b/docs/src/reference/use-memo.md
new file mode 100644
index 000000000..3daffe622
--- /dev/null
+++ b/docs/src/reference/use-memo.md
@@ -0,0 +1,3 @@
+---
+title: Use Memo 🚧
+---
diff --git a/docs/src/reference/use-reducer.md b/docs/src/reference/use-reducer.md
new file mode 100644
index 000000000..eb732d01a
--- /dev/null
+++ b/docs/src/reference/use-reducer.md
@@ -0,0 +1,3 @@
+---
+title: Use Reducer 🚧
+---
diff --git a/docs/src/reference/use-ref.md b/docs/src/reference/use-ref.md
new file mode 100644
index 000000000..fa1f25a02
--- /dev/null
+++ b/docs/src/reference/use-ref.md
@@ -0,0 +1,3 @@
+---
+title: Use Ref 🚧
+---
diff --git a/docs/src/reference/use-scope.md b/docs/src/reference/use-scope.md
new file mode 100644
index 000000000..080875017
--- /dev/null
+++ b/docs/src/reference/use-scope.md
@@ -0,0 +1,3 @@
+---
+title: Use Scope 🚧
+---
diff --git a/docs/src/reference/use-state.md b/docs/src/reference/use-state.md
new file mode 100644
index 000000000..e60b34d64
--- /dev/null
+++ b/docs/src/reference/use-state.md
@@ -0,0 +1,3 @@
+---
+title: Use State 🚧
+---
diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
new file mode 100644
index 000000000..b8b8e5351
--- /dev/null
+++ b/docs/src/static/css/extra.css
@@ -0,0 +1,323 @@
+/* Variable overrides */
+:root {
+	--code-max-height: 17.25rem;
+}
+
+[data-md-color-scheme="slate"] {
+	--md-code-hl-color: #ffffcf1c;
+	--md-hue: 225;
+	--md-default-bg-color: hsla(var(--md-hue), 15%, 16%, 1);
+	--md-default-bg-color--light: hsla(var(--md-hue), 15%, 16%, 0.54);
+	--md-default-bg-color--lighter: hsla(var(--md-hue), 15%, 16%, 0.26);
+	--md-default-bg-color--lightest: hsla(var(--md-hue), 15%, 16%, 0.07);
+	--md-code-bg-color: #16181d;
+	--md-primary-fg-color: #2b3540;
+	--md-default-fg-color--light: #fff;
+	--md-typeset-a-color: #00b0f0;
+	--md-code-hl-comment-color: hsla(var(--md-hue), 75%, 90%, 0.43);
+	--tabbed-labels-color: rgb(52 58 70);
+}
+
+[data-md-color-scheme="default"] {
+	--tabbed-labels-color: #7d829e26;
+}
+
+/* General admonition styling */
+/* TODO: Write this in a way that supports the light theme */
+[data-md-color-scheme="slate"]
+	.md-typeset
+	details:not(.warning, .failure, .danger, .bug)
+	> .admonition-title,
+[data-md-color-scheme="slate"]
+	.md-typeset
+	details:not(.warning, .failure, .danger, .bug)
+	> summary {
+	background: var(--md-primary-fg-color) !important;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .admonition,
+[data-md-color-scheme="slate"] .md-typeset details {
+	border-color: transparent !important;
+}
+
+[data-md-color-scheme="slate"] .md-typeset details > .admonition-title:after,
+[data-md-color-scheme="slate"] .md-typeset details > summary:after {
+	color: var(--md-admonition-fg-color) !important;
+}
+
+.md-typeset .admonition.summary,
+.md-typeset details.summary {
+	font-size: 0.7rem;
+}
+
+.md-typeset :is(.admonition, details) {
+	margin: 0.55em 0;
+}
+
+/* Colors for "summary" admonition */
+[data-md-color-scheme="slate"] .md-typeset .admonition.summary,
+[data-md-color-scheme="slate"] .md-typeset details.summary {
+	background: #353a45;
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+[data-md-color-scheme="slate"] .md-typeset details.summary > .admonition-title,
+[data-md-color-scheme="slate"] .md-typeset details.summary > summary {
+	background: #353a45 !important;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .summary .admonition-title,
+[data-md-color-scheme="slate"] .md-typeset .summary summary {
+	font-size: 1rem;
+	background: transparent;
+	padding-left: 0.6rem;
+	padding-bottom: 0;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .summary .admonition-title:before {
+	display: none;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .admonition.summary,
+[data-md-color-scheme="slate"] .md-typeset .summary details {
+	border-color: #ffffff17 !important;
+}
+
+/* Colors for "abstract" admonition */
+[data-md-color-scheme="slate"] .md-typeset .admonition.abstract,
+[data-md-color-scheme="slate"] .md-typeset details.abstract {
+	background: rgb(43 110 98/ 0.2);
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .abstract .admonition-title,
+[data-md-color-scheme="slate"] .md-typeset .abstract summary {
+	font-size: 1rem;
+	background: transparent;
+	padding-bottom: 0;
+	color: rgb(68 172 153);
+}
+
+[data-md-color-scheme="slate"] .md-typeset .abstract .admonition-title:before {
+	font-size: 1.1rem;
+	background-color: rgb(68 172 153);
+}
+
+/* Move the sidebars to the edges of the page */
+.md-main__inner.md-grid {
+	margin-left: 0;
+	margin-right: 0;
+	max-width: unset;
+	display: flex;
+	justify-content: center;
+}
+
+.md-sidebar--primary {
+	margin-right: auto;
+}
+
+.md-sidebar.md-sidebar--secondary {
+	margin-left: auto;
+}
+
+.md-content {
+	max-width: 56rem;
+}
+
+/* Maintain content positioning even if sidebars are disabled */
+@media screen and (min-width: 76.1875em) {
+	.md-sidebar {
+		display: block;
+	}
+
+	.md-sidebar[hidden] {
+		visibility: hidden;
+	}
+}
+
+/* Sidebar styling */
+@media screen and (min-width: 76.1875em) {
+	.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link {
+		text-transform: uppercase;
+	}
+
+	.md-nav__title[for="__toc"] {
+		text-transform: uppercase;
+		margin: 0.5rem;
+	}
+
+	.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link {
+		color: rgb(133 142 159);
+		margin: 0.5rem;
+	}
+
+	.md-nav__item .md-nav__link {
+		position: relative;
+	}
+
+	.md-nav__link:is(:focus, :hover):not(.md-nav__link--active) {
+		color: unset;
+	}
+
+	.md-nav__item
+		.md-nav__link:is(:focus, :hover):not(.md-nav__link--active):before {
+		content: "";
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		opacity: 0.2;
+		z-index: -1;
+		background-color: grey;
+	}
+
+	.md-nav__item .md-nav__link--active:before {
+		content: "";
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		opacity: 0.15;
+		z-index: -1;
+		background-color: var(--md-typeset-a-color);
+	}
+
+	.md-nav__link {
+		padding: 0.5rem 0.5rem 0.5rem 1rem;
+		margin: 0;
+		border-radius: 0 10px 10px 0;
+		font-weight: 600;
+	}
+
+	.md-sidebar__scrollwrap {
+		margin: 0;
+	}
+
+	[dir="ltr"]
+		.md-nav--lifted
+		.md-nav[data-md-level="1"]
+		> .md-nav__list
+		> .md-nav__item {
+		padding: 0;
+	}
+
+	.md-nav__item--nested .md-nav__item .md-nav__item {
+		padding: 0;
+	}
+
+	.md-nav__item--nested .md-nav__item .md-nav__item .md-nav__link {
+		font-weight: 300;
+	}
+}
+
+/* Table of Contents styling */
+@media screen and (min-width: 60em) {
+	[data-md-component="sidebar"] .md-nav__title[for="__toc"] {
+		text-transform: uppercase;
+		margin: 0.5rem;
+		margin-left: 0;
+	}
+
+	[data-md-component="toc"] .md-nav__item .md-nav__link--active {
+		position: relative;
+	}
+
+	[data-md-component="toc"] .md-nav__item .md-nav__link--active:before {
+		content: "";
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		opacity: 0.15;
+		z-index: -1;
+		background-color: var(--md-typeset-a-color);
+	}
+
+	[data-md-component="toc"] .md-nav__link {
+		padding: 0.5rem 0.5rem;
+		margin: 0;
+		border-radius: 10px 0 0 10px;
+	}
+	[dir="ltr"] .md-sidebar__inner {
+		padding: 0;
+	}
+
+	.md-nav__item {
+		padding: 0;
+	}
+}
+
+/* Font changes */
+.md-typeset {
+	font-weight: 300;
+}
+
+.md-typeset h1 {
+	font-weight: 500;
+	margin: 0;
+	font-size: 2.5em;
+}
+
+.md-typeset h2 {
+	font-weight: 500;
+}
+
+.md-typeset h3 {
+	font-weight: 600;
+}
+
+/* Intro section styling */
+p.intro {
+	font-size: 0.9rem;
+	font-weight: 500;
+}
+
+/* Hide invisible jump selectors */
+h2#overview {
+	visibility: hidden;
+	height: 0;
+	margin: 0;
+	padding: 0;
+}
+
+/* Code blocks */
+.md-typeset pre > code {
+	border-radius: 16px;
+}
+
+.md-typeset .highlighttable .linenos {
+	max-height: var(--code-max-height);
+	overflow: hidden;
+}
+
+.md-typeset .tabbed-block .highlighttable code {
+	border-radius: 0;
+}
+
+.md-typeset .tabbed-block {
+	border-bottom-left-radius: 16px;
+	border-bottom-right-radius: 16px;
+	border-bottom: 20px solid var(--tabbed-labels-color);
+}
+
+.js .md-typeset .tabbed-labels {
+	background: var(--tabbed-labels-color);
+	border-top-left-radius: 16px;
+	border-top-right-radius: 16px;
+}
+
+.md-typeset .tabbed-labels > label {
+	font-weight: 400;
+	font-size: 0.7rem;
+	padding-top: 0.55em;
+	padding-bottom: 0.35em;
+}
+
+.md-typeset pre > code {
+	max-height: var(--code-max-height);
+}
diff --git a/docs/src/static/images/s_thinking-in-react_ui.png b/docs/src/static/images/s_thinking-in-react_ui.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3249d52647848841221c1355042c19d8852e5e8
GIT binary patch
literal 25981
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
L6Wt1&!<GL6a@duA

literal 0
HcmV?d00001

diff --git a/docs/src/static/images/s_thinking-in-react_ui_outline.png b/docs/src/static/images/s_thinking-in-react_ui_outline.png
new file mode 100644
index 0000000000000000000000000000000000000000..e705738c9334106f0f92fd4e84414f9040bdba99
GIT binary patch
literal 83418
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

literal 0
HcmV?d00001

diff --git a/docs/src/static/js/extra.js b/docs/src/static/js/extra.js
new file mode 100644
index 000000000..50e2dda30
--- /dev/null
+++ b/docs/src/static/js/extra.js
@@ -0,0 +1,19 @@
+// Sync scrolling between the code node and the line number node
+// Event needs to be a separate function, otherwise the event will be triggered multiple times
+let code_with_lineno_scroll_event = function () {
+	let tr = this.parentNode.parentNode.parentNode.parentNode;
+	let lineno = tr.querySelector(".linenos");
+	lineno.scrollTop = this.scrollTop;
+};
+
+const observer = new MutationObserver((mutations) => {
+	let lineno = document.querySelectorAll(".linenos~.code");
+	lineno.forEach(function (element) {
+		let code = element.parentNode.querySelector("code");
+		code.addEventListener("scroll", code_with_lineno_scroll_event);
+	});
+});
+
+observer.observe(document.body, {
+	childList: true,
+});
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 000000000..27155631e
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,178 @@
+---
+nav:
+    - Home: index.md
+    - Get Started:
+          - Quick Start:
+                - learn/get-started.md
+                - learn/tutorial-tic-tac-toe.md
+                - learn/thinking-in-react.md
+          - Installation:
+                - learn/start-a-new-react-project.md
+                - learn/add-react-to-an-existing-project.md
+                - learn/editor-setup.md
+                - learn/react-developer-tools.md
+          - More Tutorials:
+                - learn/tutorial-react-bootstrap.md
+                - learn/tutorial-material-ui.md
+    - Learn React:
+          - Describing the UI:
+                - learn/your-first-component.md
+                - learn/importing-and-exporting-components.md
+                - learn/writing-markup-with-psx.md
+                - learn/python-in-psx-with-curly-braces.md
+                - learn/passing-props-to-a-component.md
+                - learn/conditional-rendering.md
+                - learn/rendering-lists.md
+                - learn/keeping-components-pure.md
+          - Adding Interactivity:
+                - learn/responding-to-events.md
+                - learn/state-a-components-memory.md
+                - learn/render-and-commit.md
+                - learn/state-as-a-snapshot.md
+                - learn/queueing-a-series-of-state-updates.md
+                - learn/updating-objects-in-state.md
+                - learn/updating-arrays-in-state.md
+          - Managing State:
+                - learn/reacting-to-input-with-state.md
+                - learn/choosing-the-state-structure.md
+                - learn/sharing-state-between-components.md
+                - learn/preserving-and-resetting-state.md
+                - learn/extracting-state-logic-into-a-reducer.md
+                - learn/passing-data-deeply-with-context.md
+                - learn/scaling-up-with-reducer-and-context.md
+          - Escape Hatches:
+                - learn/referencing-values-with-refs.md
+                - learn/manipulating-the-dom-with-refs.md
+                - learn/synchronizing-with-effects.md
+                - learn/you-might-not-need-an-effect.md
+                - learn/lifecycle-of-reactive-effects.md
+                - learn/separating-events-from-effects.md
+                - learn/removing-effect-dependencies.md
+                - learn/reusing-logic-with-custom-hooks.md
+                - learn/communicate-data-between-server-and-client.md
+                - learn/convert-between-vdom-and-html.md
+                - learn/vdom-mutations.md
+                - learn/creating-vdom-event-handlers.md
+                - learn/creating-html-tags.md
+                - learn/creating-backends.md
+                - learn/manually-register-a-client.md
+    - Reference:
+          - Hooks:
+                - reference/use-state.md
+                - reference/use-effect.md
+                - reference/use-context.md
+                - reference/use-reducer.md
+                - reference/use-callback.md
+                - reference/use-memo.md
+                - reference/use-ref.md
+                - reference/use-debug-value.md
+                - reference/use-connection.md
+                - reference/use-scope.md
+                - reference/use-location.md
+          - HTML Tags:
+                - reference/common-types.md
+                - reference/common-props.md
+                - reference/common-events.md
+                - reference/usage.md
+          - Backends:
+                - reference/fastapi.md
+                - reference/flask.md
+                - reference/sanic.md
+                - reference/starlette.md
+                - reference/tornado.md
+                - reference/django.md
+                - reference/jupyter.md
+                - reference/plotly-dash.md
+          - reference/protocol-structure.md
+          - reference/client-api.md
+    - About ReactPy:
+          - about/changelog.md
+          - about/community.md
+          - about/running-tests.md
+          - about/code.md
+          - about/docs.md
+
+theme:
+    name: material
+    custom_dir: docs/overrides
+    palette:
+        - media: "(prefers-color-scheme: dark)"
+          scheme: slate
+          toggle:
+              icon: material/white-balance-sunny
+              name: Switch to light mode
+          primary: light blue
+          accent: light blue
+        - media: "(prefers-color-scheme: light)"
+          scheme: default
+          toggle:
+              icon: material/weather-night
+              name: Switch to dark mode
+          primary: black
+    features:
+        - navigation.instant
+        - navigation.tabs
+        - navigation.top
+        - content.code.copy
+    icon:
+        repo: fontawesome/brands/github
+    logo: https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg
+    favicon: https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg
+
+markdown_extensions:
+    - toc:
+          permalink: true
+    - pymdownx.emoji:
+          emoji_index: !!python/name:materialx.emoji.twemoji
+          emoji_generator: !!python/name:materialx.emoji.to_svg
+    - pymdownx.tabbed:
+          alternate_style: true
+    - pymdownx.highlight:
+          linenums: true
+    - pymdownx.superfences
+    - pymdownx.details
+    - pymdownx.inlinehilite
+    - admonition
+    - attr_list
+    - md_in_html
+
+plugins:
+    - search
+    - include-markdown
+    # - git-authors
+    # - minify:
+    #       minify_html: true
+    #       minify_js: true
+    #       minify_css: true
+    #       cache_safe: true
+    # - git-revision-date-localized:
+    #       fallback_to_build_date: true
+    # - spellcheck:
+    #       known_words: dictionary.txt
+    #       allow_unicode: no
+    #       ignore_code: yes
+
+extra:
+    generator: false
+
+extra_javascript:
+    - static/js/extra.js
+
+extra_css:
+    - static/css/extra.css
+
+watch:
+    - docs
+    - mkdocs.yml
+    - README.md
+    - CHANGELOG.md
+
+site_name: ReactPy
+site_author: Archmonger
+site_description: React for Python developers.
+copyright: Copyright &copy; 2023 Reactive Python
+repo_url: https://github.com/reactive-python/reactpy
+site_url: https://reactive-python.github.io/reactpy
+repo_name: reactive-python/reactpy
+edit_uri: edit/main/docs/src
+docs_dir: docs/src

From 8602fffb3d52eff677f591b05b4ba52feb7fd56d Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Wed, 14 Jun 2023 14:34:20 -0700
Subject: [PATCH 02/49] add gh pages publishing workflow

---
 .github/workflows/publish-docs.yml | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 .github/workflows/publish-docs.yml

diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
new file mode 100644
index 000000000..78bde0f4a
--- /dev/null
+++ b/.github/workflows/publish-docs.yml
@@ -0,0 +1,17 @@
+name: Publish Docs
+on:
+    push:
+        branches:
+            - new-docs
+jobs:
+    deploy:
+        runs-on: ubuntu-latest
+        steps:
+            - uses: actions/checkout@v3
+              with:
+                  fetch-depth: 0
+            - uses: actions/setup-python@v4
+              with:
+                  python-version: 3.x
+            - run: pip install -r requirements/build-docs.txt
+            - run: mkdocs gh-deploy --force

From b05c29c653b72704c319031af2b2137f1b606319 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Wed, 14 Jun 2023 14:36:19 -0700
Subject: [PATCH 03/49] fix requirements path

---
 .github/workflows/publish-docs.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index 78bde0f4a..69342c994 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -13,5 +13,5 @@ jobs:
             - uses: actions/setup-python@v4
               with:
                   python-version: 3.x
-            - run: pip install -r requirements/build-docs.txt
+            - run: pip install -r docs/requirements.txt
             - run: mkdocs gh-deploy --force

From 3b5341acc8f85fb36730a28401c3750407e62373 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Wed, 14 Jun 2023 14:46:09 -0700
Subject: [PATCH 04/49] update github pages link

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 0086a306a..b44222bd2 100644
--- a/README.md
+++ b/README.md
@@ -2,4 +2,4 @@ Temporary branch being used to rewrite ReactPy's documentation.
 
 Many of these pages are in progress, and are using the [original ReactJS pages](https://beta.reactjs.org/learn) as placeholders.
 
-See live preview here: https://archmonger.github.io/reactpy-docs/
+See live preview here: https://reactive-python.github.io/reactpy

From 2b5dd4d47f9a665f2aa5caa68e0a05b8eb98cb6c Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Wed, 14 Jun 2023 18:02:54 -0700
Subject: [PATCH 05/49] update site description

---
 mkdocs.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mkdocs.yml b/mkdocs.yml
index 27155631e..bb24bdaba 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -169,7 +169,7 @@ watch:
 
 site_name: ReactPy
 site_author: Archmonger
-site_description: React for Python developers.
+site_description: It's React, but in Python.
 copyright: Copyright &copy; 2023 Reactive Python
 repo_url: https://github.com/reactive-python/reactpy
 site_url: https://reactive-python.github.io/reactpy

From 8cc75aad1880140ffe1b44441988a3be27830236 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Thu, 15 Jun 2023 17:15:32 -0700
Subject: [PATCH 06/49] minor typos

---
 docs/src/learn/get-started.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/src/learn/get-started.md b/docs/src/learn/get-started.md
index 20e52dd3b..b82d22c16 100644
--- a/docs/src/learn/get-started.md
+++ b/docs/src/learn/get-started.md
@@ -156,7 +156,7 @@ For example, let's say you have an array of products:
 {% include "../../examples/python/quick_start/rendering_lists_products.py" %}
 ```
 
-Inside your component, use the `map()` function to transform an array of products into an array of `<li>` items:
+Inside your component, use list comprehension to transform an array of products into an array of `<li>` items:
 
 ```python linenums="0"
 {% include "../../examples/python/quick_start/rendering_lists_list_items.py" start="# start" %}
@@ -202,7 +202,7 @@ Now you can declare a _state variable_ inside your component:
 {% include "../../examples/python/quick_start/updating_the_screen_use_state_button.py" start="# start" %}
 ```
 
-You’ll get two things from `use_state`: the current state (`count`), and the function that lets you update it (`set_sount`). You can give them any names, but the convention is to write `something, set_something = ...`.
+You’ll get two things from `use_state`: the current state (`count`), and the function that lets you update it (`set_count`). You can give them any names, but the convention is to write `something, set_something = ...`.
 
 The first time the button is displayed, `count` will be `0` because you passed `0` to `use_state()`. When you want to change state, call `set_count()` and pass the new value to it. Clicking this button will increment the counter:
 
@@ -238,7 +238,7 @@ Notice how each button "remembers" its own `count` state and doesn't affect othe
 
 Functions starting with `use` are called _Hooks_. `use_state` is a built-in Hook provided by React. You can find other built-in Hooks in the [API reference.](../reference/use-state.md) You can also write your own Hooks by combining the existing ones.
 
-Hooks are more restrictive than other functions. You can only call Hooks _at the top_ of your components (or other Hooks). If you want to use `useState` in a condition or a loop, extract a new component and put it there.
+Hooks are more restrictive than other functions. You can only call Hooks _at the top_ of your components (or other Hooks). If you want to use `use_state` in a condition or a loop, extract a new component and put it there.
 
 ## Sharing data between components
 

From a05cbe06cf4523dc9cd58412e11b27ea232bd52c Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Thu, 15 Jun 2023 18:08:25 -0700
Subject: [PATCH 07/49] setup for the tutorial section

---
 .../setup_for_the_tutorial.css                | 42 ++++++++++
 .../setup_for_the_tutorial.py                 |  6 ++
 docs/src/learn/tutorial-tic-tac-toe.md        | 77 ++++++-------------
 3 files changed, 70 insertions(+), 55 deletions(-)
 create mode 100644 docs/examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css
 create mode 100644 docs/examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py

diff --git a/docs/examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css b/docs/examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css
new file mode 100644
index 000000000..e3efaf92a
--- /dev/null
+++ b/docs/examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css
@@ -0,0 +1,42 @@
+* {
+    box-sizing: border-box;
+}
+
+body {
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
+}
+
+.square {
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
+}
+
+.board-row:after {
+    clear: both;
+    content: "";
+    display: table;
+}
+
+.status {
+    margin-bottom: 10px;
+}
+.game {
+    display: flex;
+    flex-direction: row;
+}
+
+.game-info {
+    margin-left: 20px;
+}
diff --git a/docs/examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py b/docs/examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py
new file mode 100644
index 000000000..efca94195
--- /dev/null
+++ b/docs/examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py
@@ -0,0 +1,6 @@
+from reactpy import component, html
+
+# start
+@component
+def square():
+    return html.button({"class_name":"square"}, "X")
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 46ad9325e..5e15036ef 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -10,7 +10,7 @@ You will build a small tic-tac-toe game during this tutorial. This tutorial does
 
 </p>
 
-!!! abstract "Note"
+!!! note
 
     This tutorial is designed for people who prefer to **learn by doing** and want to quickly try making something tangible. If you prefer learning each concept step by step, start with [Describing the UI.](./your-first-component.md)
 
@@ -53,72 +53,39 @@ Once you've played around with the finished tic-tac-toe game, keep scrolling. Yo
 
 ## Setup for the tutorial
 
-In the live code editor below, click **Fork** in the top-right corner to open the editor in a new tab using the website CodeSandbox. CodeSandbox lets you write code in your browser and preview how your users will see the app you've created. The new tab should display an empty square and the starter code for this tutorial.
+In the code example below, click **Run** to open the editor in a new tab using the website Jupyter. Jupyter lets you write code in your browser and preview how your users will see the app you've created. The new tab should display an empty square and the starter code for this tutorial.
 
-```js
-export default function Square() {
-	return <button className="square">X</button>;
-}
-```
 
-```css
-* {
-	box-sizing: border-box;
-}
+=== "app.py"
 
-body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
-}
+	```python
+	{% include "../../examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py" start="# start" %}
+	```
 
-.square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
-}
+=== "stylesheet.css"
 
-.board-row:after {
-	clear: both;
-	content: "";
-	display: table;
-}
+	```css
+	{% include "../../examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css" %}
+	```
 
-.status {
-	margin-bottom: 10px;
-}
-.game {
-	display: flex;
-	flex-direction: row;
-}
+=== ":material-play: Run"
 
-.game-info {
-	margin-left: 20px;
-}
-```
+    ```python
+    # TODO
+    ```
 
-<Note>
+!!! note
 
-You can also follow this tutorial using your local development environment. To do this, you need to:
+	You can also follow this tutorial using your local development environment. To do this, you need to:
 
-1. Install [Node.js](https://nodejs.org/en/)
-1. In the CodeSandbox tab you opened earlier, press the top-left corner button to open the menu, and then choose **File > Export to ZIP** in that menu to download an archive of the files locally
-1. Unzip the archive, then open a terminal and `cd` to the directory you unzipped
-1. Install the dependencies with `npm install`
-1. Run `npm start` to start a local server and follow the prompts to view the code running in a browser
+	1. Install [Python](https://www.python.org/downloads/)
+	2. Copy the example above into a file called `app.py`
+	3. Install Reactpy for the [backend](../reference/fastapi.md) of your choice.
+		- For example: `pip install reactpy[fastapi]`
+	4. Run `python app.py` to start a local server and follow the prompts to view the code running in a browser
 
-If you get stuck, don't let this stop you! Follow along online instead and try a local setup again later.
+	If you get stuck, don't let this stop you! Follow along online instead and try a local setup again later.
 
-</Note>
 
 ## Overview
 

From 2f5b68a38235617d26fadeb72c9148be521db927 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Thu, 15 Jun 2023 18:08:37 -0700
Subject: [PATCH 08/49] switch from abstract to note admonitiion

---
 docs/src/static/css/extra.css | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
index b8b8e5351..a0a4bb74c 100644
--- a/docs/src/static/css/extra.css
+++ b/docs/src/static/css/extra.css
@@ -84,27 +84,32 @@
 	border-color: #ffffff17 !important;
 }
 
-/* Colors for "abstract" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.abstract,
-[data-md-color-scheme="slate"] .md-typeset details.abstract {
+/* Colors for "note" admonition */
+[data-md-color-scheme="slate"] .md-typeset .admonition.note,
+[data-md-color-scheme="slate"] .md-typeset details.note {
 	background: rgb(43 110 98/ 0.2);
 	padding: 0.8rem 1.4rem;
 	border-radius: 0.8rem;
 }
 
-[data-md-color-scheme="slate"] .md-typeset .abstract .admonition-title,
-[data-md-color-scheme="slate"] .md-typeset .abstract summary {
+[data-md-color-scheme="slate"] .md-typeset .note .admonition-title,
+[data-md-color-scheme="slate"] .md-typeset .note summary {
 	font-size: 1rem;
 	background: transparent;
 	padding-bottom: 0;
 	color: rgb(68 172 153);
 }
 
-[data-md-color-scheme="slate"] .md-typeset .abstract .admonition-title:before {
+[data-md-color-scheme="slate"] .md-typeset .note .admonition-title:before {
 	font-size: 1.1rem;
 	background-color: rgb(68 172 153);
 }
 
+.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before {
+    -webkit-mask-image: var(--md-admonition-icon--abstract);
+    mask-image: var(--md-admonition-icon--abstract)
+}
+
 /* Move the sidebars to the edges of the page */
 .md-main__inner.md-grid {
 	margin-left: 0;

From 308d2169aa25f0062d1d1864d232bd6a123f65f9 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Thu, 15 Jun 2023 18:26:17 -0700
Subject: [PATCH 09/49] reword note

---
 docs/src/learn/tutorial-tic-tac-toe.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 5e15036ef..3ae8e7901 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -80,8 +80,7 @@ In the code example below, click **Run** to open the editor in a new tab using t
 
 	1. Install [Python](https://www.python.org/downloads/)
 	2. Copy the example above into a file called `app.py`
-	3. Install Reactpy for the [backend](../reference/fastapi.md) of your choice.
-		- For example: `pip install reactpy[fastapi]`
+	3. Install ReactPy for your [backend](../reference/fastapi.md), for example `pip install reactpy[fastapi]`
 	4. Run `python app.py` to start a local server and follow the prompts to view the code running in a browser
 
 	If you get stuck, don't let this stop you! Follow along online instead and try a local setup again later.

From 838671b191904a37c8a1976e0e3c47b832d8f0ec Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sat, 17 Jun 2023 23:15:45 -0700
Subject: [PATCH 10/49] cell-var-from-loop

---
 docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py | 8 ++++++--
 docs/src/learn/tutorial-tic-tac-toe.md                   | 3 ++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py b/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py
index 9a5fc40cc..8a05d89c4 100644
--- a/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py
+++ b/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py
@@ -13,8 +13,12 @@ def square(value, on_square_click):
 
 @component
 def board(x_is_next, squares, on_play):
+
     def handle_click(i):
-        def event(_event):
+        def handle_click_event(_event):
+            """Due to a quirk of Python, if your event handler needs args other than
+            `event`, you will need to create a wrapper function as seen above.
+            Ref: https://pylint.readthedocs.io/en/stable/user_guide/messages/warning/cell-var-from-loop.html"""
             if calculate_winner(squares) or squares[i]:
                 return
 
@@ -22,7 +26,7 @@ def event(_event):
             next_squares[i] = "X" if x_is_next else "O"
             on_play(next_squares)
 
-        return event
+        return handle_click_event
 
     winner = calculate_winner(squares)
     status = (
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 3ae8e7901..98b6497f5 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -81,7 +81,8 @@ In the code example below, click **Run** to open the editor in a new tab using t
 	1. Install [Python](https://www.python.org/downloads/)
 	2. Copy the example above into a file called `app.py`
 	3. Install ReactPy for your [backend](../reference/fastapi.md), for example `pip install reactpy[fastapi]`
-	4. Run `python app.py` to start a local server and follow the prompts to view the code running in a browser
+	4. Add `reactpy.run(...)` to the end of your Python file
+	5. Run `python app.py` to start a local server and follow the prompts to view the code running in a browser
 
 	If you get stuck, don't let this stop you! Follow along online instead and try a local setup again later.
 

From 58bac05417eff3d870717e26230a18319a0fd36d Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 18 Jun 2023 21:33:15 -0700
Subject: [PATCH 11/49] update readme

---
 README.md | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index b44222bd2..790c60da8 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,18 @@
 Temporary branch being used to rewrite ReactPy's documentation.
 
-Many of these pages are in progress, and are using the [original ReactJS pages](https://beta.reactjs.org/learn) as placeholders.
+Many of these pages are in progress, and are using the [original ReactJS docs](https://react.dev/learn) as placeholders.
 
 See live preview here: https://reactive-python.github.io/reactpy
+
+In order to set up an environment to develop these docs...
+
+1. Install [Python](https://www.python.org/downloads/) 3.9 or higher
+2. Fork and clone this repository
+3. _Optional_: Create a Python virtual environment with the following command: `python3 -m venv venv`
+4. _Optional_: Activate the virtual environment (this method will vary based on operating system)
+5. Install the dependencies with the following command: `pip install -r docs/requirements.txt`
+6. Run the following command: `mkdocs serve`
+7. Follow the on-screen prompts to view the documentation in your browser
+8. You can now edit the markdown files located within `docs/src/` and see the changes in real time
+
+Feel free to PR this branch with any changes you make to the documentation. If you have any questions, feel free to ask in the [Discord server](https://discord.gg/uNb5P4hA9X).

From ad10c29c42b4f39cfd0553358b0790d9f4fe9a04 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 18 Jun 2023 21:33:24 -0700
Subject: [PATCH 12/49] add padding to sidebar nav

---
 docs/src/static/css/extra.css | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
index a0a4bb74c..58c9496c0 100644
--- a/docs/src/static/css/extra.css
+++ b/docs/src/static/css/extra.css
@@ -217,6 +217,11 @@
 	.md-nav__item--nested .md-nav__item .md-nav__item .md-nav__link {
 		font-weight: 300;
 	}
+
+	.md-nav__item--nested .md-nav__item .md-nav__item .md-nav__link {
+		font-weight: 400;
+		padding-left: 1.25rem;
+	}
 }
 
 /* Table of Contents styling */

From 73dadc9a685ae963a7b49327dc73dcfc0f618ed8 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 18 Jun 2023 21:36:31 -0700
Subject: [PATCH 13/49] Inspecting the starter code

---
 docs/src/learn/get-started.md          |  6 +++---
 docs/src/learn/tutorial-tic-tac-toe.md | 28 +++++++++++++-------------
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/docs/src/learn/get-started.md b/docs/src/learn/get-started.md
index b82d22c16..0e501bd96 100644
--- a/docs/src/learn/get-started.md
+++ b/docs/src/learn/get-started.md
@@ -112,7 +112,7 @@ You can fetch data from a variety of sources and directly embed it into your com
     {% include "../../examples/python/quick_start/displaying_data.py" end="# end" %}
     ```
 
-=== "stylesheet.css"
+=== "styles.css"
 
     ```css
     {% include "../../examples/css/quick_start/displaying_data.css" %}
@@ -220,7 +220,7 @@ If you render the same component multiple times, each will get its own state. Cl
     {% include "../../examples/python/quick_start/updating_the_screen.py"  end="# end" %}
     ```
 
-=== "stylesheet.css"
+=== "styles.css"
 
     ```css
     {% include "../../examples/css/quick_start/updating_the_screen.css" %}
@@ -284,7 +284,7 @@ When you click the button, the `on_click` handler fires. Each button's `on_click
     {% include "../../examples/python/quick_start/sharing_data_between_components.py" end="# end" %}
     ```
 
-=== "stylesheet.css"
+=== "styles.css"
 
     ```css
     {% include "../../examples/css/quick_start/sharing_data_between_components.css" %}
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 98b6497f5..49cc29ec1 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -33,7 +33,7 @@ You can see what it will look like when you're finished here:
     {% include "../../examples/python/tutorial-tic-tac-toe/tic_tac_toe.py" end="# end" %}
     ```
 
-=== "stylesheet.css"
+=== "styles.css"
 
     ```css
     {% include "../../examples/css/tutorial-tic-tac-toe/tic_tac_toe.css" %}
@@ -62,7 +62,7 @@ In the code example below, click **Run** to open the editor in a new tab using t
 	{% include "../../examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py" start="# start" %}
 	```
 
-=== "stylesheet.css"
+=== "styles.css"
 
 	```css
 	{% include "../../examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css" %}
@@ -93,25 +93,25 @@ Now that you're set up, let's get an overview of React!
 
 ### Inspecting the starter code
 
-In CodeSandbox you'll see three main sections:
+In Jupyter you'll see three main sections:
 
-![CodeSandbox with starter code]()
+<!-- TODO: Add screenshot -->
+![TODO: screenshot of Jupyter]()
 
-1. The _Files_ section with a list of files like `App.js`, `index.js`, `styles.css` and a folder called `public`
-1. The _code editor_ where you'll see the source code of your selected file
-1. The _browser_ section where you'll see how the code you've written will be displayed
+1. The _Files_ section with a list of files like `tic-tac-toe.ipynb`
+2. The _interactive code notebook_ where you'll see the source code for each step
+3. The _run button_ located on top of the notebook in the command strip
 
-The `App.js` file should be selected in the _Files_ section. The contents of that file in the _code editor_ should be:
+The `tic-tac-toe.ipynb` file should be selected in the _Files_ section. Click on the first code box, where the contents of that _code editor_ should be:
 
-```jsx
-export default function Square() {
-	return <button className="square">X</button>;
-}
+```python linenums="0"
+{% include "../../examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py" start="# start" %}
 ```
 
-The _browser_ section should be displaying a square with a X in it like this:
+After clicking the _run button_ the notebook should be displaying a square with a X in it like this:
 
-![x-filled square]()
+<!-- TODO: Add screenshot -->
+![TODO: x-filled square]()
 
 Now let's have a look at the files in the starter code.
 

From f28a6ab675a2102c010148aa46e5958ccf7cbf50 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 18 Jun 2023 21:38:02 -0700
Subject: [PATCH 14/49] Add disclaimer about unfinished pages

---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index 790c60da8..db3e94484 100644
--- a/README.md
+++ b/README.md
@@ -15,4 +15,6 @@ In order to set up an environment to develop these docs...
 7. Follow the on-screen prompts to view the documentation in your browser
 8. You can now edit the markdown files located within `docs/src/` and see the changes in real time
 
+All unfinished tabs are marked via a construction symbol ( 🚧 ).
+
 Feel free to PR this branch with any changes you make to the documentation. If you have any questions, feel free to ask in the [Discord server](https://discord.gg/uNb5P4hA9X).

From 60d54e062c2112a5b9647b762a17034221d52db1 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 18 Jun 2023 21:59:09 -0700
Subject: [PATCH 15/49] rename tic-tac-toe folder

---
 .../setup_for_the_tutorial.css                         |  0
 .../tic_tac_toe.css                                    |  0
 .../setup_for_the_tutorial.py                          |  0
 .../tic_tac_toe.py                                     |  0
 docs/src/learn/tutorial-tic-tac-toe.md                 | 10 +++++-----
 5 files changed, 5 insertions(+), 5 deletions(-)
 rename docs/examples/css/{tutorial-tic-tac-toe => tutorial_tic_tac_toe}/setup_for_the_tutorial.css (100%)
 rename docs/examples/css/{tutorial-tic-tac-toe => tutorial_tic_tac_toe}/tic_tac_toe.css (100%)
 rename docs/examples/python/{tutorial-tic-tac-toe => tutorial_tic_tac_toe}/setup_for_the_tutorial.py (100%)
 rename docs/examples/python/{tutorial-tic-tac-toe => tutorial_tic_tac_toe}/tic_tac_toe.py (100%)

diff --git a/docs/examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css b/docs/examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css
similarity index 100%
rename from docs/examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css
rename to docs/examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css
diff --git a/docs/examples/css/tutorial-tic-tac-toe/tic_tac_toe.css b/docs/examples/css/tutorial_tic_tac_toe/tic_tac_toe.css
similarity index 100%
rename from docs/examples/css/tutorial-tic-tac-toe/tic_tac_toe.css
rename to docs/examples/css/tutorial_tic_tac_toe/tic_tac_toe.css
diff --git a/docs/examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py b/docs/examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py
similarity index 100%
rename from docs/examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py
rename to docs/examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py
diff --git a/docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py b/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
similarity index 100%
rename from docs/examples/python/tutorial-tic-tac-toe/tic_tac_toe.py
rename to docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 49cc29ec1..8b696a61c 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -30,13 +30,13 @@ You can see what it will look like when you're finished here:
 === "app.py"
 
     ```python
-    {% include "../../examples/python/tutorial-tic-tac-toe/tic_tac_toe.py" end="# end" %}
+    {% include "../../examples/python/tutorial_tic_tac_toe/tic_tac_toe.py" end="# end" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/tutorial-tic-tac-toe/tic_tac_toe.css" %}
+    {% include "../../examples/css/tutorial_tic_tac_toe/tic_tac_toe.css" %}
     ```
 
 === ":material-play: Run"
@@ -59,13 +59,13 @@ In the code example below, click **Run** to open the editor in a new tab using t
 === "app.py"
 
 	```python
-	{% include "../../examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py" start="# start" %}
+	{% include "../../examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
 	```
 
 === "styles.css"
 
 	```css
-	{% include "../../examples/css/tutorial-tic-tac-toe/setup_for_the_tutorial.css" %}
+	{% include "../../examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css" %}
 	```
 
 === ":material-play: Run"
@@ -105,7 +105,7 @@ In Jupyter you'll see three main sections:
 The `tic-tac-toe.ipynb` file should be selected in the _Files_ section. Click on the first code box, where the contents of that _code editor_ should be:
 
 ```python linenums="0"
-{% include "../../examples/python/tutorial-tic-tac-toe/setup_for_the_tutorial.py" start="# start" %}
+{% include "../../examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
 ```
 
 After clicking the _run button_ the notebook should be displaying a square with a X in it like this:

From 0a347ddc5e3310bae98c3828d4cb6a6506e7cf17 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 18 Jun 2023 23:03:29 -0700
Subject: [PATCH 16/49] add styling utils

---
 docs/examples/python/__init__.py                  |  0
 docs/examples/python/quick_start/__init__.py      |  0
 .../python/quick_start/displaying_data.py         |  7 ++++++-
 .../sharing_data_between_components.py            |  7 ++++++-
 .../python/quick_start/updating_the_screen.py     |  7 ++++++-
 .../python/tutorial_tic_tac_toe/tic_tac_toe.py    |  7 ++++++-
 src/py/reactpy/reactpy/utils.py                   | 15 +++++++++++++++
 7 files changed, 39 insertions(+), 4 deletions(-)
 delete mode 100644 docs/examples/python/__init__.py
 delete mode 100644 docs/examples/python/quick_start/__init__.py

diff --git a/docs/examples/python/__init__.py b/docs/examples/python/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/examples/python/quick_start/__init__.py b/docs/examples/python/quick_start/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/examples/python/quick_start/displaying_data.py b/docs/examples/python/quick_start/displaying_data.py
index d4caa09c9..3534fe29d 100644
--- a/docs/examples/python/quick_start/displaying_data.py
+++ b/docs/examples/python/quick_start/displaying_data.py
@@ -28,5 +28,10 @@ def profile():
 # end
 if __name__ == "__main__":
     from reactpy import run
+    from reactpy.utils import _read_docs_css
 
-    run(profile)
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), profile())
+
+    run(styled_app)
diff --git a/docs/examples/python/quick_start/sharing_data_between_components.py b/docs/examples/python/quick_start/sharing_data_between_components.py
index 7c4d9904d..b256e6ecc 100644
--- a/docs/examples/python/quick_start/sharing_data_between_components.py
+++ b/docs/examples/python/quick_start/sharing_data_between_components.py
@@ -23,5 +23,10 @@ def my_button(count, on_click):
 # end
 if __name__ == "__main__":
     from reactpy import run
+    from reactpy.utils import _read_docs_css
 
-    run(my_app)
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), my_app())
+
+    run(styled_app)
diff --git a/docs/examples/python/quick_start/updating_the_screen.py b/docs/examples/python/quick_start/updating_the_screen.py
index 906a0718f..1fc6cebcd 100644
--- a/docs/examples/python/quick_start/updating_the_screen.py
+++ b/docs/examples/python/quick_start/updating_the_screen.py
@@ -23,5 +23,10 @@ def handle_click(event):
 # end
 if __name__ == "__main__":
     from reactpy import run
+    from reactpy.utils import _read_docs_css
 
-    run(my_app)
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), my_app())
+
+    run(styled_app)
diff --git a/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py b/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
index 8a05d89c4..29781a321 100644
--- a/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
+++ b/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
@@ -117,5 +117,10 @@ def calculate_winner(squares):
 # end
 if __name__ == "__main__":
     from reactpy import run
+    from reactpy.utils import _read_docs_css
 
-    run(game)
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), game())
+
+    run(styled_app)
diff --git a/src/py/reactpy/reactpy/utils.py b/src/py/reactpy/reactpy/utils.py
index e5e06d98d..0bfc604bf 100644
--- a/src/py/reactpy/reactpy/utils.py
+++ b/src/py/reactpy/reactpy/utils.py
@@ -1,5 +1,7 @@
 from __future__ import annotations
 
+import inspect
+import os
 import re
 from collections.abc import Iterable
 from itertools import chain
@@ -305,3 +307,16 @@ def _vdom_attr_to_html_str(key: str, value: Any) -> tuple[str, str]:
 
 # Pattern for delimitting camelCase names (e.g. camelCase to camel-case)
 _CAMEL_CASE_SUB_PATTERN = re.compile(r"(?<!^)(?=[A-Z])")
+
+
+def _read_docs_css():
+    """Reads a CSS file in the docs with the same relative path."""
+    py_path = os.path.abspath((inspect.stack()[1])[1])
+    css_path = (
+        py_path.replace("/python/", "/css/")
+        .replace("\\python\\", "\\css\\")
+        .replace(".py", ".css")
+    )
+
+    with open(css_path, encoding="UTF-8") as css_file:
+        return css_file.read()

From acf3f5cef5977afeb7c09bdf863409a15dab2408 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 18 Jun 2023 23:13:15 -0700
Subject: [PATCH 17/49] build a static version in React

---
 .../build_a_static_version_in_react.css       |  15 ++
 .../start_with_the_mockup.json                |  38 +++++
 .../build_a_static_version_in_react.py        |  73 +++++++++
 docs/src/learn/thinking-in-react.md           | 155 +++---------------
 docs/src/static/css/extra.css                 |  28 +++-
 5 files changed, 170 insertions(+), 139 deletions(-)
 create mode 100644 docs/examples/css/thinking_in_react/build_a_static_version_in_react.css
 create mode 100644 docs/examples/json/thinking_in_react/start_with_the_mockup.json
 create mode 100644 docs/examples/python/thinking_in_react/build_a_static_version_in_react.py

diff --git a/docs/examples/css/thinking_in_react/build_a_static_version_in_react.css b/docs/examples/css/thinking_in_react/build_a_static_version_in_react.css
new file mode 100644
index 000000000..5b8624389
--- /dev/null
+++ b/docs/examples/css/thinking_in_react/build_a_static_version_in_react.css
@@ -0,0 +1,15 @@
+body {
+	padding: 5px;
+}
+label {
+	display: block;
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+th {
+	padding-top: 10px;
+}
+td {
+	padding: 2px;
+	padding-right: 40px;
+}
diff --git a/docs/examples/json/thinking_in_react/start_with_the_mockup.json b/docs/examples/json/thinking_in_react/start_with_the_mockup.json
new file mode 100644
index 000000000..f49a528b0
--- /dev/null
+++ b/docs/examples/json/thinking_in_react/start_with_the_mockup.json
@@ -0,0 +1,38 @@
+[
+	{
+		"category": "Fruits",
+		"price": "$1",
+		"stocked": true,
+		"name": "Apple"
+	},
+	{
+		"category": "Fruits",
+		"price": "$1",
+		"stocked": true,
+		"name": "Dragonfruit"
+	},
+	{
+		"category": "Fruits",
+		"price": "$2",
+		"stocked": false,
+		"name": "Passionfruit"
+	},
+	{
+		"category": "Vegetables",
+		"price": "$2",
+		"stocked": true,
+		"name": "Spinach"
+	},
+	{
+		"category": "Vegetables",
+		"price": "$4",
+		"stocked": false,
+		"name": "Pumpkin"
+	},
+	{
+		"category": "Vegetables",
+		"price": "$1",
+		"stocked": true,
+		"name": "Peas"
+	}
+]
diff --git a/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py b/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py
new file mode 100644
index 000000000..c8c05b64e
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py
@@ -0,0 +1,73 @@
+from reactpy import component, html
+
+
+# start
+@component
+def product_category_row(category):
+    return html.tr(html.th({"colSpan": "2"}, category))
+
+
+@component
+def product_row(product):
+    if product["stocked"]:
+        name = product["name"]
+    else:
+        name = html.span({"style": {"color": "red"}}, product["name"])
+    return html.tr(html.td(name), html.td(product["price"]))
+
+
+@component
+def product_table(products):
+    rows = []
+    last_category = None
+    for product in products:
+        if product["category"] != last_category:
+            rows.append(
+                product_category_row(product["category"], key=product["category"])
+            )
+        rows.append(product_row(product, key=product["name"]))
+        last_category = product["category"]
+
+    return html.table(
+        html.thead(html.tr(html.th("Name"), html.th("Price"))), html.tbody(rows)
+    )
+
+
+@component
+def search_bar():
+    return html.form(
+        html.input({"type": "text", "placeholder": "Search..."}),
+        html.label(html.input({"type": "checkbox"}), "Only show products in stock"),
+    )
+
+
+@component
+def filterable_product_table(products):
+    return html.div(search_bar(), product_table(products))
+
+
+PRODUCTS = [
+    {"category": "Fruits", "price": "$1", "stocked": True, "name": "Apple"},
+    {"category": "Fruits", "price": "$1", "stocked": True, "name": "Dragonfruit"},
+    {"category": "Fruits", "price": "$2", "stocked": False, "name": "Passionfruit"},
+    {"category": "Vegetables", "price": "$2", "stocked": True, "name": "Spinach"},
+    {"category": "Vegetables", "price": "$4", "stocked": False, "name": "Pumpkin"},
+    {"category": "Vegetables", "price": "$1", "stocked": True, "name": "Peas"},
+]
+
+
+@component
+def app():
+    return filterable_product_table(PRODUCTS)
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+    from reactpy.utils import _read_docs_css
+
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), app())
+
+    run(styled_app)
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index 1e99ec5cc..d348e8c87 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -16,35 +16,8 @@ Imagine that you already have a JSON API and a mockup from a designer.
 
 The JSON API returns some data that looks like this:
 
-```json
-[
-	{ "category": "Fruits", "price": "$1", "stocked": true, "name": "Apple" },
-	{
-		"category": "Fruits",
-		"price": "$1",
-		"stocked": true,
-		"name": "Dragonfruit"
-	},
-	{
-		"category": "Fruits",
-		"price": "$2",
-		"stocked": false,
-		"name": "Passionfruit"
-	},
-	{
-		"category": "Vegetables",
-		"price": "$2",
-		"stocked": true,
-		"name": "Spinach"
-	},
-	{
-		"category": "Vegetables",
-		"price": "$4",
-		"stocked": false,
-		"name": "Pumpkin"
-	},
-	{ "category": "Vegetables", "price": "$1", "stocked": true, "name": "Peas" }
-]
+```json linenums="0"
+{% include "../../examples/json/thinking_in_react/start_with_the_mockup.json" %}
 ```
 
 The mockup looks like this:
@@ -91,125 +64,35 @@ Now that you've identified the components in the mockup, arrange them into a hie
 
 Now that you have your component hierarchy, it's time to implement your app. The most straightforward approach is to build a version that renders the UI from your data model without adding any interactivity... yet! It's often easier to build the static version first and add interactivity later. Building a static version requires a lot of typing and no thinking, but adding interactivity requires a lot of thinking and not a lot of typing.
 
-To build a static version of your app that renders your data model, you'll want to build [components](your-first-component.md) that reuse other components and pass data using [props.](/learn/passing-props-to-a-component) Props are a way of passing data from parent to child. (If you're familiar with the concept of [state](/learn/state-a-components-memory), don't use state at all to build this static version. State is reserved only for interactivity, that is, data that changes over time. Since this is a static version of the app, you don't need it.)
+To build a static version of your app that renders your data model, you'll want to build [components](your-first-component.md) that reuse other components and pass data using [props.](../learn/passing-props-to-a-component.md) Props are a way of passing data from parent to child. (If you're familiar with the concept of [state](../learn/state-a-components-memory.md), don't use state at all to build this static version. State is reserved only for interactivity, that is, data that changes over time. Since this is a static version of the app, you don't need it.)
 
 You can either build "top down" by starting with building the components higher up in the hierarchy (like `filterable_product_table`) or "bottom up" by working from components lower down (like `product_row`). In simpler examples, it’s usually easier to go top-down, and on larger projects, it’s easier to go bottom-up.
 
-```jsx
-function product_category_row({ category }) {
-	return (
-		<tr>
-			<th colSpan="2">{category}</th>
-		</tr>
-	);
-}
+=== "app.py"
 
-function product_row({ product }) {
-	const name = product.stocked ? (
-		product.name
-	) : (
-		<span style={{ color: "red" }}>{product.name}</span>
-	);
+	```python
+	{% include "../../examples/python/thinking_in_react/build_a_static_version_in_react.py" start="# start" end="# end" %}
+	```
 
-	return (
-		<tr>
-			<td>{name}</td>
-			<td>{product.price}</td>
-		</tr>
-	);
-}
+=== "styles.css"
 
-function product_table({ products }) {
-	const rows = [];
-	let lastCategory = null;
+	```css
+	{% include "../../examples/css/thinking_in_react/build_a_static_version_in_react.css" %}
+	```
 
-	products.forEach((product) => {
-		if (product.category !== lastCategory) {
-			rows.push(
-				<product_category_row
-					category={product.category}
-					key={product.category}
-				/>
-			);
-		}
-		rows.push(<product_row product={product} key={product.name} />);
-		lastCategory = product.category;
-	});
-
-	return (
-		<table>
-			<thead>
-				<tr>
-					<th>Name</th>
-					<th>Price</th>
-				</tr>
-			</thead>
-			<tbody>{rows}</tbody>
-		</table>
-	);
-}
-
-function search_bar() {
-	return (
-		<form>
-			<input type="text" placeholder="Search..." />
-			<label>
-				<input type="checkbox" /> Only show products in stock
-			</label>
-		</form>
-	);
-}
-
-function filterable_product_table({ products }) {
-	return (
-		<div>
-			<search_bar />
-			<product_table products={products} />
-		</div>
-	);
-}
-
-const PRODUCTS = [
-	{ category: "Fruits", price: "$1", stocked: true, name: "Apple" },
-	{ category: "Fruits", price: "$1", stocked: true, name: "Dragonfruit" },
-	{ category: "Fruits", price: "$2", stocked: false, name: "Passionfruit" },
-	{ category: "Vegetables", price: "$2", stocked: true, name: "Spinach" },
-	{ category: "Vegetables", price: "$4", stocked: false, name: "Pumpkin" },
-	{ category: "Vegetables", price: "$1", stocked: true, name: "Peas" },
-];
-
-export default function App() {
-	return <filterable_product_table products={PRODUCTS} />;
-}
-```
-
-```css
-body {
-	padding: 5px;
-}
-label {
-	display: block;
-	margin-top: 5px;
-	margin-bottom: 5px;
-}
-th {
-	padding-top: 10px;
-}
-td {
-	padding: 2px;
-	padding-right: 40px;
-}
-```
+=== ":material-play: Run"
 
-(If this code looks intimidating, go through the [Quick Start](/learn/) first!)
+    ```python
+    # TODO
+    ```
 
-After building your components, you'll have a library of reusable components that render your data model. Because this is a static app, the components will only return JSX. The component at the top of the hierarchy (`filterable_product_table`) will take your data model as a prop. This is called _one-way data flow_ because the data flows down from the top-level component to the ones at the bottom of the tree.
+(If this code looks intimidating, go through the [Quick Start](../learn/get-started.md) first!)
 
-<Pitfall>
+After building your components, you'll have a library of reusable components that render your data model. Because this is a static app, the components will only return non-interactive HTML. The component at the top of the hierarchy (`filterable_product_table`) will take your data model as a prop. This is called _one-way data flow_ because the data flows down from the top-level component to the ones at the bottom of the tree.
 
-At this point, you should not be using any state values. That’s for the next step!
+!!! warning "Pitfall"
 
-</Pitfall>
+	At this point, you should not be using any state values. That’s for the next step!
 
 ## Step 3: Find the minimal but complete representation of UI state
 
diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
index 58c9496c0..2d8acff73 100644
--- a/docs/src/static/css/extra.css
+++ b/docs/src/static/css/extra.css
@@ -105,9 +105,31 @@
 	background-color: rgb(68 172 153);
 }
 
-.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before {
-    -webkit-mask-image: var(--md-admonition-icon--abstract);
-    mask-image: var(--md-admonition-icon--abstract)
+.md-typeset .note > .admonition-title:before,
+.md-typeset .note > summary:before {
+	-webkit-mask-image: var(--md-admonition-icon--abstract);
+	mask-image: var(--md-admonition-icon--abstract);
+}
+
+/* Colors for "warning" admonition */
+[data-md-color-scheme="slate"] .md-typeset .admonition.warning,
+[data-md-color-scheme="slate"] .md-typeset details.warning {
+	background: rgb(182 87 0 / 0.2);
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .warning .admonition-title,
+[data-md-color-scheme="slate"] .md-typeset .warning summary {
+	font-size: 1rem;
+	background: transparent;
+	padding-bottom: 0;
+	color: rgb(219 125 39);
+}
+
+[data-md-color-scheme="slate"] .md-typeset .warning .admonition-title:before {
+	font-size: 1.1rem;
+	background-color: rgb(219 125 39);
 }
 
 /* Move the sidebars to the edges of the page */

From e4be2995d9afbc26e83365637a9c66b782ec0068 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 00:01:24 -0700
Subject: [PATCH 18/49] Find the minimal but complete representation of UI
 state

---
 docs/src/learn/thinking-in-react.md | 28 ++++++------
 docs/src/static/css/extra.css       | 71 ++++++++++++-----------------
 2 files changed, 43 insertions(+), 56 deletions(-)

diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index d348e8c87..770a45944 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -70,15 +70,15 @@ You can either build "top down" by starting with building the components higher
 
 === "app.py"
 
-	```python
-	{% include "../../examples/python/thinking_in_react/build_a_static_version_in_react.py" start="# start" end="# end" %}
-	```
+    ```python
+    {% include "../../examples/python/thinking_in_react/build_a_static_version_in_react.py" start="# start" end="# end" %}
+    ```
 
 === "styles.css"
 
-	```css
-	{% include "../../examples/css/thinking_in_react/build_a_static_version_in_react.css" %}
-	```
+    ```css
+    {% include "../../examples/css/thinking_in_react/build_a_static_version_in_react.css" %}
+    ```
 
 === ":material-play: Run"
 
@@ -92,7 +92,7 @@ After building your components, you'll have a library of reusable components tha
 
 !!! warning "Pitfall"
 
-	At this point, you should not be using any state values. That’s for the next step!
+    At this point, you should not be using any state values. That’s for the next step!
 
 ## Step 3: Find the minimal but complete representation of UI state
 
@@ -124,18 +124,16 @@ Let's go through them one by one again:
 
 This means only the search text and the value of the checkbox are state! Nicely done!
 
-<DeepDive>
-
-#### Props vs State
+!!! info "Deep Dive"
 
-There are two types of "model" data in React: props and state. The two are very different:
+    <font size="4">**Props vs State**</font>
 
--   [**Props** are like arguments you pass](/learn/passing-props-to-a-component) to a function. They let a parent component pass data to a child component and customize its appearance. For example, a `Form` can pass a `color` prop to a `Button`.
--   [**State** is like a component’s memory.](/learn/state-a-components-memory) It lets a component keep track of some information and change it in response to interactions. For example, a `Button` might keep track of `isHovered` state.
+	There are two types of "model" data in React: props and state. The two are very different:
 
-Props and state are different, but they work together. A parent component will often keep some information in state (so that it can change it), and _pass it down_ to child components as their props. It's okay if the difference still feels fuzzy on the first read. It takes a bit of practice for it to really stick!
+	-   [**Props** are like arguments you pass](../learn/passing-props-to-a-component.md) to a function. They let a parent component pass data to a child component and customize its appearance. For example, a `html.form` can pass a `color` prop to a `html.button`.
+	-   [**State** is like a component’s memory.](../learn/state-a-components-memory.md) It lets a component keep track of some information and change it in response to interactions. For example, a `html.button` might keep track of `is_hovered` state.
 
-</DeepDive>
+	Props and state are different, but they work together. A parent component will often keep some information in state (so that it can change it), and _pass it down_ to child components as their props. It's okay if the difference still feels fuzzy on the first read. It takes a bit of practice for it to really stick!
 
 ## Step 4: Identify where your state should live
 
diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
index 2d8acff73..b049a15cd 100644
--- a/docs/src/static/css/extra.css
+++ b/docs/src/static/css/extra.css
@@ -24,51 +24,26 @@
 
 /* General admonition styling */
 /* TODO: Write this in a way that supports the light theme */
-[data-md-color-scheme="slate"]
-	.md-typeset
-	details:not(.warning, .failure, .danger, .bug)
-	> .admonition-title,
-[data-md-color-scheme="slate"]
-	.md-typeset
-	details:not(.warning, .failure, .danger, .bug)
-	> summary {
-	background: var(--md-primary-fg-color) !important;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .admonition,
-[data-md-color-scheme="slate"] .md-typeset details {
+[data-md-color-scheme="slate"] .md-typeset .admonition {
 	border-color: transparent !important;
 }
 
-[data-md-color-scheme="slate"] .md-typeset details > .admonition-title:after,
-[data-md-color-scheme="slate"] .md-typeset details > summary:after {
-	color: var(--md-admonition-fg-color) !important;
+.md-typeset :is(.admonition, details) {
+	margin: 0.55em 0;
 }
 
-.md-typeset .admonition.summary,
-.md-typeset details.summary {
+.md-typeset .admonition {
 	font-size: 0.7rem;
 }
 
-.md-typeset :is(.admonition, details) {
-	margin: 0.55em 0;
-}
-
 /* Colors for "summary" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.summary,
-[data-md-color-scheme="slate"] .md-typeset details.summary {
+[data-md-color-scheme="slate"] .md-typeset .admonition.summary {
 	background: #353a45;
 	padding: 0.8rem 1.4rem;
 	border-radius: 0.8rem;
 }
 
-[data-md-color-scheme="slate"] .md-typeset details.summary > .admonition-title,
-[data-md-color-scheme="slate"] .md-typeset details.summary > summary {
-	background: #353a45 !important;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .summary .admonition-title,
-[data-md-color-scheme="slate"] .md-typeset .summary summary {
+[data-md-color-scheme="slate"] .md-typeset .summary .admonition-title {
 	font-size: 1rem;
 	background: transparent;
 	padding-left: 0.6rem;
@@ -79,21 +54,18 @@
 	display: none;
 }
 
-[data-md-color-scheme="slate"] .md-typeset .admonition.summary,
-[data-md-color-scheme="slate"] .md-typeset .summary details {
+[data-md-color-scheme="slate"] .md-typeset .admonition.summary {
 	border-color: #ffffff17 !important;
 }
 
 /* Colors for "note" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.note,
-[data-md-color-scheme="slate"] .md-typeset details.note {
+[data-md-color-scheme="slate"] .md-typeset .admonition.note {
 	background: rgb(43 110 98/ 0.2);
 	padding: 0.8rem 1.4rem;
 	border-radius: 0.8rem;
 }
 
-[data-md-color-scheme="slate"] .md-typeset .note .admonition-title,
-[data-md-color-scheme="slate"] .md-typeset .note summary {
+[data-md-color-scheme="slate"] .md-typeset .note .admonition-title {
 	font-size: 1rem;
 	background: transparent;
 	padding-bottom: 0;
@@ -112,15 +84,13 @@
 }
 
 /* Colors for "warning" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.warning,
-[data-md-color-scheme="slate"] .md-typeset details.warning {
+[data-md-color-scheme="slate"] .md-typeset .admonition.warning {
 	background: rgb(182 87 0 / 0.2);
 	padding: 0.8rem 1.4rem;
 	border-radius: 0.8rem;
 }
 
-[data-md-color-scheme="slate"] .md-typeset .warning .admonition-title,
-[data-md-color-scheme="slate"] .md-typeset .warning summary {
+[data-md-color-scheme="slate"] .md-typeset .warning .admonition-title {
 	font-size: 1rem;
 	background: transparent;
 	padding-bottom: 0;
@@ -132,6 +102,25 @@
 	background-color: rgb(219 125 39);
 }
 
+/* Colors for "info" admonition */
+[data-md-color-scheme="slate"] .md-typeset .admonition.info {
+	background: rgb(43 52 145 / 0.2);
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .info .admonition-title {
+	font-size: 1rem;
+	background: transparent;
+	padding-bottom: 0;
+	color: rgb(136 145 236);
+}
+
+[data-md-color-scheme="slate"] .md-typeset .info .admonition-title:before {
+	font-size: 1.1rem;
+	background-color: rgb(136 145 236);
+}
+
 /* Move the sidebars to the edges of the page */
 .md-main__inner.md-grid {
 	margin-left: 0;

From 067279fb3d7bd84d6ef52108daa62789240db113 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 01:43:24 -0700
Subject: [PATCH 19/49] Identify where your state should live

---
 .../identify_where_your_state_should_live.css |  14 ++
 .../python/thinking_in_react/error_example.py |  19 ++
 .../identify_where_your_state_should_live.py  | 101 ++++++++
 .../python/thinking_in_react/use_state.py     |   8 +
 .../use_state_with_components.py              |  17 ++
 docs/src/learn/thinking-in-react.md           | 234 ++++--------------
 6 files changed, 213 insertions(+), 180 deletions(-)
 create mode 100644 docs/examples/css/thinking_in_react/identify_where_your_state_should_live.css
 create mode 100644 docs/examples/python/thinking_in_react/error_example.py
 create mode 100644 docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
 create mode 100644 docs/examples/python/thinking_in_react/use_state.py
 create mode 100644 docs/examples/python/thinking_in_react/use_state_with_components.py

diff --git a/docs/examples/css/thinking_in_react/identify_where_your_state_should_live.css b/docs/examples/css/thinking_in_react/identify_where_your_state_should_live.css
new file mode 100644
index 000000000..b811252a1
--- /dev/null
+++ b/docs/examples/css/thinking_in_react/identify_where_your_state_should_live.css
@@ -0,0 +1,14 @@
+body {
+	padding: 5px;
+}
+label {
+	display: block;
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+th {
+	padding-top: 5px;
+}
+td {
+	padding: 2px;
+}
diff --git a/docs/examples/python/thinking_in_react/error_example.py b/docs/examples/python/thinking_in_react/error_example.py
new file mode 100644
index 000000000..e1ae45c3c
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/error_example.py
@@ -0,0 +1,19 @@
+from reactpy import component, html
+
+
+# start
+@component
+def search_bar(filter_text, in_stock_only):
+    return html.form(
+        html.input(
+            {
+                "type": "text",
+                "value": filter_text,
+                "placeholder": "Search...",
+            }
+        ),
+        html.p(
+            html.input({"type": "checkbox", "checked": in_stock_only}),
+            "Only show products in stock",
+        ),
+    )
diff --git a/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py b/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
new file mode 100644
index 000000000..c8d897cbc
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
@@ -0,0 +1,101 @@
+from reactpy import component, html, use_state
+
+
+# start
+@component
+def filterable_product_table(products):
+    filter_text, set_filter_text = use_state("")
+    in_stock_only, set_in_stock_only = use_state(False)
+
+    return html.div(
+        search_bar(filter_text=filter_text, in_stock_only=in_stock_only),
+        product_table(
+            products=products, filter_text=filter_text, in_stock_only=in_stock_only
+        ),
+    )
+
+
+@component
+def product_category_row(category):
+    return html.tr(
+        html.th({"colspan": 2}, category),
+    )
+
+
+@component
+def product_row(product):
+    if product["stocked"]:
+        name = product["name"]
+    else:
+        name = html.span({"style": {"color": "red"}}, product["name"])
+
+    return html.tr(
+        html.td(name),
+        html.td(product["price"]),
+    )
+
+
+@component
+def product_table(products, filter_text, in_stock_only):
+    rows = []
+    last_category = None
+
+    for product in products:
+        if filter_text.lower() not in product["name"].lower():
+            continue
+        if in_stock_only and not product["stocked"]:
+            continue
+        if product["category"] != last_category:
+            rows.append(
+                product_category_row(product["category"], key=product["category"])
+            )
+        rows.append(product_row(product, key=product["name"]))
+        last_category = product["category"]
+
+    return html.table(
+        html.thead(
+            html.tr(
+                html.th("Name"),
+                html.th("Price"),
+            ),
+        ),
+        html.tbody(rows),
+    )
+
+
+@component
+def search_bar(filter_text, in_stock_only):
+    return html.form(
+        html.input({"type": "text", "value": filter_text, "placeholder": "Search..."}),
+        html.label(
+            html.input({"type": "checkbox", "checked": in_stock_only}),
+            "Only show products in stock",
+        ),
+    )
+
+
+PRODUCTS = [
+    {"category": "Fruits", "price": "$1", "stocked": True, "name": "Apple"},
+    {"category": "Fruits", "price": "$1", "stocked": True, "name": "Dragonfruit"},
+    {"category": "Fruits", "price": "$2", "stocked": False, "name": "Passionfruit"},
+    {"category": "Vegetables", "price": "$2", "stocked": True, "name": "Spinach"},
+    {"category": "Vegetables", "price": "$4", "stocked": False, "name": "Pumpkin"},
+    {"category": "Vegetables", "price": "$1", "stocked": True, "name": "Peas"},
+]
+
+
+@component
+def app():
+    return filterable_product_table(PRODUCTS)
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+    from reactpy.utils import _read_docs_css
+
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), app())
+
+    run(styled_app)
diff --git a/docs/examples/python/thinking_in_react/use_state.py b/docs/examples/python/thinking_in_react/use_state.py
new file mode 100644
index 000000000..437554974
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/use_state.py
@@ -0,0 +1,8 @@
+from reactpy import component, use_state
+
+
+# start
+@component
+def filterable_product_table(products):
+    filter_text, set_filter_text = use_state("")
+    in_stock_only, set_in_stock_only = use_state(False)
diff --git a/docs/examples/python/thinking_in_react/use_state_with_components.py b/docs/examples/python/thinking_in_react/use_state_with_components.py
new file mode 100644
index 000000000..2964929ea
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/use_state_with_components.py
@@ -0,0 +1,17 @@
+from reactpy import html
+
+filter_text = ""
+in_stock_only = False
+products = ()
+
+def search_bar(**_kw):
+    ...
+
+def product_table(**_kw):
+    ...
+
+# start
+html.div(
+    search_bar(filter_text=filter_text, in_stock_only=in_stock_only),
+    product_table(products=products, filter_text=filter_text, in_stock_only=in_stock_only),
+)
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index 770a45944..c95f46fbd 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -142,7 +142,7 @@ After identifying your app’s minimal state data, you need to identify which co
 For each piece of state in your application:
 
 1. Identify _every_ component that renders something based on that state.
-2. Find their closest common parent component--a component above them all in the hierarchy.
+2. Find their closest common parent component—a component above them all in the hierarchy.
 3. Decide where the state should live:
     1. Often, you can put the state directly into their common parent.
     2. You can also put the state into some component above their common parent.
@@ -160,170 +160,44 @@ Now let's run through our strategy for them:
 
 So the state values will live in `filterable_product_table`.
 
-Add state to the component with the [`useState()` Hook.](/reference/react/useState) Hooks are special functions that let you "hook into" React. Add two state variables at the top of `filterable_product_table` and specify their initial state:
+Add state to the component with the [`use_state()` Hook.](../reference/use-state.md) Hooks are special functions that let you "hook into" React. Add two state variables at the top of `filterable_product_table` and specify their initial state:
 
-```js
-function filterable_product_table({ products }) {
-  const [filterText, setFilterText] = useState('');
-  const [inStockOnly, setInStockOnly] = useState(false);
+```python linenums="0"
+{% include "../../examples/python/thinking_in_react/use_state.py" start="# start" %}
 ```
 
-Then, pass `filterText` and `inStockOnly` to `product_table` and `search_bar` as props:
+Then, pass `filter_text` and `in_stock_only` to `product_table` and `search_bar` as props:
 
-```js
-<div>
-	<search_bar filterText={filterText} inStockOnly={inStockOnly} />
-	<product_table
-		products={products}
-		filterText={filterText}
-		inStockOnly={inStockOnly}
-	/>
-</div>
+```python linenums="0"
+{% include "../../examples/python/thinking_in_react/use_state_with_components.py" start="# start" %}
 ```
 
-You can start seeing how your application will behave. Edit the `filterText` initial value from `useState('')` to `useState('fruit')` in the sandbox code below. You'll see both the search input text and the table update:
-
-```jsx
-import { useState } from "react";
-
-function filterable_product_table({ products }) {
-	const [filterText, setFilterText] = useState("");
-	const [inStockOnly, setInStockOnly] = useState(false);
-
-	return (
-		<div>
-			<search_bar filterText={filterText} inStockOnly={inStockOnly} />
-			<product_table
-				products={products}
-				filterText={filterText}
-				inStockOnly={inStockOnly}
-			/>
-		</div>
-	);
-}
-
-function product_category_row({ category }) {
-	return (
-		<tr>
-			<th colSpan="2">{category}</th>
-		</tr>
-	);
-}
+You can start seeing how your application will behave. Edit the `filter_text` initial value from `use_state('')` to `use_state('fruit')` in the sandbox code below. You'll see both the search input text and the table update:
 
-function product_row({ product }) {
-	const name = product.stocked ? (
-		product.name
-	) : (
-		<span style={{ color: "red" }}>{product.name}</span>
-	);
-
-	return (
-		<tr>
-			<td>{name}</td>
-			<td>{product.price}</td>
-		</tr>
-	);
-}
-
-function product_table({ products, filterText, inStockOnly }) {
-	const rows = [];
-	let lastCategory = null;
-
-	products.forEach((product) => {
-		if (
-			product.name.toLowerCase().indexOf(filterText.toLowerCase()) === -1
-		) {
-			return;
-		}
-		if (inStockOnly && !product.stocked) {
-			return;
-		}
-		if (product.category !== lastCategory) {
-			rows.push(
-				<product_category_row
-					category={product.category}
-					key={product.category}
-				/>
-			);
-		}
-		rows.push(<product_row product={product} key={product.name} />);
-		lastCategory = product.category;
-	});
-
-	return (
-		<table>
-			<thead>
-				<tr>
-					<th>Name</th>
-					<th>Price</th>
-				</tr>
-			</thead>
-			<tbody>{rows}</tbody>
-		</table>
-	);
-}
-
-function search_bar({ filterText, inStockOnly }) {
-	return (
-		<form>
-			<input type="text" value={filterText} placeholder="Search..." />
-			<label>
-				<input type="checkbox" checked={inStockOnly} /> Only show
-				products in stock
-			</label>
-		</form>
-	);
-}
-
-const PRODUCTS = [
-	{ category: "Fruits", price: "$1", stocked: true, name: "Apple" },
-	{ category: "Fruits", price: "$1", stocked: true, name: "Dragonfruit" },
-	{ category: "Fruits", price: "$2", stocked: false, name: "Passionfruit" },
-	{ category: "Vegetables", price: "$2", stocked: true, name: "Spinach" },
-	{ category: "Vegetables", price: "$4", stocked: false, name: "Pumpkin" },
-	{ category: "Vegetables", price: "$1", stocked: true, name: "Peas" },
-];
+=== "app.py"
 
-export default function App() {
-	return <filterable_product_table products={PRODUCTS} />;
-}
-```
+	```python
+	{% include "../../examples/python/thinking_in_react/identify_where_your_state_should_live.py" start="# start" end="# end" %}
+	```
 
-```css
-body {
-	padding: 5px;
-}
-label {
-	display: block;
-	margin-top: 5px;
-	margin-bottom: 5px;
-}
-th {
-	padding-top: 5px;
-}
-td {
-	padding: 2px;
-}
-```
+=== "styles.css"
 
-Notice that editing the form doesn't work yet. There is a console error in the sandbox above explaining why:
+	```css
+	{% include "../../examples/css/thinking_in_react/identify_where_your_state_should_live.css" %}
+	```
 
-<ConsoleBlock level="error">
+=== ":material-play: Run"
 
-You provided a \`value\` prop to a form field without an \`onChange\` handler. This will render a read-only field.
+    ```python
+    # TODO
+    ```
 
-</ConsoleBlock>
+Notice that editing the form doesn't work yet.
 
-In the sandbox above, `product_table` and `search_bar` read the `filterText` and `inStockOnly` props to render the table, the input, and the checkbox. For example, here is how `search_bar` populates the input value:
+In the code above, `product_table` and `search_bar` read the `filter_text` and `in_stock_only` props to render the table, the input, and the checkbox. For example, here is how `search_bar` populates the input value:
 
-```js
-function search_bar({ filterText, inStockOnly }) {
-  return (
-    <form>
-      <input
-        type="text"
-        value={filterText}
-        placeholder="Search..."/>
+```python linenums="0" hl_lines="2 7"
+{% include "../../examples/python/thinking_in_react/error_example.py" start="# start" %}
 ```
 
 However, you haven't added any code to respond to the user actions like typing yet. This will be your final step.
@@ -332,22 +206,22 @@ However, you haven't added any code to respond to the user actions like typing y
 
 Currently your app renders correctly with props and state flowing down the hierarchy. But to change the state according to user input, you will need to support data flowing the other way: the form components deep in the hierarchy need to update the state in `filterable_product_table`.
 
-React makes this data flow explicit, but it requires a little more typing than two-way data binding. If you try to type or check the box in the example above, you'll see that React ignores your input. This is intentional. By writing `<input value={filterText} />`, you've set the `value` prop of the `input` to always be equal to the `filterText` state passed in from `filterable_product_table`. Since `filterText` state is never set, the input never changes.
+React makes this data flow explicit, but it requires a little more typing than two-way data binding. If you try to type or check the box in the example above, you'll see that React ignores your input. This is intentional. By writing `<input value={filter_text} />`, you've set the `value` prop of the `input` to always be equal to the `filter_text` state passed in from `filterable_product_table`. Since `filter_text` state is never set, the input never changes.
 
-You want to make it so whenever the user changes the form inputs, the state updates to reflect those changes. The state is owned by `filterable_product_table`, so only it can call `setFilterText` and `setInStockOnly`. To let `search_bar` update the `filterable_product_table`'s state, you need to pass these functions down to `search_bar`:
+You want to make it so whenever the user changes the form inputs, the state updates to reflect those changes. The state is owned by `filterable_product_table`, so only it can call `set_filter_text` and `set_in_stock_only`. To let `search_bar` update the `filterable_product_table`'s state, you need to pass these functions down to `search_bar`:
 
 ```js
 function filterable_product_table({ products }) {
-  const [filterText, setFilterText] = useState('');
-  const [inStockOnly, setInStockOnly] = useState(false);
+  const [filter_text, set_filter_text] = use_state('');
+  const [in_stock_only, set_in_stock_only] = use_state(false);
 
   return (
     <div>
       <search_bar
-        filterText={filterText}
-        inStockOnly={inStockOnly}
-        onFilterTextChange={setFilterText}
-        onInStockOnlyChange={setInStockOnly} />
+        filter_text={filter_text}
+        in_stock_only={in_stock_only}
+        onfilter_textChange={set_filter_text}
+        onin_stock_onlyChange={set_in_stock_only} />
 ```
 
 Inside the `search_bar`, you will add the `onChange` event handlers and set the parent state from them:
@@ -355,33 +229,33 @@ Inside the `search_bar`, you will add the `onChange` event handlers and set the
 ```js
 <input
 	type="text"
-	value={filterText}
+	value={filter_text}
 	placeholder="Search..."
-	onChange={(e) => onFilterTextChange(e.target.value)}
+	onChange={(e) => onfilter_textChange(e.target.value)}
 />
 ```
 
 Now the application fully works!
 
 ```jsx
-import { useState } from "react";
+import { use_state } from "react";
 
 function filterable_product_table({ products }) {
-	const [filterText, setFilterText] = useState("");
-	const [inStockOnly, setInStockOnly] = useState(false);
+	const [filter_text, set_filter_text] = use_state("");
+	const [in_stock_only, set_in_stock_only] = use_state(false);
 
 	return (
 		<div>
 			<search_bar
-				filterText={filterText}
-				inStockOnly={inStockOnly}
-				onFilterTextChange={setFilterText}
-				onInStockOnlyChange={setInStockOnly}
+				filter_text={filter_text}
+				in_stock_only={in_stock_only}
+				onfilter_textChange={set_filter_text}
+				onin_stock_onlyChange={set_in_stock_only}
 			/>
 			<product_table
 				products={products}
-				filterText={filterText}
-				inStockOnly={inStockOnly}
+				filter_text={filter_text}
+				in_stock_only={in_stock_only}
 			/>
 		</div>
 	);
@@ -410,17 +284,17 @@ function product_row({ product }) {
 	);
 }
 
-function product_table({ products, filterText, inStockOnly }) {
+function product_table({ products, filter_text, in_stock_only }) {
 	const rows = [];
 	let lastCategory = null;
 
 	products.forEach((product) => {
 		if (
-			product.name.toLowerCase().indexOf(filterText.toLowerCase()) === -1
+			product.name.toLowerCase().indexOf(filter_text.toLowerCase()) === -1
 		) {
 			return;
 		}
-		if (inStockOnly && !product.stocked) {
+		if (in_stock_only && !product.stocked) {
 			return;
 		}
 		if (product.category !== lastCategory) {
@@ -449,24 +323,24 @@ function product_table({ products, filterText, inStockOnly }) {
 }
 
 function search_bar({
-	filterText,
-	inStockOnly,
-	onFilterTextChange,
-	onInStockOnlyChange,
+	filter_text,
+	in_stock_only,
+	onfilter_textChange,
+	onin_stock_onlyChange,
 }) {
 	return (
 		<form>
 			<input
 				type="text"
-				value={filterText}
+				value={filter_text}
 				placeholder="Search..."
-				onChange={(e) => onFilterTextChange(e.target.value)}
+				onChange={(e) => onfilter_textChange(e.target.value)}
 			/>
 			<label>
 				<input
 					type="checkbox"
-					checked={inStockOnly}
-					onChange={(e) => onInStockOnlyChange(e.target.checked)}
+					checked={in_stock_only}
+					onChange={(e) => onin_stock_onlyChange(e.target.checked)}
 				/>{" "}
 				Only show products in stock
 			</label>

From 3a0d107b749a49272cae6a42e3b816bc14d0c81a Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 02:11:52 -0700
Subject: [PATCH 20/49] Thinking in React

---
 .../add_inverse_data_flow.css                 |  14 ++
 .../add_inverse_data_flow.py                  | 121 ++++++++++
 .../thinking_in_react/event_handlers.py       |  18 ++
 .../thinking_in_react/set_state_props.py      |  32 +++
 docs/src/learn/thinking-in-react.md           | 209 +++---------------
 5 files changed, 221 insertions(+), 173 deletions(-)
 create mode 100644 docs/examples/css/thinking_in_react/add_inverse_data_flow.css
 create mode 100644 docs/examples/python/thinking_in_react/add_inverse_data_flow.py
 create mode 100644 docs/examples/python/thinking_in_react/event_handlers.py
 create mode 100644 docs/examples/python/thinking_in_react/set_state_props.py

diff --git a/docs/examples/css/thinking_in_react/add_inverse_data_flow.css b/docs/examples/css/thinking_in_react/add_inverse_data_flow.css
new file mode 100644
index 000000000..4be625123
--- /dev/null
+++ b/docs/examples/css/thinking_in_react/add_inverse_data_flow.css
@@ -0,0 +1,14 @@
+body {
+    padding: 5px;
+}
+label {
+    display: block;
+    margin-top: 5px;
+    margin-bottom: 5px;
+}
+th {
+    padding: 4px;
+}
+td {
+    padding: 2px;
+}
diff --git a/docs/examples/python/thinking_in_react/add_inverse_data_flow.py b/docs/examples/python/thinking_in_react/add_inverse_data_flow.py
new file mode 100644
index 000000000..e899cf913
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/add_inverse_data_flow.py
@@ -0,0 +1,121 @@
+from reactpy import component, html, use_state
+
+
+# start
+@component
+def filterable_product_table(products):
+    filter_text, set_filter_text = use_state("")
+    in_stock_only, set_in_stock_only = use_state(False)
+
+    return html.div(
+        search_bar(
+            filter_text=filter_text,
+            in_stock_only=in_stock_only,
+            set_filter_text=set_filter_text,
+            set_in_stock_only=set_in_stock_only,
+        ),
+        product_table(
+            products=products, filter_text=filter_text, in_stock_only=in_stock_only
+        ),
+    )
+
+
+@component
+def product_category_row(category):
+    return html.tr(
+        html.th({"colspan": 2}, category),
+    )
+
+
+@component
+def product_row(product):
+    if product["stocked"]:
+        name = product["name"]
+    else:
+        name = html.span({"style": {"color": "red"}}, product["name"])
+
+    return html.tr(
+        html.td(name),
+        html.td(product["price"]),
+    )
+
+
+@component
+def product_table(products, filter_text, in_stock_only):
+    rows = []
+    last_category = None
+
+    for product in products:
+        if filter_text.lower() not in product["name"].lower():
+            continue
+        if in_stock_only and not product["stocked"]:
+            continue
+        if product["category"] != last_category:
+            rows.append(
+                product_category_row(product["category"], key=product["category"])
+            )
+        rows.append(product_row(product, key=product["name"]))
+        last_category = product["category"]
+
+    return html.table(
+        html.thead(
+            html.tr(
+                html.th("Name"),
+                html.th("Price"),
+            ),
+        ),
+        html.tbody(rows),
+    )
+
+
+@component
+def search_bar(filter_text, in_stock_only, set_filter_text, set_in_stock_only):
+    return html.form(
+        html.input(
+            {
+                "type": "text",
+                "value": filter_text,
+                "placeholder": "Search...",
+                "on_change": lambda event: set_filter_text(event["target"]["value"]),
+            }
+        ),
+        html.label(
+            html.input(
+                {
+                    "type": "checkbox",
+                    "checked": in_stock_only,
+                    "on_change": lambda event: set_in_stock_only(
+                        event["target"]["checked"]
+                    ),
+                }
+            ),
+            "Only show products in stock",
+        ),
+    )
+
+
+PRODUCTS = [
+    {"category": "Fruits", "price": "$1", "stocked": True, "name": "Apple"},
+    {"category": "Fruits", "price": "$1", "stocked": True, "name": "Dragonfruit"},
+    {"category": "Fruits", "price": "$2", "stocked": False, "name": "Passionfruit"},
+    {"category": "Vegetables", "price": "$2", "stocked": True, "name": "Spinach"},
+    {"category": "Vegetables", "price": "$4", "stocked": False, "name": "Pumpkin"},
+    {"category": "Vegetables", "price": "$1", "stocked": True, "name": "Peas"},
+]
+
+
+@component
+def app():
+    return filterable_product_table(PRODUCTS)
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+    from reactpy.utils import _read_docs_css
+
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), app())
+
+    run(styled_app)
diff --git a/docs/examples/python/thinking_in_react/event_handlers.py b/docs/examples/python/thinking_in_react/event_handlers.py
new file mode 100644
index 000000000..a97358c10
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/event_handlers.py
@@ -0,0 +1,18 @@
+from reactpy import html
+
+filter_text = ""
+
+
+def set_filter_text(value):
+    ...
+
+
+# start
+html.input(
+    {
+        "type": "text",
+        "value": filter_text,
+        "placeholder": "Search...",
+        "on_change": lambda event: set_filter_text(event["target"]["value"]),
+    }
+)
diff --git a/docs/examples/python/thinking_in_react/set_state_props.py b/docs/examples/python/thinking_in_react/set_state_props.py
new file mode 100644
index 000000000..bbd601416
--- /dev/null
+++ b/docs/examples/python/thinking_in_react/set_state_props.py
@@ -0,0 +1,32 @@
+# function filterable_product_table({ products }) {
+#   const [filter_text, set_filter_text] = use_state('');
+#   const [in_stock_only, set_in_stock_only] = use_state(false);
+
+#   return (
+#     <div>
+#       <search_bar
+#         filter_text={filter_text}
+#         in_stock_only={in_stock_only}
+#         on_filter_text_change={set_filter_text}
+#         on_in_stock_only_change={set_in_stock_only} />
+
+from reactpy import component, hooks, html
+
+
+def search_bar(**_kws):
+    ...
+
+# start
+@component
+def filterable_product_table(products):
+    filter_text, set_filter_text = hooks.use_state("")
+    in_stock_only, set_in_stock_only = hooks.use_state(False)
+
+    return html.div(
+        search_bar(
+            filter_text=filter_text,
+            in_stock_only=in_stock_only,
+            set_filter_text=set_filter_text,
+            set_in_stock_only=set_in_stock_only
+        )
+    )
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index c95f46fbd..66bc5a581 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -1,5 +1,5 @@
 ---
-title: Thinking in React 🚧
+title: Thinking in React
 ---
 
 ## Overview
@@ -128,12 +128,12 @@ This means only the search text and the value of the checkbox are state! Nicely
 
     <font size="4">**Props vs State**</font>
 
-	There are two types of "model" data in React: props and state. The two are very different:
+    There are two types of "model" data in React: props and state. The two are very different:
 
-	-   [**Props** are like arguments you pass](../learn/passing-props-to-a-component.md) to a function. They let a parent component pass data to a child component and customize its appearance. For example, a `html.form` can pass a `color` prop to a `html.button`.
-	-   [**State** is like a component’s memory.](../learn/state-a-components-memory.md) It lets a component keep track of some information and change it in response to interactions. For example, a `html.button` might keep track of `is_hovered` state.
+    -   [**Props** are like arguments you pass](../learn/passing-props-to-a-component.md) to a function. They let a parent component pass data to a child component and customize its appearance. For example, a `html.form` can pass a `color` prop to a `html.button`.
+    -   [**State** is like a component’s memory.](../learn/state-a-components-memory.md) It lets a component keep track of some information and change it in response to interactions. For example, a `html.button` might keep track of `is_hovered` state.
 
-	Props and state are different, but they work together. A parent component will often keep some information in state (so that it can change it), and _pass it down_ to child components as their props. It's okay if the difference still feels fuzzy on the first read. It takes a bit of practice for it to really stick!
+    Props and state are different, but they work together. A parent component will often keep some information in state (so that it can change it), and _pass it down_ to child components as their props. It's okay if the difference still feels fuzzy on the first read. It takes a bit of practice for it to really stick!
 
 ## Step 4: Identify where your state should live
 
@@ -176,15 +176,15 @@ You can start seeing how your application will behave. Edit the `filter_text` in
 
 === "app.py"
 
-	```python
-	{% include "../../examples/python/thinking_in_react/identify_where_your_state_should_live.py" start="# start" end="# end" %}
-	```
+    ```python
+    {% include "../../examples/python/thinking_in_react/identify_where_your_state_should_live.py" start="# start" end="# end" %}
+    ```
 
 === "styles.css"
 
-	```css
-	{% include "../../examples/css/thinking_in_react/identify_where_your_state_should_live.css" %}
-	```
+    ```css
+    {% include "../../examples/css/thinking_in_react/identify_where_your_state_should_live.css" %}
+    ```
 
 === ":material-play: Run"
 
@@ -210,177 +210,40 @@ React makes this data flow explicit, but it requires a little more typing than t
 
 You want to make it so whenever the user changes the form inputs, the state updates to reflect those changes. The state is owned by `filterable_product_table`, so only it can call `set_filter_text` and `set_in_stock_only`. To let `search_bar` update the `filterable_product_table`'s state, you need to pass these functions down to `search_bar`:
 
-```js
-function filterable_product_table({ products }) {
-  const [filter_text, set_filter_text] = use_state('');
-  const [in_stock_only, set_in_stock_only] = use_state(false);
-
-  return (
-    <div>
-      <search_bar
-        filter_text={filter_text}
-        in_stock_only={in_stock_only}
-        onfilter_textChange={set_filter_text}
-        onin_stock_onlyChange={set_in_stock_only} />
+```python linenums="0" hl_lines="3-4 10-11"
+{% include "../../examples/python/thinking_in_react/set_state_props.py" start="# start" %}
 ```
 
-Inside the `search_bar`, you will add the `onChange` event handlers and set the parent state from them:
+Inside the `search_bar`, you will add the `on_change` event handlers and set the parent state from them:
 
-```js
-<input
-	type="text"
-	value={filter_text}
-	placeholder="Search..."
-	onChange={(e) => onfilter_textChange(e.target.value)}
-/>
+```python linenums="0" hl_lines="6"
+{% include "../../examples/python/thinking_in_react/event_handlers.py" start="# start" %}
 ```
 
 Now the application fully works!
 
-```jsx
-import { use_state } from "react";
-
-function filterable_product_table({ products }) {
-	const [filter_text, set_filter_text] = use_state("");
-	const [in_stock_only, set_in_stock_only] = use_state(false);
-
-	return (
-		<div>
-			<search_bar
-				filter_text={filter_text}
-				in_stock_only={in_stock_only}
-				onfilter_textChange={set_filter_text}
-				onin_stock_onlyChange={set_in_stock_only}
-			/>
-			<product_table
-				products={products}
-				filter_text={filter_text}
-				in_stock_only={in_stock_only}
-			/>
-		</div>
-	);
-}
-
-function product_category_row({ category }) {
-	return (
-		<tr>
-			<th colSpan="2">{category}</th>
-		</tr>
-	);
-}
-
-function product_row({ product }) {
-	const name = product.stocked ? (
-		product.name
-	) : (
-		<span style={{ color: "red" }}>{product.name}</span>
-	);
-
-	return (
-		<tr>
-			<td>{name}</td>
-			<td>{product.price}</td>
-		</tr>
-	);
-}
-
-function product_table({ products, filter_text, in_stock_only }) {
-	const rows = [];
-	let lastCategory = null;
-
-	products.forEach((product) => {
-		if (
-			product.name.toLowerCase().indexOf(filter_text.toLowerCase()) === -1
-		) {
-			return;
-		}
-		if (in_stock_only && !product.stocked) {
-			return;
-		}
-		if (product.category !== lastCategory) {
-			rows.push(
-				<product_category_row
-					category={product.category}
-					key={product.category}
-				/>
-			);
-		}
-		rows.push(<product_row product={product} key={product.name} />);
-		lastCategory = product.category;
-	});
-
-	return (
-		<table>
-			<thead>
-				<tr>
-					<th>Name</th>
-					<th>Price</th>
-				</tr>
-			</thead>
-			<tbody>{rows}</tbody>
-		</table>
-	);
-}
-
-function search_bar({
-	filter_text,
-	in_stock_only,
-	onfilter_textChange,
-	onin_stock_onlyChange,
-}) {
-	return (
-		<form>
-			<input
-				type="text"
-				value={filter_text}
-				placeholder="Search..."
-				onChange={(e) => onfilter_textChange(e.target.value)}
-			/>
-			<label>
-				<input
-					type="checkbox"
-					checked={in_stock_only}
-					onChange={(e) => onin_stock_onlyChange(e.target.checked)}
-				/>{" "}
-				Only show products in stock
-			</label>
-		</form>
-	);
-}
-
-const PRODUCTS = [
-	{ category: "Fruits", price: "$1", stocked: true, name: "Apple" },
-	{ category: "Fruits", price: "$1", stocked: true, name: "Dragonfruit" },
-	{ category: "Fruits", price: "$2", stocked: false, name: "Passionfruit" },
-	{ category: "Vegetables", price: "$2", stocked: true, name: "Spinach" },
-	{ category: "Vegetables", price: "$4", stocked: false, name: "Pumpkin" },
-	{ category: "Vegetables", price: "$1", stocked: true, name: "Peas" },
-];
-
-export default function App() {
-	return <filterable_product_table products={PRODUCTS} />;
-}
-```
+=== "app.py"
 
-```css
-body {
-	padding: 5px;
-}
-label {
-	display: block;
-	margin-top: 5px;
-	margin-bottom: 5px;
-}
-th {
-	padding: 4px;
-}
-td {
-	padding: 2px;
-}
-```
+    <!-- FIXME: Click event on the checkbox is broken. `event["target"]["checked"]` doesn't exist -->
+
+    ```python
+    {% include "../../examples/python/thinking_in_react/add_inverse_data_flow.py" start="# start" end="# end" %}
+    ```
+
+=== "styles.css"
+
+    ```css
+    {% include "../../examples/css/thinking_in_react/add_inverse_data_flow.css" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
 
-You can learn all about handling events and updating state in the [Adding Interactivity](/learn/adding-interactivity) section.
+You can learn all about handling events and updating state in the [Adding Interactivity](../learn/responding-to-events.md) section.
 
 ## Where to go from here
 
-This was a very brief introduction to how to think about building components and applications with React. You can [start a React project](/learn/installation) right now or [dive deeper on all the syntax](/learn/describing-the-ui) used in this tutorial.
+This was a very brief introduction to how to think about building components and applications with React. You can [start a React project](../learn/start-a-new-react-project.md) right now or [dive deeper on all the syntax](../learn/your-first-component.md) used in this tutorial.

From 865c18fd9bcf943c62dde0148b4442665714ce06 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 02:29:24 -0700
Subject: [PATCH 21/49] Add fixme

---
 docs/src/learn/tutorial-tic-tac-toe.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 8b696a61c..197b73bfb 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -29,6 +29,8 @@ You can see what it will look like when you're finished here:
 
 === "app.py"
 
+	<!-- FIXME: Currently this example uses empty string instead of None, due to a bug with ReactPy -->
+
     ```python
     {% include "../../examples/python/tutorial_tic_tac_toe/tic_tac_toe.py" end="# end" %}
     ```

From 61950500cef56dcdc661acb5fb76f0835aaf344c Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 04:41:14 -0700
Subject: [PATCH 22/49] start a new react project

---
 README.md                                     |   3 +-
 .../configure_example.py                      |   6 +
 .../learn/add-react-to-an-existing-project.md |   7 +-
 docs/src/learn/start-a-new-react-project.md   | 167 ++++++++++--------
 docs/src/learn/tutorial-tic-tac-toe.md        |  32 ++--
 docs/src/static/css/extra.css                 |  20 +++
 6 files changed, 144 insertions(+), 91 deletions(-)
 create mode 100644 docs/examples/python/start_a_new_react_project/configure_example.py

diff --git a/README.md b/README.md
index db3e94484..d24c250a4 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,7 @@ In order to set up an environment to develop these docs...
 7. Follow the on-screen prompts to view the documentation in your browser
 8. You can now edit the markdown files located within `docs/src/` and see the changes in real time
 
-All unfinished tabs are marked via a construction symbol ( 🚧 ).
+🚧 : Unfinished tab
+🚫 : Tab is blocked from being started due to external factors 
 
 Feel free to PR this branch with any changes you make to the documentation. If you have any questions, feel free to ask in the [Discord server](https://discord.gg/uNb5P4hA9X).
diff --git a/docs/examples/python/start_a_new_react_project/configure_example.py b/docs/examples/python/start_a_new_react_project/configure_example.py
new file mode 100644
index 000000000..c04a0e54d
--- /dev/null
+++ b/docs/examples/python/start_a_new_react_project/configure_example.py
@@ -0,0 +1,6 @@
+from fastapi import FastAPI
+
+from reactpy.backend.fastapi import configure
+
+asgi_app = FastAPI()
+configure(asgi_app)
diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index 73a3b0bc1..4a57ef769 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -1,7 +1,12 @@
 ---
-title: Add React to an Existing Project 🚧
+title: Add React to an Existing Project 🚫
 ---
 
+<!--
+TODO: Template tag is needed to complete this tab
+https://github.com/reactive-python/reactpy/issues/653
+-->
+
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/start-a-new-react-project.md b/docs/src/learn/start-a-new-react-project.md
index dbe1ad06a..0196b1943 100644
--- a/docs/src/learn/start-a-new-react-project.md
+++ b/docs/src/learn/start-a-new-react-project.md
@@ -1,133 +1,154 @@
 ---
-title: Start a New React Project 🚧
+title: Start a New React Project
 ---
 
 ## Overview
 
 <p class="intro" markdown>
 
-If you want to build a new app or a new website fully with React, we recommend picking one of the React-powered frameworks popular in the community. Frameworks provide features that most apps and sites eventually need, including routing, data fetching, and generating HTML.
+If you want to build a new app or a new website fully with ReactPy, we recommend picking one of the ReactPy-compatible backends popular in the community. These backend frameworks provide features that most apps and sites eventually need, including routing, data fetching, and session management.
 
 </p>
 
-<Note>
 
-**You need to install [Node.js](https://nodejs.org/en/) for local development.** You can _also_ choose to use Node.js in production, but you don't have to. Many React frameworks support export to a static HTML/CSS/JS folder.
+## Built-in Backends
 
-</Note>
+<!-- FIXME: This is reliant on https://github.com/reactive-python/reactpy/issues/1071 -->
 
-## Production-grade React frameworks
+!!! note
 
-### Next.js
+    Some of our frameworks are considered _built-in_, meaning that compatibility for these backends are contained within `reactpy.backend.*`.
 
-**[Next.js](https://nextjs.org/) is a full-stack React framework.** It's versatile and lets you create React apps of any size--from a mostly static blog to a complex dynamic application. To create a new Next.js project, run in your terminal:
+    In order to run ReactPy with these frameworks, you will need to run `reactpy.backend.*.configure(...)` on your ASGI application. This command will configure the necessary settings and routes for ReactPy to work properly.
 
-<TerminalBlock>
-npx create-next-app
-</TerminalBlock>
+    For example, this is how you would configure ReactPy for FastAPI:
 
-If you're new to Next.js, check out the [Next.js tutorial.](https://nextjs.org/learn/foundations/about-nextjs)
+	```python linenums="0"
+	{% include "../../examples/python/start_a_new_react_project/configure_example.py" %}
+	```
 
-Next.js is maintained by [Vercel](https://vercel.com/). You can [deploy a Next.js app](https://nextjs.org/docs/deployment) to any Node.js or serverless hosting, or to your own server. [Fully static Next.js apps](https://nextjs.org/docs/advanced-features/static-html-export) can be deployed to any static hosting.
+### FastAPI
 
-### Remix
+FastAPI is a high-performance web framework that is designed for speed and efficiency. It is built on top of the asyncio library and uses a number of optimizations to achieve its performance. FastAPI is a good choice for web applications that need to be fast and scalable.
 
-**[Remix](https://remix.run/) is a full-stack React framework with nested routing.** It lets you break your app into nested parts that can load data in parallel and refresh in response to the user actions. To create a new Remix project, run:
+!!! example "Terminal"
 
-<TerminalBlock>
-npx create-remix
-</TerminalBlock>
+    ```bash linenums="0"
+    pip install reactpy[fastapi]
+    ```
 
-If you're new to Remix, check out the Remix [blog tutorial](https://remix.run/docs/en/main/tutorials/blog) (short) and [app tutorial](https://remix.run/docs/en/main/tutorials/jokes) (long).
+If you're new to FastAPI, check out the [FastAPI tutorial](https://fastapi.tiangolo.com/tutorial/).
 
-Remix is maintained by [Shopify](https://www.shopify.com/). When you create a Remix project, you need to [pick your deployment target](https://remix.run/docs/en/main/guides/deployment). You can deploy a Remix app to any Node.js or serverless hosting by using or writing an [adapter](https://remix.run/docs/en/main/other-api/adapter).
+You will need to [configure FastAPI](#built-in-backends) in order to use it with ReactPy.
 
-### Gatsby
+### Flask
 
-**[Gatsby](https://www.gatsbyjs.com/) is a React framework for fast CMS-backed websites.** Its rich plugin ecosystem and its GraphQL data layer simplify integrating content, APIs, and services into one website. To create a new Gatsby project, run:
+Flask is a microframework that is lightweight and easy to use. It is a good choice for small and simple web applications. Flask does not include many features out of the box, but it is highly customizable and can be extended with a variety of third-party libraries.
 
-<TerminalBlock>
-npx create-gatsby
-</TerminalBlock>
+!!! example "Terminal"
 
-If you're new to Gatsby, check out the [Gatsby tutorial.](https://www.gatsbyjs.com/docs/tutorial/)
+    ```bash linenums="0"
+    pip install reactpy[flask]
+    ```
 
-Gatsby is maintained by [Netlify](https://www.netlify.com/). You can [deploy a fully static Gatsby site](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting) to any static hosting. If you opt into using server-only features, make sure your hosting provider supports them for Gatsby.
+If you're new to Flask, check out the [Flask tutorial](https://flask.palletsprojects.com/en/latest/tutorial/).
 
-### Expo (for native apps)
+You will need to [configure Flask](#built-in-backends) in order to use it with ReactPy.
 
-**[Expo](https://expo.dev/) is a React framework that lets you create universal Android, iOS, and web apps with truly native UIs.** It provides an SDK for [React Native](https://reactnative.dev/) that makes the native parts easier to use. To create a new Expo project, run:
+### Sanic
 
-<TerminalBlock>
-npx create-expo-app
-</TerminalBlock>
+Sanic is a microframework that is designed for speed and performance. It is built on top of the asyncio library and uses a number of optimizations to achieve its performance. Sanic is a good choice for web applications that need to be fast and scalable.
 
-If you're new to Expo, check out the [Expo tutorial](https://docs.expo.dev/tutorial/introduction/).
+!!! example "Terminal"
 
-Expo is maintained by [Expo (the company)](https://expo.dev/about). Building apps with Expo is free, and you can submit them to the Google and Apple app stores without restrictions. Expo additionally provides opt-in paid cloud services.
+    ```bash linenums="0"
+    pip install reactpy[sanic]
+    ```
 
-<DeepDive>
+If you're new to Sanic, check out the [Sanic tutorial](https://sanicframework.org/en/guide/).
 
-#### Can I use React without a framework?
+You will need to [configure Sanic](#built-in-backends) in order to use it with ReactPy.
 
-You can definitely use React without a framework--that's how you'd [use React for a part of your page.](/learn/add-react-to-an-existing-project#using-react-for-a-part-of-your-existing-page) **However, if you're building a new app or a site fully with React, we recommend using a framework.**
+### Starlette
 
-Here's why.
+Starlette is a lightweight framework that is designed for simplicity and flexibility. It is built on top of the ASGI standard and is very easy to extend. Starlette is a good choice for web applications that need to be simple and flexible.
 
-Even if you don't need routing or data fetching at first, you'll likely want to add some libraries for them. As your JavaScript bundle grows with every new feature, you might have to figure out how to split code for every route individually. As your data fetching needs get more complex, you are likely to encounter server-client network waterfalls that make your app feel very slow. As your audience includes more users with poor network conditions and low-end devices, you might need to generate HTML from your components to display content early--either on the server, or during the build time. Changing your setup to run some of your code on the server or during the build can be very tricky.
+!!! example "Terminal"
 
-**These problems are not React-specific. This is why Svelte has SvelteKit, Vue has Nuxt, and so on.** To solve these problems on your own, you'll need to integrate your bundler with your router and with your data fetching library. It's not hard to get an initial setup working, but there are a lot of subtleties involved in making an app that loads quickly even as it grows over time. You'll want to send down the minimal amount of app code but do so in a single client–server roundtrip, in parallel with any data required for the page. You'll likely want the page to be interactive before your JavaScript code even runs, to support progressive enhancement. You may want to generate a folder of fully static HTML files for your marketing pages that can be hosted anywhere and still work with JavaScript disabled. Building these capabilities yourself takes real work.
+    ```bash linenums="0"
+    pip install reactpy[starlette]
+    ```
 
-**React frameworks on this page solve problems like these by default, with no extra work from your side.** They let you start very lean and then scale your app with your needs. Each React framework has a community, so finding answers to questions and upgrading tooling is easier. Frameworks also give structure to your code, helping you and others retain context and skills between different projects. Conversely, with a custom setup it's easier to get stuck on unsupported dependency versions, and you'll essentially end up creating your own framework—albeit one with no community or upgrade path (and if it's anything like the ones we've made in the past, more haphazardly designed).
+If you're new to Starlette, check out the [Starlette tutorial](https://www.starlette.io/tutorial/).
 
-If you're still not convinced, or your app has unusual constraints not served well by these frameworks and you'd like to roll your own custom setup, we can't stop you--go for it! Grab `react` and `react-dom` from npm, set up your custom build process with a bundler like [Vite](https://vitejs.dev/) or [Parcel](https://parceljs.org/), and add other tools as you need them for routing, static generation or server-side rendering, and more. </DeepDive>
+You will need to [configure Starlette](#built-in-backends) in order to use it with ReactPy.
 
-## Bleeding-edge React frameworks
+### Tornado
 
-As we've explored how to continue improving React, we realized that integrating React more closely with frameworks (specifically, with routing, bundling, and server technologies) is our biggest opportunity to help React users build better apps. The Next.js team has agreed to collaborate with us in researching, developing, integrating, and testing framework-agnostic bleeding-edge React features like [React Server Components.](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-server-components)
+Tornado is a scalable web framework that is designed for high-traffic applications. It is built on top of the asyncio library and uses a number of optimizations to achieve its scalability. Tornado is a good choice for web applications that need to handle a lot of traffic.
 
-These features are getting closer to being production-ready every day, and we've been in talks with other bundler and framework developers about integrating them. Our hope is that in a year or two, all frameworks listed on this page will have full support for these features. (If you're a framework author interested in partnering with us to experiment with these features, please let us know!)
+!!! example "Terminal"
 
-### Next.js (App Router)
+    ```bash linenums="0"
+    pip install reactpy[tornado]
+    ```
 
-**[Next.js's App Router](https://beta.nextjs.org/docs/getting-started) is a redesign of the Next.js APIs aiming to fulfill the React team’s full-stack architecture vision.** It lets you fetch data in asynchronous components that run on the server or even during the build.
+If you're new to Tornado, check out the [Tornado tutorial](https://www.tornadoweb.org/en/stable/guide/).
 
-Next.js is maintained by [Vercel](https://vercel.com/). You can [deploy a Next.js app](https://nextjs.org/docs/deployment) to any Node.js or serverless hosting, or to your own server. Next.js also supports [static export](https://beta.nextjs.org/docs/configuring/static-export) which doesn't require a server. <Pitfall>
+You will need to [configure Tornado](#built-in-backends) in order to use it with ReactPy.
 
-Next.js's App Router is **currently in beta and is not yet recommended for production** (as of Mar 2023). To experiment with it in an existing Next.js project, [follow this incremental migration guide](https://beta.nextjs.org/docs/upgrade-guide#migrating-from-pages-to-app).
+## External Backends
 
-</Pitfall>
+### Django
 
-<DeepDive>
+[Django](https://www.djangoproject.com/) is a full-featured web framework that provides a batteries-included approach to web development. It includes features such as ORM, templating, authentication, and authorization. Django is a good choice for large and complex web applications.
 
-#### Which features make up the React team’s full-stack architecture vision?
+!!! example "Terminal"
 
-Next.js's App Router bundler fully implements the official [React Server Components specification](https://github.com/reactjs/rfcs/blob/main/text/0188-server-components.md). This lets you mix build-time, server-only, and interactive components in a single React tree.
+    ```bash linenums="0"
+    pip install reactpy-django
+    ```
 
-For example, you can write a server-only React component as an `async` function that reads from a database or from a file. Then you can pass data down from it to your interactive components:
+If you're new to Django, check out the [Django tutorial](https://docs.djangoproject.com/en/dev/intro/tutorial01/).
 
-```js
-// This component runs *only* on the server (or during the build).
-async function Talks({ confId }) {
-	// 1. You're on the server, so you can talk to your data layer. API endpoint not required.
-	const talks = await db.Talks.findAll({ confId });
+You will need to [configure Django](https://reactive-python.github.io/reactpy-django/get-started/installation/) in order to use it with ReactPy.
 
-	// 2. Add any amount of rendering logic. It won't make your JavaScript bundle larger.
-	const videos = talks.map((talk) => talk.video);
+### Jupyter
 
-	// 3. Pass the data down to the components that will run in the browser.
-	return <SearchableVideoList videos={videos} />;
-}
-```
+Jupyter is an interactive computing environment that is used for data science and machine learning. It allows users to run code, visualize data, and collaborate with others in a live environment. Jupyter is a powerful tool for data scientists and machine learning engineers.
 
-Next.js's App Router also integrates [data fetching with Suspense](/blog/2022/03/29/react-v18#suspense-in-data-frameworks). This lets you specify a loading state (like a skeleton placeholder) for different parts of your user interface directly in your React tree:
+!!! example "Terminal"
 
-```js
-<Suspense fallback={<TalksLoading />}>
-	<Talks confId={conf.id} />
-</Suspense>
-```
+    ```bash linenums="0"
+    pip install reactpy-jupyter
+    ```
 
-Server Components and Suspense are React features rather than Next.js features. However, adopting them at the framework level requires buy-in and non-trivial implementation work. At the moment, the Next.js App Router is the most complete implementation. The React team is working with bundler developers to make these features easier to implement in the next generation of frameworks.
+If you're new to Jupyter, check out the [Jupyter tutorial](https://jupyter.org/try).
 
-</DeepDive>
+You will need to [configure Jupyter](https://github.com/reactive-python/reactpy-jupyter#readme) in order to use it with ReactPy.
+
+### Plotly Dash
+
+Plotly Dash is a web application framework that is used to create interactive dashboards. It allows users to create dashboards that can be used to visualize data and interact with it in real time. Plotly Dash is a good choice for creating dashboards that need to be interactive and informative.
+
+!!! example "Terminal"
+
+    ```bash linenums="0"
+    pip install reactpy-dash
+    ```
+
+If you're new to Plotly Dash, check out the [Plotly Dash tutorial](https://dash.plotly.com/installation).
+
+You will need to [configure Plotly Dash](https://github.com/reactive-python/reactpy-dash#readme) in order to use it with ReactPy.
+
+!!! info "Deep Dive"
+
+    <font size="4">**Can I use ReactPy without a backend framework?**</font>
+
+    You can not ReactPy without a backend—this project was designed to be built on-top of existing web frameworks. 
+
+    Here's why.
+
+    You can think of ReactPy as ReactJS server side rendering, but with a Python server. We rely on Python web frameworks and webservers in order to process ReactPy traffic. **This means that you can [use any Python web framework](../learn/creating-backends.md) as a ReactPy backend, as long as it supports the ASGI standard.** As your project grows with every new feature, you may want to switch backends in the future. As a result, we recommend keeping all backend-related logic within hook functions in order to make the "points of integration" between ReactPy and your backend as small as possible.
+	
+	**If you're building a new app or a site fully with ReactPy, we recommend using your favorite backend combined with [`reactpy-router`](https://github.com/reactive-python/reactpy-router) to create a Single Page Application (SPA).**
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 197b73bfb..317ca0c8c 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -29,7 +29,7 @@ You can see what it will look like when you're finished here:
 
 === "app.py"
 
-	<!-- FIXME: Currently this example uses empty string instead of None, due to a bug with ReactPy -->
+    <!-- FIXME: Currently this example uses empty string instead of None, due to a bug with ReactPy -->
 
     ```python
     {% include "../../examples/python/tutorial_tic_tac_toe/tic_tac_toe.py" end="# end" %}
@@ -57,18 +57,17 @@ Once you've played around with the finished tic-tac-toe game, keep scrolling. Yo
 
 In the code example below, click **Run** to open the editor in a new tab using the website Jupyter. Jupyter lets you write code in your browser and preview how your users will see the app you've created. The new tab should display an empty square and the starter code for this tutorial.
 
-
 === "app.py"
 
-	```python
-	{% include "../../examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
-	```
+    ```python
+    {% include "../../examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
+    ```
 
 === "styles.css"
 
-	```css
-	{% include "../../examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css" %}
-	```
+    ```css
+    {% include "../../examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css" %}
+    ```
 
 === ":material-play: Run"
 
@@ -78,16 +77,15 @@ In the code example below, click **Run** to open the editor in a new tab using t
 
 !!! note
 
-	You can also follow this tutorial using your local development environment. To do this, you need to:
-
-	1. Install [Python](https://www.python.org/downloads/)
-	2. Copy the example above into a file called `app.py`
-	3. Install ReactPy for your [backend](../reference/fastapi.md), for example `pip install reactpy[fastapi]`
-	4. Add `reactpy.run(...)` to the end of your Python file
-	5. Run `python app.py` to start a local server and follow the prompts to view the code running in a browser
+    You can also follow this tutorial using your local development environment. To do this, you need to:
 
-	If you get stuck, don't let this stop you! Follow along online instead and try a local setup again later.
+    1. Install [Python](https://www.python.org/downloads/)
+    2. Copy the example above into a file called `app.py`
+    3. Install ReactPy for your [backend](../reference/fastapi.md), for example `pip install reactpy[fastapi]`
+    4. Add `reactpy.run(...)` to the end of your Python file
+    5. Run `python app.py` to start a local server and follow the prompts to view the code running in a browser
 
+    If you get stuck, don't let this stop you! Follow along online instead and try a local setup again later.
 
 ## Overview
 
@@ -98,6 +96,7 @@ Now that you're set up, let's get an overview of React!
 In Jupyter you'll see three main sections:
 
 <!-- TODO: Add screenshot -->
+
 ![TODO: screenshot of Jupyter]()
 
 1. The _Files_ section with a list of files like `tic-tac-toe.ipynb`
@@ -113,6 +112,7 @@ The `tic-tac-toe.ipynb` file should be selected in the _Files_ section. Click on
 After clicking the _run button_ the notebook should be displaying a square with a X in it like this:
 
 <!-- TODO: Add screenshot -->
+
 ![TODO: x-filled square]()
 
 Now let's have a look at the files in the starter code.
diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
index b049a15cd..4e060a39d 100644
--- a/docs/src/static/css/extra.css
+++ b/docs/src/static/css/extra.css
@@ -121,6 +121,26 @@
 	background-color: rgb(136 145 236);
 }
 
+/* Colors for "example" admonition */
+[data-md-color-scheme="slate"] .md-typeset .admonition.example {
+	background: rgb(94 104 126);
+	border-radius: 0.4rem;
+}
+
+[data-md-color-scheme="slate"] .md-typeset .example .admonition-title {
+	background: rgb(78 87 105);
+	color: rgb(246 247 249);
+}
+
+[data-md-color-scheme="slate"] .md-typeset .example .admonition-title:before {
+	background-color: rgb(246 247 249);
+}
+
+[data-md-color-scheme="slate"] .md-typeset .admonition.example code {
+	background: transparent;
+	color: #FFF;
+}
+
 /* Move the sidebars to the edges of the page */
 .md-main__inner.md-grid {
 	margin-left: 0;

From fa4b1df00aed5fa1258b9efb93655f118b55e820 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 05:05:15 -0700
Subject: [PATCH 23/49] Add in progress warnings

---
 .../learn/add-react-to-an-existing-project.md  | 18 +++++++++++-------
 docs/src/learn/editor-setup.md                 |  2 +-
 docs/src/learn/react-developer-tools.md        | 16 ++++++++++++----
 3 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index 4a57ef769..e39ab5310 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -2,11 +2,6 @@
 title: Add React to an Existing Project 🚫
 ---
 
-<!--
-TODO: Template tag is needed to complete this tab
-https://github.com/reactive-python/reactpy/issues/653
--->
-
 ## Overview
 
 <p class="intro" markdown>
@@ -15,6 +10,13 @@ If you want to add some interactivity to your existing project, you don't have t
 
 </p>
 
+!!! warning "In Progress"
+
+    This feature is planned, but not yet developed.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/653) for more details.
+
+<!--
 <Note>
 
 **You need to install [Node.js](https://nodejs.org/en/) for local development.** Although you can [try React](/learn/installation#try-react) online or with a simple HTML page, realistically most JavaScript tooling you'll want to use for development requires Node.js.
@@ -70,7 +72,9 @@ Then add these lines of code at the top of your main JavaScript file (it might b
 	</head>
 	<body>
 		<!-- Your existing page content (in this example, it gets replaced) -->
-	</body>
+
+    </body>
+
 </html>
 ```
 
@@ -155,4 +159,4 @@ When you adopt React in an existing project, it's common to start with small int
 
 ## Using React Native in an existing native mobile app
 
-[React Native](https://reactnative.dev/) can also be integrated into existing native apps incrementally. If you have an existing native app for Android (Java or Kotlin) or iOS (Objective-C or Swift), [follow this guide](https://reactnative.dev/docs/integration-with-existing-apps) to add a React Native screen to it.
+[React Native](https://reactnative.dev/) can also be integrated into existing native apps incrementally. If you have an existing native app for Android (Java or Kotlin) or iOS (Objective-C or Swift), [follow this guide](https://reactnative.dev/docs/integration-with-existing-apps) to add a React Native screen to it. -->
diff --git a/docs/src/learn/editor-setup.md b/docs/src/learn/editor-setup.md
index 25ebbed3e..7bebda0e8 100644
--- a/docs/src/learn/editor-setup.md
+++ b/docs/src/learn/editor-setup.md
@@ -22,7 +22,7 @@ A properly configured editor can make code clearer to read and faster to write.
 Other popular text editors used in the React community include:
 
 -   [WebStorm](https://www.jetbrains.com/webstorm/) is an integrated development environment designed specifically for JavaScript.
--   [Sublime Text](https://www.sublimetext.com/) has support for JSX and TypeScript, [syntax highlighting](https://stackoverflow.com/a/70960574/458193) and autocomplete built in.
+-   [Sublime Text](https://www.sublimetext.com/) has support for [syntax highlighting](https://stackoverflow.com/a/70960574/458193) and autocomplete built in.
 -   [Vim](https://www.vim.org/) is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is included as "vi" with most UNIX systems and with Apple OS X.
 
 ## Recommended text editor features
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
index d951fae3c..c5fcd1241 100644
--- a/docs/src/learn/react-developer-tools.md
+++ b/docs/src/learn/react-developer-tools.md
@@ -1,19 +1,27 @@
 ---
-title: React Developer Tools 🚧
+title: React Developer Tools 🚫
 ---
 
 ## Overview
 
 <p class="intro" markdown>
 
-Use React Developer Tools to inspect React [components](/learn/your-first-component), edit [props](/learn/passing-props-to-a-component) and [state](/learn/state-a-components-memory), and identify performance problems.
+Use React Developer Tools to inspect React [components](../learn/your-first-component.md), edit [props](../learn/passing-props-to-a-component.md) and [state](../learn/state-a-components-memory.md), and identify performance problems.
 
 </p>
 
 !!! summary "You Will Learn"
 
-    -   How to install React Developer Tools
+    -   How to install ReactPy Developer Tools
 
+
+!!! warning "In Progress"
+
+	This feature is planned, but not yet developed.
+
+	See [this issue](https://github.com/reactive-python/reactpy/issues/1072) for more details.
+
+<!--
 ## Browser extension
 
 The easiest way to debug websites built with React is to install the React Developer Tools browser extension. It is available for several popular browsers:
@@ -82,4 +90,4 @@ It should connect to any local React Native app that's running.
 
 > Try reloading the app if developer tools doesn't connect after a few seconds.
 
-[Learn more about debugging React Native.](https://reactnative.dev/docs/debugging)
+[Learn more about debugging React Native.](https://reactnative.dev/docs/debugging) -->

From 3c0b07101964b955aec5c56d6279c8a3ad9fcb91 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 05:16:37 -0700
Subject: [PATCH 24/49] Add more in progress warnings

---
 docs/src/learn/tutorial-material-ui.md     | 9 ++++++++-
 docs/src/learn/tutorial-react-bootstrap.md | 8 +++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/docs/src/learn/tutorial-material-ui.md b/docs/src/learn/tutorial-material-ui.md
index 30e56fbc7..b57bba07f 100644
--- a/docs/src/learn/tutorial-material-ui.md
+++ b/docs/src/learn/tutorial-material-ui.md
@@ -1,3 +1,10 @@
 ---
-title: "Tutorial: Material UI 🚧"
+title: "Tutorial: Material UI 🚫"
 ---
+
+
+!!! warning "In Progress"
+
+    This tutorial is planned, but is missing a key feature before this page can be written.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/786) for more details.
diff --git a/docs/src/learn/tutorial-react-bootstrap.md b/docs/src/learn/tutorial-react-bootstrap.md
index 79abb885c..8d77dbe1d 100644
--- a/docs/src/learn/tutorial-react-bootstrap.md
+++ b/docs/src/learn/tutorial-react-bootstrap.md
@@ -1,3 +1,9 @@
 ---
-title: "Tutorial: React Bootstrap 🚧"
+title: "Tutorial: React Bootstrap 🚫"
 ---
+
+!!! warning "In Progress"
+
+    This tutorial is planned, but is missing a key feature before this page can be written.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/786) for more details.

From ce60b29d8301574a9a79537d6364178a9b30472a Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 17:29:22 -0700
Subject: [PATCH 25/49] a little bit of the "responding to events" section

---
 .../simple_button_event.css                   |  3 ++
 .../responding_to_events/simple_button.py     |  7 +++
 .../simple_button_event.py                    | 22 ++++++++
 docs/src/learn/responding-to-events.md        | 54 +++++++++++--------
 4 files changed, 63 insertions(+), 23 deletions(-)
 create mode 100644 docs/examples/css/responding_to_events/simple_button_event.css
 create mode 100644 docs/examples/python/responding_to_events/simple_button.py
 create mode 100644 docs/examples/python/responding_to_events/simple_button_event.py

diff --git a/docs/examples/css/responding_to_events/simple_button_event.css b/docs/examples/css/responding_to_events/simple_button_event.css
new file mode 100644
index 000000000..4fc2d52a0
--- /dev/null
+++ b/docs/examples/css/responding_to_events/simple_button_event.css
@@ -0,0 +1,3 @@
+button {
+    margin-right: 10px;
+}
diff --git a/docs/examples/python/responding_to_events/simple_button.py b/docs/examples/python/responding_to_events/simple_button.py
new file mode 100644
index 000000000..7753b4a70
--- /dev/null
+++ b/docs/examples/python/responding_to_events/simple_button.py
@@ -0,0 +1,7 @@
+from reactpy import component, html
+
+
+# start
+@component
+def button():
+    return html.button("I don't do anything")
diff --git a/docs/examples/python/responding_to_events/simple_button_event.py b/docs/examples/python/responding_to_events/simple_button_event.py
new file mode 100644
index 000000000..292f3531c
--- /dev/null
+++ b/docs/examples/python/responding_to_events/simple_button_event.py
@@ -0,0 +1,22 @@
+from reactpy import component, html
+
+
+@component
+def button():
+    def handle_click(event):
+        print("You clicked me!")
+
+    return html.button({"on_click": handle_click}, "Click me")
+
+
+
+# end
+if __name__ == "__main__":
+    from reactpy import run
+    from reactpy.utils import _read_docs_css
+
+    @component
+    def styled_app():
+        return html._(html.style(_read_docs_css()), button())
+
+    run(styled_app)
diff --git a/docs/src/learn/responding-to-events.md b/docs/src/learn/responding-to-events.md
index 2e5385bd1..76d6402aa 100644
--- a/docs/src/learn/responding-to-events.md
+++ b/docs/src/learn/responding-to-events.md
@@ -6,7 +6,7 @@ title: Responding to Events 🚧
 
 <p class="intro" markdown>
 
-React lets you add _event handlers_ to your JSX. Event handlers are your own functions that will be triggered in response to interactions like clicking, hovering, focusing form inputs, and so on.
+React lets you add _event handlers_ to your PSX. Event handlers are your own functions that will be triggered in response to interactions like clicking, hovering, focusing form inputs, and so on.
 
 </p>
 
@@ -18,35 +18,43 @@ React lets you add _event handlers_ to your JSX. Event handlers are your own fun
 
 ## Adding event handlers
 
-To add an event handler, you will first define a function and then [pass it as a prop](/learn/passing-props-to-a-component) to the appropriate JSX tag. For example, here is a button that doesn't do anything yet:
+To add an event handler, you will first define a function and then [pass it as a prop](../learn/passing-props-to-a-component.md) to the appropriate PSX tag. For example, here is a button that doesn't do anything yet:
 
-```js
-export default function Button() {
-	return <button>I don't do anything</button>;
-}
-```
+=== "app.py"
+
+    ```python
+    {% include "../../examples/python/responding_to_events/simple_button.py" start="# start" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
 
 You can make it show a message when a user clicks by following these three steps:
 
-1. Declare a function called `handleClick` _inside_ your `Button` component.
-2. Implement the logic inside that function (use `alert` to show the message).
-3. Add `on_click={handleClick}` to the `<button>` JSX.
+1. Declare a function called `handle_click` _inside_ your `#!python def button():` component.
+2. Implement the logic inside that function (use `print` to show the message).
+3. Add `on_click=handle_click` to the `html.button` PSX.
 
-```js
-export default function Button() {
-	function handleClick() {
-		alert("You clicked me!");
-	}
+=== "app.py"
 
-	return <button on_click={handleClick}>Click me</button>;
-}
-```
+    ```python
+    {% include "../../examples/python/responding_to_events/simple_button_event.py" end="# end" %}
+    ```
 
-```css
-button {
-	margin-right: 10px;
-}
-```
+=== "styles.css"
+
+    ```css
+    {% include "../../examples/css/responding_to_events/simple_button_event.css" %}
+    ```
+
+=== ":material-play: Run"
+
+    ```python
+    # TODO
+    ```
 
 You defined the `handleClick` function and then [passed it as a prop](/learn/passing-props-to-a-component) to `<button>`. `handleClick` is an **event handler.** Event handler functions:
 

From 656623ac46df6aace26beff6c4e3834fcdbd81ce Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 17:29:47 -0700
Subject: [PATCH 26/49] remove start from the runnable examples

---
 .../python/thinking_in_react/add_inverse_data_flow.py       | 1 -
 .../thinking_in_react/build_a_static_version_in_react.py    | 1 -
 .../identify_where_your_state_should_live.py                | 1 -
 docs/src/learn/thinking-in-react.md                         | 6 +++---
 4 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/docs/examples/python/thinking_in_react/add_inverse_data_flow.py b/docs/examples/python/thinking_in_react/add_inverse_data_flow.py
index e899cf913..fdb7c79ad 100644
--- a/docs/examples/python/thinking_in_react/add_inverse_data_flow.py
+++ b/docs/examples/python/thinking_in_react/add_inverse_data_flow.py
@@ -1,7 +1,6 @@
 from reactpy import component, html, use_state
 
 
-# start
 @component
 def filterable_product_table(products):
     filter_text, set_filter_text = use_state("")
diff --git a/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py b/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py
index c8c05b64e..428406707 100644
--- a/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py
+++ b/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py
@@ -1,7 +1,6 @@
 from reactpy import component, html
 
 
-# start
 @component
 def product_category_row(category):
     return html.tr(html.th({"colSpan": "2"}, category))
diff --git a/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py b/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
index c8d897cbc..c201b6742 100644
--- a/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
+++ b/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
@@ -1,7 +1,6 @@
 from reactpy import component, html, use_state
 
 
-# start
 @component
 def filterable_product_table(products):
     filter_text, set_filter_text = use_state("")
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index 66bc5a581..d66531517 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -71,7 +71,7 @@ You can either build "top down" by starting with building the components higher
 === "app.py"
 
     ```python
-    {% include "../../examples/python/thinking_in_react/build_a_static_version_in_react.py" start="# start" end="# end" %}
+    {% include "../../examples/python/thinking_in_react/build_a_static_version_in_react.py" end="# end" %}
     ```
 
 === "styles.css"
@@ -177,7 +177,7 @@ You can start seeing how your application will behave. Edit the `filter_text` in
 === "app.py"
 
     ```python
-    {% include "../../examples/python/thinking_in_react/identify_where_your_state_should_live.py" start="# start" end="# end" %}
+    {% include "../../examples/python/thinking_in_react/identify_where_your_state_should_live.py" end="# end" %}
     ```
 
 === "styles.css"
@@ -227,7 +227,7 @@ Now the application fully works!
     <!-- FIXME: Click event on the checkbox is broken. `event["target"]["checked"]` doesn't exist -->
 
     ```python
-    {% include "../../examples/python/thinking_in_react/add_inverse_data_flow.py" start="# start" end="# end" %}
+    {% include "../../examples/python/thinking_in_react/add_inverse_data_flow.py" end="# end" %}
     ```
 
 === "styles.css"

From 3c644cc3a50f96e0051a4e2e97c2662ccdc8563b Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 19 Jun 2023 21:42:46 -0700
Subject: [PATCH 27/49] more in progress warnings

---
 .../learn/add-react-to-an-existing-project.md | 12 ++---
 .../learn/python-in-psx-with-curly-braces.md  | 11 +++-
 docs/src/learn/react-developer-tools.md       | 13 +++--
 docs/src/learn/writing-markup-with-psx.md     | 54 ++++++++++---------
 4 files changed, 50 insertions(+), 40 deletions(-)

diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index e39ab5310..bdc4a0d3d 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -2,6 +2,12 @@
 title: Add React to an Existing Project 🚫
 ---
 
+!!! warning "In Progress"
+
+    This feature is planned, but not yet developed.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/653) for more details.
+
 ## Overview
 
 <p class="intro" markdown>
@@ -10,12 +16,6 @@ If you want to add some interactivity to your existing project, you don't have t
 
 </p>
 
-!!! warning "In Progress"
-
-    This feature is planned, but not yet developed.
-
-    See [this issue](https://github.com/reactive-python/reactpy/issues/653) for more details.
-
 <!--
 <Note>
 
diff --git a/docs/src/learn/python-in-psx-with-curly-braces.md b/docs/src/learn/python-in-psx-with-curly-braces.md
index fcc8f0923..87be20beb 100644
--- a/docs/src/learn/python-in-psx-with-curly-braces.md
+++ b/docs/src/learn/python-in-psx-with-curly-braces.md
@@ -1,7 +1,13 @@
 ---
-title: Python in PSX with Curly Braces 🚧
+title: Python in PSX with Curly Braces 🚫
 ---
 
+!!! warning "In Progress"
+
+    This feature is planned, but not yet developed.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/918) for more details.
+
 ## Overview
 
 <p class="intro" markdown>
@@ -17,6 +23,7 @@ JSX lets you write HTML-like markup inside a JavaScript file, keeping rendering
     -   How to call a JavaScript function inside JSX with curly braces
     -   How to use a JavaScript object inside JSX with curly braces
 
+<!--
 ## Passing strings with quotes
 
 When you want to pass a string attribute to JSX, you put it in single or double quotes:
@@ -588,4 +595,4 @@ Variables and functions can help you keep the markup simple!
 
 </Solution>
 
-</Challenges>
+</Challenges> -->
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
index c5fcd1241..464083ec8 100644
--- a/docs/src/learn/react-developer-tools.md
+++ b/docs/src/learn/react-developer-tools.md
@@ -2,6 +2,12 @@
 title: React Developer Tools 🚫
 ---
 
+!!! warning "In Progress"
+
+    This feature is planned, but not yet developed.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/1072) for more details.
+
 ## Overview
 
 <p class="intro" markdown>
@@ -14,13 +20,6 @@ Use React Developer Tools to inspect React [components](../learn/your-first-comp
 
     -   How to install ReactPy Developer Tools
 
-
-!!! warning "In Progress"
-
-	This feature is planned, but not yet developed.
-
-	See [this issue](https://github.com/reactive-python/reactpy/issues/1072) for more details.
-
 <!--
 ## Browser extension
 
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
index 829a83725..b4b9396e7 100644
--- a/docs/src/learn/writing-markup-with-psx.md
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -1,42 +1,46 @@
 ---
-title: Writing Markup with PSX 🚧
+title: Writing Markup with PSX 🚫
 ---
 
+!!! warning "In Progress"
+
+    This feature is planned, but not yet developed.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/918) for more details.
+
 ## Overview
 
 <p class="intro" markdown>
 
-_JSX_ is a syntax extension for JavaScript that lets you write HTML-like markup inside a JavaScript file. Although there are other ways to write components, most React developers prefer the conciseness of JSX, and most codebases use it.
+_PSX_ is a syntax extension for JavaScript that lets you write HTML-like markup inside a JavaScript file. Although there are other ways to write components, most React developers prefer the conciseness of PSX, and most codebases use it.
 
 </p>
 
 !!! summary "You Will Learn"
 
     -   Why React mixes markup with rendering logic
-    -   How JSX is different from HTML
-    -   How to display information with JSX
+    -   How PSX is different from HTML
+    -   How to display information with PSX
 
-## JSX: Putting markup into JavaScript
+## PSX: Putting markup into Python
 
 The Web has been built on HTML, CSS, and JavaScript. For many years, web developers kept content in HTML, design in CSS, and logic in JavaScript—often in separate files! Content was marked up inside HTML while the page's logic lived separately in JavaScript:
 
 <!-- TODO: Diagram -->
 
-But as the Web became more interactive, logic increasingly determined content. JavaScript was in charge of the HTML! This is why **in React, rendering logic and markup live together in the same place—components.**
+But as the Web became more interactive, logic increasingly determined content. Scripting languages are now in charge of the HTML! This is why **in React, rendering logic and markup live together in the same place—components.**
 
 <!-- TODO: Diagram -->
 
 Keeping a button's rendering logic and markup together ensures that they stay in sync with each other on every edit. Conversely, details that are unrelated, such as the button's markup and a sidebar's markup, are isolated from each other, making it safer to change either of them on their own.
 
-Each React component is a JavaScript function that may contain some markup that React renders into the browser. React components use a syntax extension called JSX to represent that markup. JSX looks a lot like HTML, but it is a bit stricter and can display dynamic information. The best way to understand this is to convert some HTML markup to JSX markup.
+Each React component is a JavaScript function that may contain some markup that React renders into the browser. React components use a syntax extension called PSX to represent that markup. PSX looks a lot like HTML, but it is a bit stricter and can display dynamic information. The best way to understand this is to convert some HTML markup to PSX markup.
 
-<Note>
-
-JSX and React are two separate things. They're often used together, but you _can_ [use them independently](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#whats-a-jsx-transform) of each other. JSX is a syntax extension, while React is a JavaScript library.
+!!! note
 
-</Note>
+    PSX and ReactPy are two separate things. They're often used together, but you _can_ use them independently of each other. PSX is a syntax extension, while ReactPy is a Python library.
 
-## Converting HTML to JSX
+<!-- ## Converting HTML to PSX
 
 Suppose that you have some (perfectly valid) HTML:
 
@@ -87,7 +91,7 @@ img {
 }
 ```
 
-This is because JSX is stricter and has a few more rules than HTML! If you read the error messages above, they'll guide you to fix the markup, or you can follow the guide below.
+This is because PSX is stricter and has a few more rules than HTML! If you read the error messages above, they'll guide you to fix the markup, or you can follow the guide below.
 
 <Note>
 
@@ -95,7 +99,7 @@ Most of the time, React's on-screen error messages will help you find where the
 
 </Note>
 
-## The Rules of JSX
+## The Rules of PSX
 
 ### 1. Return a single root element
 
@@ -137,15 +141,15 @@ This empty tag is called a _[Fragment.](/reference/react/Fragment)_ Fragments le
 
 <DeepDive>
 
-#### Why do multiple JSX tags need to be wrapped?
+#### Why do multiple PSX tags need to be wrapped?
 
-JSX looks like HTML, but under the hood it is transformed into plain JavaScript objects. You can't return two objects from a function without wrapping them into an array. This explains why you also can't return two JSX tags without wrapping them into another tag or a Fragment.
+PSX looks like HTML, but under the hood it is transformed into plain JavaScript objects. You can't return two objects from a function without wrapping them into an array. This explains why you also can't return two PSX tags without wrapping them into another tag or a Fragment.
 
 </DeepDive>
 
 ### 2. Close all the tags
 
-JSX requires tags to be explicitly closed: self-closing tags like `<img>` must become `<img />`, and wrapping tags like `<li>oranges` must be written as `<li>oranges</li>`.
+PSX requires tags to be explicitly closed: self-closing tags like `<img>` must become `<img />`, and wrapping tags like `<li>oranges` must be written as `<li>oranges</li>`.
 
 This is how Hedy Lamarr's image and list items look closed:
 
@@ -166,7 +170,7 @@ This is how Hedy Lamarr's image and list items look closed:
 
 ### 3. camelCase <s>all</s> most of the things!
 
-JSX turns into JavaScript and attributes written in JSX become keys of JavaScript objects. In your own components, you will often want to read those attributes into variables. But JavaScript has limitations on variable names. For example, their names can't contain dashes or be reserved words like `class`.
+PSX turns into JavaScript and attributes written in PSX become keys of JavaScript objects. In your own components, you will often want to read those attributes into variables. But JavaScript has limitations on variable names. For example, their names can't contain dashes or be reserved words like `class`.
 
 This is why, in React, many HTML and SVG attributes are written in camelCase. For example, instead of `stroke-width` you use `strokeWidth`. Since `class` is a reserved word, in React you write `className` instead, named after the [corresponding DOM property](https://developer.mozilla.org/en-US/docs/Web/API/Element/className):
 
@@ -186,9 +190,9 @@ For historical reasons, [`aria-*`](https://developer.mozilla.org/docs/Web/Access
 
 </Pitfall>
 
-### Pro-tip: Use a JSX Converter
+### Pro-tip: Use a PSX Converter
 
-Converting all these attributes in existing markup can be tedious! We recommend using a [converter](https://transform.tools/html-to-jsx) to translate your existing HTML and SVG to JSX. Converters are very useful in practice, but it's still worth understanding what is going on so that you can comfortably write JSX on your own.
+Converting all these attributes in existing markup can be tedious! We recommend using a [converter](https://transform.tools/html-to-psx) to translate your existing HTML and SVG to PSX. Converters are very useful in practice, but it's still worth understanding what is going on so that you can comfortably write PSX on your own.
 
 Here is your final result:
 
@@ -220,19 +224,19 @@ img {
 
 <Recap>
 
-Now you know why JSX exists and how to use it in components:
+Now you know why PSX exists and how to use it in components:
 
 -   React components group rendering logic together with markup because they are related.
--   JSX is similar to HTML, with a few differences. You can use a [converter](https://transform.tools/html-to-jsx) if you need to.
+-   PSX is similar to HTML, with a few differences. You can use a [converter](https://transform.tools/html-to-psx) if you need to.
 -   Error messages will often point you in the right direction to fixing your markup.
 
 </Recap>
 
 <Challenges>
 
-#### Convert some HTML to JSX
+#### Convert some HTML to PSX
 
-This HTML was pasted into a component, but it's not valid JSX. Fix it:
+This HTML was pasted into a component, but it's not valid PSX. Fix it:
 
 ```js
 export default function Bio() {
@@ -323,4 +327,4 @@ export default function Bio() {
 
 </Solution>
 
-</Challenges>
+</Challenges> -->

From fe45c54e6670f3f1031104b8afa451a0121a442a Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 03:44:20 -0700
Subject: [PATCH 28/49] add stub docs for hooks

---
 docs/src/reference/common-events.md   |    3 -
 docs/src/reference/common-props.md    |  217 +++
 docs/src/reference/common-types.md    |    3 -
 docs/src/reference/use-callback.md    |  949 +++++++++++++
 docs/src/reference/use-context.md     | 1322 ++++++++++++++++++
 docs/src/reference/use-debug-value.md |  119 ++
 docs/src/reference/use-effect.md      | 1861 +++++++++++++++++++++++++
 docs/src/reference/use-id.md          |  286 ++++
 docs/src/reference/use-memo.md        | 1285 +++++++++++++++++
 docs/src/reference/use-reducer.md     | 1090 +++++++++++++++
 docs/src/reference/use-ref.md         |  531 +++++++
 docs/src/reference/use-state.md       | 1231 ++++++++++++++++
 mkdocs.yml                            |    3 +-
 13 files changed, 8892 insertions(+), 8 deletions(-)
 delete mode 100644 docs/src/reference/common-events.md
 delete mode 100644 docs/src/reference/common-types.md
 create mode 100644 docs/src/reference/use-id.md

diff --git a/docs/src/reference/common-events.md b/docs/src/reference/common-events.md
deleted file mode 100644
index 573da7afc..000000000
--- a/docs/src/reference/common-events.md
+++ /dev/null
@@ -1,3 +0,0 @@
----
-title: Common Events 🚧
----
diff --git a/docs/src/reference/common-props.md b/docs/src/reference/common-props.md
index 1c53918ff..4fd73bf9d 100644
--- a/docs/src/reference/common-props.md
+++ b/docs/src/reference/common-props.md
@@ -1,3 +1,220 @@
 ---
 title: Common Props 🚧
 ---
+
+#### Props
+
+These special React props are supported for all built-in components:
+
+-   `children`: A React node (an element, a string, a number, [a portal,](/reference/react-dom/createPortal) an empty node like `null`, `undefined` and booleans, or an array of other React nodes). Specifies the content inside the component. When you use JSX, you will usually specify the `children` prop implicitly by nesting tags like `<div><span /></div>`.
+
+-   `dangerouslySetInnerHTML`: An object of the form `{ __html: '<p>some html</p>' }` with a raw HTML string inside. Overrides the [`innerHTML`](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML) property of the DOM node and displays the passed HTML inside. This should be used with extreme caution! If the HTML inside isn't trusted (for example, if it's based on user data), you risk introducing an [XSS](https://en.wikipedia.org/wiki/Cross-site_scripting) vulnerability. [Read more about using `dangerouslySetInnerHTML`.](#dangerously-setting-the-inner-html)
+
+-   `ref`: A ref object from [`useRef`](/reference/react/useRef) or [`createRef`](/reference/react/createRef), or a [`ref` callback function,](#ref-callback) or a string for [legacy refs.](https://reactjs.org/docs/refs-and-the-dom.html#legacy-api-string-refs) Your ref will be filled with the DOM element for this node. [Read more about manipulating the DOM with refs.](#manipulating-a-dom-node-with-a-ref)
+
+-   `suppressContentEditableWarning`: A boolean. If `true`, suppresses the warning that React shows for elements that both have `children` and `contentEditable={true}` (which normally do not work together). Use this if you're building a text input library that manages the `contentEditable` content manually.
+
+-   `suppressHydrationWarning`: A boolean. If you use [server rendering,](/reference/react-dom/server) normally there is a warning when the server and the client render different content. In some rare cases (like timestamps), it is very hard or impossible to guarantee an exact match. If you set `suppressHydrationWarning` to `true`, React will not warn you about mismatches in the attributes and the content of that element. It only works one level deep, and is intended to be used as an escape hatch. Don't overuse it. [Read about suppressing hydration errors.](/reference/react-dom/client/hydrateRoot#suppressing-unavoidable-hydration-mismatch-errors)
+
+-   `style`: An object with CSS styles, for example `{ fontWeight: 'bold', margin: 20 }`. Similarly to the DOM [`style`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) property, the CSS property names need to be written as `camelCase`, for example `fontWeight` instead of `font-weight`. You can pass strings or numbers as values. If you pass a number, like `width: 100`, React will automatically append `px` ("pixels") to the value unless it's a [unitless property.](https://github.com/facebook/react/blob/81d4ee9ca5c405dce62f64e61506b8e155f38d8d/packages/react-dom-bindings/src/shared/CSSProperty.js#L8-L57) We recommend using `style` only for dynamic styles where you don't know the style values ahead of time. In other cases, applying plain CSS classes with `className` is more efficient. [Read more about `className` and `style`.](#applying-css-styles)
+
+These standard DOM props are also supported for all built-in components:
+
+-   [`accessKey`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey): A string. Specifies a keyboard shortcut for the element. [Not generally recommended.](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey#accessibility_concerns)
+-   [`aria-*`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes): ARIA attributes let you specify the accessibility tree information for this element. See [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes) for a complete reference. In React, all ARIA attribute names are exactly the same as in HTML.
+-   [`autoCapitalize`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize): A string. Specifies whether and how the user input should be capitalized.
+-   [`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className): A string. Specifies the element's CSS class name. [Read more about applying CSS styles.](#applying-css-styles)
+-   [`contentEditable`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contenteditable): A boolean. If `true`, the browser lets the user edit the rendered element directly. This is used to implement rich text input libraries like [Lexical.](https://lexical.dev/) React warns if you try to pass React children to an element with `contentEditable={true}` because React will not be able to update its content after user edits.
+-   [`data-*`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/data-*): Data attributes let you attach some string data to the element, for example `data-fruit="banana"`. In React, they are not commonly used because you would usually read data from props or state instead.
+-   [`dir`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir): Either `'ltr'` or `'rtl'`. Specifies the text direction of the element.
+-   [`draggable`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable): A boolean. Specifies whether the element is draggable. Part of [HTML Drag and Drop API.](https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API)
+-   [`enterKeyHint`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/enterKeyHint): A string. Specifies which action to present for the enter key on virtual keyboards.
+-   [`htmlFor`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/htmlFor): A string. For [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label) and [`<output>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output), lets you [associate the label with some control.](/reference/react-dom/components/input#providing-a-label-for-an-input) Same as [`for` HTML attribute.](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/for) React uses the standard DOM property names (`htmlFor`) instead of HTML attribute names.
+-   [`hidden`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden): A boolean or a string. Specifies whether the element should be hidden.
+-   [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id): A string. Specifies a unique identifier for this element, which can be used to find it later or connect it with other elements. Generate it with [`useId`](/reference/react/useId) to avoid clashes between multiple instances of the same component.
+-   [`is`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/is): A string. If specified, the component will behave like a [custom element.](/reference/react-dom/components#custom-html-elements)
+-   [`inputMode`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode): A string. Specifies what kind of keyboard to display (for example, text, number or telephone).
+-   [`itemProp`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemprop): A string. Specifies which property the element represents for structured data crawlers.
+-   [`lang`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang): A string. Specifies the language of the element.
+-   [`onAnimationEnd`](https://developer.mozilla.org/en-US/docs/Web/API/Element/animationend_event): An [`AnimationEvent` handler](#animationevent-handler) function. Fires when a CSS animation completes.
+-   `onAnimationEndCapture`: A version of `onAnimationEnd` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onAnimationIteration`](https://developer.mozilla.org/en-US/docs/Web/API/Element/animationiteration_event): An [`AnimationEvent` handler](#animationevent-handler) function. Fires when an iteration of a CSS animation ends, and another one begins.
+-   `onAnimationIterationCapture`: A version of `onAnimationIteration` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onAnimationStart`](https://developer.mozilla.org/en-US/docs/Web/API/Element/animationstart_event): An [`AnimationEvent` handler](#animationevent-handler) function. Fires when a CSS animation starts.
+-   `onAnimationStartCapture`: `onAnimationStart`, but fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onAuxClick`](https://developer.mozilla.org/en-US/docs/Web/API/Element/auxclick_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when a non-primary pointer button was clicked.
+-   `onAuxClickCapture`: A version of `onAuxClick` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   `onBeforeInput`: An [`InputEvent` handler](#inputevent-handler) function. Fires before the value of an editable element is modified. React does _not_ yet use the native [`beforeinput`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/beforeinput_event) event, and instead attempts to polyfill it using other events.
+-   `onBeforeInputCapture`: A version of `onBeforeInput` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   `onBlur`: A [`FocusEvent` handler](#focusevent-handler) function. Fires when an element lost focus. Unlike the built-in browser [`blur`](https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event) event, in React the `onBlur` event bubbles.
+-   `onBlurCapture`: A version of `onBlur` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onClick`](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the primary button was clicked on the pointing device.
+-   `onClickCapture`: A version of `onClick` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onCompositionStart`](https://developer.mozilla.org/en-US/docs/Web/API/Element/compositionstart_event): A [`CompositionEvent` handler](#compositionevent-handler) function. Fires when an [input method editor](https://developer.mozilla.org/en-US/docs/Glossary/Input_method_editor) starts a new composition session.
+-   `onCompositionStartCapture`: A version of `onCompositionStart` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onCompositionEnd`](https://developer.mozilla.org/en-US/docs/Web/API/Element/compositionend_event): A [`CompositionEvent` handler](#compositionevent-handler) function. Fires when an [input method editor](https://developer.mozilla.org/en-US/docs/Glossary/Input_method_editor) completes or cancels a composition session.
+-   `onCompositionEndCapture`: A version of `onCompositionEnd` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onCompositionUpdate`](https://developer.mozilla.org/en-US/docs/Web/API/Element/compositionupdate_event): A [`CompositionEvent` handler](#compositionevent-handler) function. Fires when an [input method editor](https://developer.mozilla.org/en-US/docs/Glossary/Input_method_editor) receives a new character.
+-   `onCompositionUpdateCapture`: A version of `onCompositionUpdate` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onContextMenu`](https://developer.mozilla.org/en-US/docs/Web/API/Element/contextmenu_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the user tries to open a context menu.
+-   `onContextMenuCapture`: A version of `onContextMenu` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onCopy`](https://developer.mozilla.org/en-US/docs/Web/API/Element/copy_event): A [`ClipboardEvent` handler](#clipboardevent-handler) function. Fires when the user tries to copy something into the clipboard.
+-   `onCopyCapture`: A version of `onCopy` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onCut`](https://developer.mozilla.org/en-US/docs/Web/API/Element/cut_event): A [`ClipboardEvent` handler](#clipboardevent-handler) function. Fires when the user tries to cut something into the clipboard.
+-   `onCutCapture`: A version of `onCut` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   `onDoubleClick`: A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the user clicks twice. Corresponds to the browser [`dblclick` event.](https://developer.mozilla.org/en-US/docs/Web/API/Element/dblclick_event)
+-   `onDoubleClickCapture`: A version of `onDoubleClick` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onDrag`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/drag_event): A [`DragEvent` handler](#dragevent-handler) function. Fires while the user is dragging something.
+-   `onDragCapture`: A version of `onDrag` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onDragEnd`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dragend_event): A [`DragEvent` handler](#dragevent-handler) function. Fires when the user stops dragging something.
+-   `onDragEndCapture`: A version of `onDragEnd` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onDragEnter`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dragenter_event): A [`DragEvent` handler](#dragevent-handler) function. Fires when the dragged content enters a valid drop target.
+-   `onDragEnterCapture`: A version of `onDragEnter` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onDragOver`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dragover_event): A [`DragEvent` handler](#dragevent-handler) function. Fires on a valid drop target while the dragged content is dragged over it. You must call `e.preventDefault()` here to allow dropping.
+-   `onDragOverCapture`: A version of `onDragOver` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onDragStart`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dragstart_event): A [`DragEvent` handler](#dragevent-handler) function. Fires when the user starts dragging an element.
+-   `onDragStartCapture`: A version of `onDragStart` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onDrop`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/drop_event): A [`DragEvent` handler](#dragevent-handler) function. Fires when something is dropped on a valid drop target.
+-   `onDropCapture`: A version of `onDrop` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   `onFocus`: A [`FocusEvent` handler](#focusevent-handler) function. Fires when an element lost focus. Unlike the built-in browser [`focus`](https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event) event, in React the `onFocus` event bubbles.
+-   `onFocusCapture`: A version of `onFocus` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onGotPointerCapture`](https://developer.mozilla.org/en-US/docs/Web/API/Element/gotpointercapture_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when an element programmatically captures a pointer.
+-   `onGotPointerCaptureCapture`: A version of `onGotPointerCapture` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onKeyDown`](https://developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event): A [`KeyboardEvent` handler](#pointerevent-handler) function. Fires when a key is pressed.
+-   `onKeyDownCapture`: A version of `onKeyDown` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onKeyPress`](https://developer.mozilla.org/en-US/docs/Web/API/Element/keypress_event): A [`KeyboardEvent` handler](#pointerevent-handler) function. Deprecated. Use `onKeyDown` or `onBeforeInput` instead.
+-   `onKeyPressCapture`: A version of `onKeyPress` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onKeyUp`](https://developer.mozilla.org/en-US/docs/Web/API/Element/keyup_event): A [`KeyboardEvent` handler](#pointerevent-handler) function. Fires when a key is released.
+-   `onKeyUpCapture`: A version of `onKeyUp` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onLostPointerCapture`](https://developer.mozilla.org/en-US/docs/Web/API/Element/lostpointercapture_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when an element stops capturing a pointer.
+-   `onLostPointerCaptureCapture`: A version of `onLostPointerCapture` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onMouseDown`](https://developer.mozilla.org/en-US/docs/Web/API/Element/mousedown_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the pointer is pressed down.
+-   `onMouseDownCapture`: A version of `onMouseDown` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onMouseEnter`](https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the pointer moves inside an element. Does not have a capture phase. Instead, `onMouseLeave` and `onMouseEnter` propagate from the element being left to the one being entered.
+-   [`onMouseLeave`](https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the pointer moves outside an element. Does not have a capture phase. Instead, `onMouseLeave` and `onMouseEnter` propagate from the element being left to the one being entered.
+-   [`onMouseMove`](https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the pointer changes coordinates.
+-   `onMouseMoveCapture`: A version of `onMouseMove` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onMouseOut`](https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseout_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the pointer moves outside an element, or if it moves into a child element.
+-   `onMouseOutCapture`: A version of `onMouseOut` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onMouseUp`](https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseup_event): A [`MouseEvent` handler](#mouseevent-handler) function. Fires when the pointer is released.
+-   `onMouseUpCapture`: A version of `onMouseUp` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPointerCancel`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointercancel_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when the browser cancels a pointer interaction.
+-   `onPointerCancelCapture`: A version of `onPointerCancel` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPointerDown`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointerdown_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when a pointer becomes active.
+-   `onPointerDownCapture`: A version of `onPointerDown` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPointerEnter`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointerenter_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when a pointer moves inside an element. Does not have a capture phase. Instead, `onPointerLeave` and `onPointerEnter` propagate from the element being left to the one being entered.
+-   [`onPointerLeave`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointerleave_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when a pointer moves outside an element. Does not have a capture phase. Instead, `onPointerLeave` and `onPointerEnter` propagate from the element being left to the one being entered.
+-   [`onPointerMove`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when a pointer changes coordinates.
+-   `onPointerMoveCapture`: A version of `onPointerMove` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPointerOut`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointerout_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when a pointer moves outside an element, if the pointer interaction is cancelled, and [a few other reasons.](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointerout_event)
+-   `onPointerOutCapture`: A version of `onPointerOut` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPointerUp`](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointerup_event): A [`PointerEvent` handler](#pointerevent-handler) function. Fires when a pointer is no longer active.
+-   `onPointerUpCapture`: A version of `onPointerUp` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPaste`](https://developer.mozilla.org/en-US/docs/Web/API/Element/paste_event): A [`ClipboardEvent` handler](#clipboardevent-handler) function. Fires when the user tries to paste something from the clipboard.
+-   `onPasteCapture`: A version of `onPaste` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onScroll`](https://developer.mozilla.org/en-US/docs/Web/API/Element/scroll_event): An [`Event` handler](#event-handler) function. Fires when an element has been scrolled. This event does not bubble.
+-   `onScrollCapture`: A version of `onScroll` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onSelect`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select_event): An [`Event` handler](#event-handler) function. Fires after the selection inside an editable element like an input changes. React extends the `onSelect` event to work for `contentEditable={true}` elements as well. In addition, React extends it to fire for empty selection and on edits (which may affect the selection).
+-   `onSelectCapture`: A version of `onSelect` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onTouchCancel`](https://developer.mozilla.org/en-US/docs/Web/API/Element/touchcancel_event): A [`TouchEvent` handler](#touchevent-handler) function. Fires when the browser cancels a touch interaction.
+-   `onTouchCancelCapture`: A version of `onTouchCancel` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onTouchEnd`](https://developer.mozilla.org/en-US/docs/Web/API/Element/touchend_event): A [`TouchEvent` handler](#touchevent-handler) function. Fires when one or more touch points are removed.
+-   `onTouchEndCapture`: A version of `onTouchEnd` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onTouchMove`](https://developer.mozilla.org/en-US/docs/Web/API/Element/touchmove_event): A [`TouchEvent` handler](#touchevent-handler) function. Fires one or more touch points are moved.
+-   `onTouchMoveCapture`: A version of `onTouchMove` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onTouchStart`](https://developer.mozilla.org/en-US/docs/Web/API/Element/touchstart_event): A [`TouchEvent` handler](#touchevent-handler) function. Fires when one or more touch points are placed.
+-   `onTouchStartCapture`: A version of `onTouchStart` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onTransitionEnd`](https://developer.mozilla.org/en-US/docs/Web/API/Element/transitionend_event): A [`TransitionEvent` handler](#transitionevent-handler) function. Fires when a CSS transition completes.
+-   `onTransitionEndCapture`: A version of `onTransitionEnd` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onWheel`](https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event): A [`WheelEvent` handler](#wheelevent-handler) function. Fires when the user rotates a wheel button.
+-   `onWheelCapture`: A version of `onWheel` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`role`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles): A string. Specifies the element role explicitly for assistive technologies. nt.
+-   [`slot`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles): A string. Specifies the slot name when using shadow DOM. In React, an equivalent pattern is typically achieved by passing JSX as props, for example `<Layout left={<Sidebar />} right={<Content />} />`.
+-   [`spellCheck`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/spellcheck): A boolean or null. If explicitly set to `true` or `false`, enables or disables spellchecking.
+-   [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex): A number. Overrides the default Tab button behavior. [Avoid using values other than `-1` and `0`.](https://www.tpgi.com/using-the-tabindex-attribute/)
+-   [`title`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/title): A string. Specifies the tooltip text for the element.
+-   [`translate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/translate): Either `'yes'` or `'no'`. Passing `'no'` excludes the element content from being translated.
+
+You can also pass custom attributes as props, for example `mycustomprop="someValue"`. This can be useful when integrating with third-party libraries. The custom attribute name must be lowercase and must not start with `on`. The value will be converted to a string. If you pass `null` or `undefined`, the custom attribute will be removed.
+
+These events fire only for the [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) elements:
+
+-   [`onReset`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/reset_event): An [`Event` handler](#event-handler) function. Fires when a form gets reset.
+-   `onResetCapture`: A version of `onReset` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onSubmit`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event): An [`Event` handler](#event-handler) function. Fires when a form gets submitted.
+-   `onSubmitCapture`: A version of `onSubmit` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+
+These events fire only for the [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) elements. Unlike browser events, they bubble in React:
+
+-   [`onCancel`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/cancel_event): An [`Event` handler](#event-handler) function. Fires when the user tries to dismiss the dialog.
+-   `onCancelCapture`: A version of `onCancel` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events) capture-phase-events)
+-   [`onClose`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/close_event): An [`Event` handler](#event-handler) function. Fires when a dialog has been closed.
+-   `onCloseCapture`: A version of `onClose` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+
+These events fire only for the [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) elements. Unlike browser events, they bubble in React:
+
+-   [`onToggle`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement/toggle_event): An [`Event` handler](#event-handler) function. Fires when the user toggles the details.
+-   `onToggleCapture`: A version of `onToggle` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events) capture-phase-events)
+
+These events fire for [`<img>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img), [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe), [`<object>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object), [`<embed>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed), [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link), and [SVG `<image>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Image_Tag) elements. Unlike browser events, they bubble in React:
+
+-   `onLoad`: An [`Event` handler](#event-handler) function. Fires when the resource has loaded.
+-   `onLoadCapture`: A version of `onLoad` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onError`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/error_event): An [`Event` handler](#event-handler) function. Fires when the resource could not be loaded.
+-   `onErrorCapture`: A version of `onError` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+
+These events fire for resources like [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio) and [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video). Unlike browser events, they bubble in React:
+
+-   [`onAbort`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/abort_event): An [`Event` handler](#event-handler) function. Fires when the resource has not fully loaded, but not due to an error.
+-   `onAbortCapture`: A version of `onAbort` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onCanPlay`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/canplay_event): An [`Event` handler](#event-handler) function. Fires when there's enough data to start playing, but not enough to play to the end without buffering.
+-   `onCanPlayCapture`: A version of `onCanPlay` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onCanPlayThrough`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/canplaythrough_event): An [`Event` handler](#event-handler) function. Fires when there's enough data that it's likely possible to start playing without buffering until the end.
+-   `onCanPlayThroughCapture`: A version of `onCanPlayThrough` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onDurationChange`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/durationchange_event): An [`Event` handler](#event-handler) function. Fires when the media duration has updated.
+-   `onDurationChangeCapture`: A version of `onDurationChange` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onEmptied`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/emptied_event): An [`Event` handler](#event-handler) function. Fires when the media has become empty.
+-   `onEmptiedCapture`: A version of `onEmptied` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onEncrypted`](https://w3c.github.io/encrypted-media/#dom-evt-encrypted): An [`Event` handler](#event-handler) function. Fires when the browser encounters encrypted media.
+-   `onEncryptedCapture`: A version of `onEncrypted` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onEnded`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/ended_event): An [`Event` handler](#event-handler) function. Fires when the playback stops because there's nothing left to play.
+-   `onEndedCapture`: A version of `onEnded` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onError`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/error_event): An [`Event` handler](#event-handler) function. Fires when the resource could not be loaded.
+-   `onErrorCapture`: A version of `onError` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onLoadedData`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/loadeddata_event): An [`Event` handler](#event-handler) function. Fires when the current playback frame has loaded.
+-   `onLoadedDataCapture`: A version of `onLoadedData` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onLoadedMetadata`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/loadedmetadata_event): An [`Event` handler](#event-handler) function. Fires when metadata has loaded.
+-   `onLoadedMetadataCapture`: A version of `onLoadedMetadata` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onLoadStart`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/loadstart_event): An [`Event` handler](#event-handler) function. Fires when the browser started loading the resource.
+-   `onLoadStartCapture`: A version of `onLoadStart` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPause`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/pause_event): An [`Event` handler](#event-handler) function. Fires when the media was paused.
+-   `onPauseCapture`: A version of `onPause` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPlay`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play_event): An [`Event` handler](#event-handler) function. Fires when the media is no longer paused.
+-   `onPlayCapture`: A version of `onPlay` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onPlaying`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/playing_event): An [`Event` handler](#event-handler) function. Fires when the media starts or restarts playing.
+-   `onPlayingCapture`: A version of `onPlaying` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onProgress`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/progress_event): An [`Event` handler](#event-handler) function. Fires periodically while the resource is loading.
+-   `onProgressCapture`: A version of `onProgress` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onRateChange`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/ratechange_event): An [`Event` handler](#event-handler) function. Fires when playback rate changes.
+-   `onRateChangeCapture`: A version of `onRateChange` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   `onResize`: An [`Event` handler](#event-handler) function. Fires when video changes size.
+-   `onResizeCapture`: A version of `onResize` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onSeeked`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/seeked_event): An [`Event` handler](#event-handler) function. Fires when a seek operation completes.
+-   `onSeekedCapture`: A version of `onSeeked` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onSeeking`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/seeking_event): An [`Event` handler](#event-handler) function. Fires when a seek operation starts.
+-   `onSeekingCapture`: A version of `onSeeking` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onStalled`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/stalled_event): An [`Event` handler](#event-handler) function. Fires when the browser is waiting for data but it keeps not loading.
+-   `onStalledCapture`: A version of `onStalled` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onSuspend`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/suspend_event): An [`Event` handler](#event-handler) function. Fires when loading the resource was suspended.
+-   `onSuspendCapture`: A version of `onSuspend` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onTimeUpdate`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/timeupdate_event): An [`Event` handler](#event-handler) function. Fires when the current playback time updates.
+-   `onTimeUpdateCapture`: A version of `onTimeUpdate` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onVolumeChange`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/volumechange_event): An [`Event` handler](#event-handler) function. Fires when the volume has changed.
+-   `onVolumeChangeCapture`: A version of `onVolumeChange` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+-   [`onWaiting`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/waiting_event): An [`Event` handler](#event-handler) function. Fires when the playback stopped due to temporary lack of data.
+-   `onWaitingCapture`: A version of `onWaiting` that fires in the [capture phase.](/learn/responding-to-events#capture-phase-events)
+
+#### Caveats
+
+-   You cannot pass both `children` and `dangerouslySetInnerHTML` at the same time.
+-   Some events (like `onAbort` and `onLoad`) don't bubble in the browser, but bubble in React.
diff --git a/docs/src/reference/common-types.md b/docs/src/reference/common-types.md
deleted file mode 100644
index 950107e6f..000000000
--- a/docs/src/reference/common-types.md
+++ /dev/null
@@ -1,3 +0,0 @@
----
-title: Common Types 🚧
----
diff --git a/docs/src/reference/use-callback.md b/docs/src/reference/use-callback.md
index 0eb38f4a4..c4978fb23 100644
--- a/docs/src/reference/use-callback.md
+++ b/docs/src/reference/use-callback.md
@@ -1,3 +1,952 @@
 ---
 title: Use Callback 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useCallback` is a React Hook that lets you cache a function definition between re-renders.
+
+```js
+const cachedFn = useCallback(fn, dependencies);
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useCallback(fn, dependencies)`
+
+Call `useCallback` at the top level of your component to cache a function definition between re-renders:
+
+```js
+import { useCallback } from 'react';
+
+export default function ProductPage({ productId, referrer, theme }) {
+  const handleSubmit = useCallback((orderDetails) => {
+    post('/product/' + productId + '/buy', {
+      referrer,
+      orderDetails,
+    });
+  }, [productId, referrer]);
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `fn`: The function value that you want to cache. It can take any arguments and return any values. React will return (not call!) your function back to you during the initial render. On next renders, React will give you the same function again if the `dependencies` have not changed since the last render. Otherwise, it will give you the function that you have passed during the current render, and store it in case it can be reused later. React will not call your function. The function is returned to you so you can decide when and whether to call it.
+
+-   `dependencies`: The list of all reactive values referenced inside of the `fn` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison algorithm.
+
+#### Returns
+
+On the initial render, `useCallback` returns the `fn` function you have passed.
+
+During subsequent renders, it will either return an already stored `fn` function from the last render (if the dependencies haven't changed), or return the `fn` function you have passed during this render.
+
+#### Caveats
+
+-   `useCallback` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a new component and move the state into it.
+-   React **will not throw away the cached function unless there is a specific reason to do that.** For example, in development, React throws away the cache when you edit the file of your component. Both in development and in production, React will throw away the cache if your component suspends during the initial mount. In the future, React may add more features that take advantage of throwing away the cache--for example, if React adds built-in support for virtualized lists in the future, it would make sense to throw away the cache for items that scroll out of the virtualized table viewport. This should match your expectations if you rely on `useCallback` as a performance optimization. Otherwise, a [state variable](/reference/react/useState#im-trying-to-set-state-to-a-function-but-it-gets-called-instead) or a [ref](/reference/react/useRef#avoiding-recreating-the-ref-contents) may be more appropriate.
+
+---
+
+## Usage
+
+### Skipping re-rendering of components
+
+When you optimize rendering performance, you will sometimes need to cache the functions that you pass to child components. Let's first look at the syntax for how to do this, and then see in which cases it's useful.
+
+To cache a function between re-renders of your component, wrap its definition into the `useCallback` Hook:
+
+```js
+import { useCallback } from 'react';
+
+function ProductPage({ productId, referrer, theme }) {
+  const handleSubmit = useCallback((orderDetails) => {
+    post('/product/' + productId + '/buy', {
+      referrer,
+      orderDetails,
+    });
+  }, [productId, referrer]);
+  // ...
+```
+
+You need to pass two things to `useCallback`:
+
+1. A function definition that you want to cache between re-renders.
+2. A <CodeStep step={2}>list of dependencies</CodeStep> including every value within your component that's used inside your function.
+
+On the initial render, the <CodeStep step={3}>returned function</CodeStep> you'll get from `useCallback` will be the function you passed.
+
+On the following renders, React will compare the <CodeStep step={2}>dependencies</CodeStep> with the dependencies you passed during the previous render. If none of the dependencies have changed (compared with [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)), `useCallback` will return the same function as before. Otherwise, `useCallback` will return the function you passed on _this_ render.
+
+In other words, `useCallback` caches a function between re-renders until its dependencies change.
+
+**Let's walk through an example to see when this is useful.**
+
+Say you're passing a `handleSubmit` function down from the `ProductPage` to the `ShippingForm` component:
+
+```js
+function ProductPage({ productId, referrer, theme }) {
+  // ...
+  return (
+    <div className={theme}>
+      <ShippingForm onSubmit={handleSubmit} />
+    </div>
+  );
+```
+
+You've noticed that toggling the `theme` prop freezes the app for a moment, but if you remove `<ShippingForm />` from your JSX, it feels fast. This tells you that it's worth trying to optimize the `ShippingForm` component.
+
+**By default, when a component re-renders, React re-renders all of its children recursively.** This is why, when `ProductPage` re-renders with a different `theme`, the `ShippingForm` component _also_ re-renders. This is fine for components that don't require much calculation to re-render. But if you verified a re-render is slow, you can tell `ShippingForm` to skip re-rendering when its props are the same as on last render by wrapping it in [`memo`:](/reference/react/memo)
+
+```js
+import { memo } from "react";
+
+const ShippingForm = memo(function ShippingForm({ onSubmit }) {
+	// ...
+});
+```
+
+**With this change, `ShippingForm` will skip re-rendering if all of its props are the _same_ as on the last render.** This is when caching a function becomes important! Let's say you defined `handleSubmit` without `useCallback`:
+
+```js
+function ProductPage({ productId, referrer, theme }) {
+	// Every time the theme changes, this will be a different function...
+	function handleSubmit(orderDetails) {
+		post("/product/" + productId + "/buy", {
+			referrer,
+			orderDetails,
+		});
+	}
+
+	return (
+		<div className={theme}>
+			{/* ... so ShippingForm's props will never be the same, and it will re-render every time */}
+			<ShippingForm onSubmit={handleSubmit} />
+		</div>
+	);
+}
+```
+
+**In JavaScript, a `function () {}` or `() => {}` always creates a _different_ function,** similar to how the `{}` object literal always creates a new object. Normally, this wouldn't be a problem, but it means that `ShippingForm` props will never be the same, and your [`memo`](/reference/react/memo) optimization won't work. This is where `useCallback` comes in handy:
+
+```js
+function ProductPage({ productId, referrer, theme }) {
+	// Tell React to cache your function between re-renders...
+	const handleSubmit = useCallback(
+		(orderDetails) => {
+			post("/product/" + productId + "/buy", {
+				referrer,
+				orderDetails,
+			});
+		},
+		[productId, referrer]
+	); // ...so as long as these dependencies don't change...
+
+	return (
+		<div className={theme}>
+			{/* ...ShippingForm will receive the same props and can skip re-rendering */}
+			<ShippingForm onSubmit={handleSubmit} />
+		</div>
+	);
+}
+```
+
+**By wrapping `handleSubmit` in `useCallback`, you ensure that it's the _same_ function between the re-renders** (until dependencies change). You don't _have to_ wrap a function in `useCallback` unless you do it for some specific reason. In this example, the reason is that you pass it to a component wrapped in [`memo`,](/reference/react/memo) and this lets it skip re-rendering. There are other reasons you might need `useCallback` which are described further on this page.
+
+<Note>
+
+**You should only rely on `useCallback` as a performance optimization.** If your code doesn't work without it, find the underlying problem and fix it first. Then you may add `useCallback` back.
+
+</Note>
+
+<DeepDive>
+
+#### How is useCallback related to useMemo?
+
+You will often see [`useMemo`](/reference/react/useMemo) alongside `useCallback`. They are both useful when you're trying to optimize a child component. They let you [memoize](https://en.wikipedia.org/wiki/Memoization) (or, in other words, cache) something you're passing down:
+
+```js
+import { useMemo, useCallback } from "react";
+
+function ProductPage({ productId, referrer }) {
+	const product = useData("/product/" + productId);
+
+	const requirements = useMemo(() => {
+		// Calls your function and caches its result
+		return computeRequirements(product);
+	}, [product]);
+
+	const handleSubmit = useCallback(
+		(orderDetails) => {
+			// Caches your function itself
+			post("/product/" + productId + "/buy", {
+				referrer,
+				orderDetails,
+			});
+		},
+		[productId, referrer]
+	);
+
+	return (
+		<div className={theme}>
+			<ShippingForm requirements={requirements} onSubmit={handleSubmit} />
+		</div>
+	);
+}
+```
+
+The difference is in _what_ they're letting you cache:
+
+-   **[`useMemo`](/reference/react/useMemo) caches the _result_ of calling your function.** In this example, it caches the result of calling `computeRequirements(product)` so that it doesn't change unless `product` has changed. This lets you pass the `requirements` object down without unnecessarily re-rendering `ShippingForm`. When necessary, React will call the function you've passed during rendering to calculate the result.
+-   **`useCallback` caches _the function itself._** Unlike `useMemo`, it does not call the function you provide. Instead, it caches the function you provided so that `handleSubmit` _itself_ doesn't change unless `productId` or `referrer` has changed. This lets you pass the `handleSubmit` function down without unnecessarily re-rendering `ShippingForm`. Your code won't run until the user submits the form.
+
+If you're already familiar with [`useMemo`,](/reference/react/useMemo) you might find it helpful to think of `useCallback` as this:
+
+```js
+// Simplified implementation (inside React)
+function useCallback(fn, dependencies) {
+	return useMemo(() => fn, dependencies);
+}
+```
+
+[Read more about the difference between `useMemo` and `useCallback`.](/reference/react/useMemo#memoizing-a-function)
+
+</DeepDive>
+
+<DeepDive>
+
+#### Should you add useCallback everywhere?
+
+If your app is like this site, and most interactions are coarse (like replacing a page or an entire section), memoization is usually unnecessary. On the other hand, if your app is more like a drawing editor, and most interactions are granular (like moving shapes), then you might find memoization very helpful.
+
+Caching a function with `useCallback` is only valuable in a few cases:
+
+-   You pass it as a prop to a component wrapped in [`memo`.](/reference/react/memo) You want to skip re-rendering if the value hasn't changed. Memoization lets your component re-render only if dependencies changed.
+-   The function you're passing is later used as a dependency of some Hook. For example, another function wrapped in `useCallback` depends on it, or you depend on this function from [`useEffect.`](/reference/react/useEffect)
+
+There is no benefit to wrapping a function in `useCallback` in other cases. There is no significant harm to doing that either, so some teams choose to not think about individual cases, and memoize as much as possible. The downside is that code becomes less readable. Also, not all memoization is effective: a single value that's "always new" is enough to break memoization for an entire component.
+
+Note that `useCallback` does not prevent _creating_ the function. You're always creating a function (and that's fine!), but React ignores it and gives you back a cached function if nothing changed.
+
+**In practice, you can make a lot of memoization unnecessary by following a few principles:**
+
+1. When a component visually wraps other components, let it [accept JSX as children.](/learn/passing-props-to-a-component#passing-jsx-as-children) Then, if the wrapper component updates its own state, React knows that its children don't need to re-render.
+1. Prefer local state and don't [lift state up](/learn/sharing-state-between-components) any further than necessary. Don't keep transient state like forms and whether an item is hovered at the top of your tree or in a global state library.
+1. Keep your [rendering logic pure.](/learn/keeping-components-pure) If re-rendering a component causes a problem or produces some noticeable visual artifact, it's a bug in your component! Fix the bug instead of adding memoization.
+1. Avoid [unnecessary Effects that update state.](/learn/you-might-not-need-an-effect) Most performance problems in React apps are caused by chains of updates originating from Effects that cause your components to render over and over.
+1. Try to [remove unnecessary dependencies from your Effects.](/learn/removing-effect-dependencies) For example, instead of memoization, it's often simpler to move some object or a function inside an Effect or outside the component.
+
+If a specific interaction still feels laggy, [use the React Developer Tools profiler](https://legacy.reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html) to see which components benefit the most from memoization, and add memoization where needed. These principles make your components easier to debug and understand, so it's good to follow them in any case. In long term, we're researching [doing memoization automatically](https://www.youtube.com/watch?v=lGEMwh32soc) to solve this once and for all.
+
+</DeepDive>
+
+<Recipes titleText="The difference between useCallback and declaring a function directly" titleId="examples-rerendering">
+
+#### Skipping re-rendering with `useCallback` and `memo`
+
+In this example, the `ShippingForm` component is **artificially slowed down** so that you can see what happens when a React component you're rendering is genuinely slow. Try incrementing the counter and toggling the theme.
+
+Incrementing the counter feels slow because it forces the slowed down `ShippingForm` to re-render. That's expected because the counter has changed, and so you need to reflect the user's new choice on the screen.
+
+Next, try toggling the theme. **Thanks to `useCallback` together with [`memo`](/reference/react/memo), it’s fast despite the artificial slowdown!** `ShippingForm` skipped re-rendering because the `handleSubmit` function has not changed. The `handleSubmit` function has not changed because both `productId` and `referrer` (your `useCallback` dependencies) haven't changed since last render.
+
+```js
+import { useState } from "react";
+import ProductPage from "./ProductPage.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<ProductPage
+				referrerId="wizard_of_oz"
+				productId={123}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useCallback } from "react";
+import ShippingForm from "./ShippingForm.js";
+
+export default function ProductPage({ productId, referrer, theme }) {
+	const handleSubmit = useCallback(
+		(orderDetails) => {
+			post("/product/" + productId + "/buy", {
+				referrer,
+				orderDetails,
+			});
+		},
+		[productId, referrer]
+	);
+
+	return (
+		<div className={theme}>
+			<ShippingForm onSubmit={handleSubmit} />
+		</div>
+	);
+}
+
+function post(url, data) {
+	// Imagine this sends a request...
+	console.log("POST /" + url);
+	console.log(data);
+}
+```
+
+```js
+import { memo, useState } from "react";
+
+const ShippingForm = memo(function ShippingForm({ onSubmit }) {
+	const [count, setCount] = useState(1);
+
+	console.log("[ARTIFICIALLY SLOW] Rendering <ShippingForm />");
+	let startTime = performance.now();
+	while (performance.now() - startTime < 500) {
+		// Do nothing for 500 ms to emulate extremely slow code
+	}
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		const formData = new FormData(e.target);
+		const orderDetails = {
+			...Object.fromEntries(formData),
+			count,
+		};
+		onSubmit(orderDetails);
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<p>
+				<b>
+					Note: <code>ShippingForm</code> is artificially slowed down!
+				</b>
+			</p>
+			<label>
+				Number of items:
+				<button type="button" onClick={() => setCount(count - 1)}>
+					–
+				</button>
+				{count}
+				<button type="button" onClick={() => setCount(count + 1)}>
+					+
+				</button>
+			</label>
+			<label>
+				Street:
+				<input name="street" />
+			</label>
+			<label>
+				City:
+				<input name="city" />
+			</label>
+			<label>
+				Postal code:
+				<input name="zipCode" />
+			</label>
+			<button type="submit">Submit</button>
+		</form>
+	);
+});
+
+export default ShippingForm;
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+input {
+	margin-left: 5px;
+}
+
+button[type="button"] {
+	margin: 5px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+#### Always re-rendering a component
+
+In this example, the `ShippingForm` implementation is also **artificially slowed down** so that you can see what happens when some React component you're rendering is genuinely slow. Try incrementing the counter and toggling the theme.
+
+Unlike in the previous example, toggling the theme is also slow now! This is because **there is no `useCallback` call in this version,** so `handleSubmit` is always a new function, and the slowed down `ShippingForm` component can't skip re-rendering.
+
+```js
+import { useState } from "react";
+import ProductPage from "./ProductPage.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<ProductPage
+				referrerId="wizard_of_oz"
+				productId={123}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import ShippingForm from "./ShippingForm.js";
+
+export default function ProductPage({ productId, referrer, theme }) {
+	function handleSubmit(orderDetails) {
+		post("/product/" + productId + "/buy", {
+			referrer,
+			orderDetails,
+		});
+	}
+
+	return (
+		<div className={theme}>
+			<ShippingForm onSubmit={handleSubmit} />
+		</div>
+	);
+}
+
+function post(url, data) {
+	// Imagine this sends a request...
+	console.log("POST /" + url);
+	console.log(data);
+}
+```
+
+```js
+import { memo, useState } from "react";
+
+const ShippingForm = memo(function ShippingForm({ onSubmit }) {
+	const [count, setCount] = useState(1);
+
+	console.log("[ARTIFICIALLY SLOW] Rendering <ShippingForm />");
+	let startTime = performance.now();
+	while (performance.now() - startTime < 500) {
+		// Do nothing for 500 ms to emulate extremely slow code
+	}
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		const formData = new FormData(e.target);
+		const orderDetails = {
+			...Object.fromEntries(formData),
+			count,
+		};
+		onSubmit(orderDetails);
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<p>
+				<b>
+					Note: <code>ShippingForm</code> is artificially slowed down!
+				</b>
+			</p>
+			<label>
+				Number of items:
+				<button type="button" onClick={() => setCount(count - 1)}>
+					–
+				</button>
+				{count}
+				<button type="button" onClick={() => setCount(count + 1)}>
+					+
+				</button>
+			</label>
+			<label>
+				Street:
+				<input name="street" />
+			</label>
+			<label>
+				City:
+				<input name="city" />
+			</label>
+			<label>
+				Postal code:
+				<input name="zipCode" />
+			</label>
+			<button type="submit">Submit</button>
+		</form>
+	);
+});
+
+export default ShippingForm;
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+input {
+	margin-left: 5px;
+}
+
+button[type="button"] {
+	margin: 5px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+However, here is the same code **with the artificial slowdown removed.** Does the lack of `useCallback` feel noticeable or not?
+
+```js
+import { useState } from "react";
+import ProductPage from "./ProductPage.js";
+
+export default function App() {
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<ProductPage
+				referrerId="wizard_of_oz"
+				productId={123}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import ShippingForm from "./ShippingForm.js";
+
+export default function ProductPage({ productId, referrer, theme }) {
+	function handleSubmit(orderDetails) {
+		post("/product/" + productId + "/buy", {
+			referrer,
+			orderDetails,
+		});
+	}
+
+	return (
+		<div className={theme}>
+			<ShippingForm onSubmit={handleSubmit} />
+		</div>
+	);
+}
+
+function post(url, data) {
+	// Imagine this sends a request...
+	console.log("POST /" + url);
+	console.log(data);
+}
+```
+
+```js
+import { memo, useState } from "react";
+
+const ShippingForm = memo(function ShippingForm({ onSubmit }) {
+	const [count, setCount] = useState(1);
+
+	console.log("Rendering <ShippingForm />");
+
+	function handleSubmit(e) {
+		e.preventDefault();
+		const formData = new FormData(e.target);
+		const orderDetails = {
+			...Object.fromEntries(formData),
+			count,
+		};
+		onSubmit(orderDetails);
+	}
+
+	return (
+		<form onSubmit={handleSubmit}>
+			<label>
+				Number of items:
+				<button type="button" onClick={() => setCount(count - 1)}>
+					–
+				</button>
+				{count}
+				<button type="button" onClick={() => setCount(count + 1)}>
+					+
+				</button>
+			</label>
+			<label>
+				Street:
+				<input name="street" />
+			</label>
+			<label>
+				City:
+				<input name="city" />
+			</label>
+			<label>
+				Postal code:
+				<input name="zipCode" />
+			</label>
+			<button type="submit">Submit</button>
+		</form>
+	);
+});
+
+export default ShippingForm;
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+input {
+	margin-left: 5px;
+}
+
+button[type="button"] {
+	margin: 5px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+Quite often, code without memoization works fine. If your interactions are fast enough, you don't need memoization.
+
+Keep in mind that you need to run React in production mode, disable [React Developer Tools](/learn/react-developer-tools), and use devices similar to the ones your app's users have in order to get a realistic sense of what's actually slowing down your app.
+
+</Recipes>
+
+---
+
+### Updating state from a memoized callback
+
+Sometimes, you might need to update state based on previous state from a memoized callback.
+
+This `handleAddTodo` function specifies `todos` as a dependency because it computes the next todos from it:
+
+```js
+function TodoList() {
+  const [todos, setTodos] = useState([]);
+
+  const handleAddTodo = useCallback((text) => {
+    const newTodo = { id: nextId++, text };
+    setTodos([...todos, newTodo]);
+  }, [todos]);
+  // ...
+```
+
+You'll usually want memoized functions to have as few dependencies as possible. When you read some state only to calculate the next state, you can remove that dependency by passing an [updater function](/reference/react/useState#updating-state-based-on-the-previous-state) instead:
+
+```js
+function TodoList() {
+  const [todos, setTodos] = useState([]);
+
+  const handleAddTodo = useCallback((text) => {
+    const newTodo = { id: nextId++, text };
+    setTodos(todos => [...todos, newTodo]);
+  }, []); // ✅ No need for the todos dependency
+  // ...
+```
+
+Here, instead of making `todos` a dependency and reading it inside, you pass an instruction about _how_ to update the state (`todos => [...todos, newTodo]`) to React. [Read more about updater functions.](/reference/react/useState#updating-state-based-on-the-previous-state)
+
+---
+
+### Preventing an Effect from firing too often
+
+Sometimes, you might want to call a function from inside an [Effect:](/learn/synchronizing-with-effects)
+
+```js
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  function createOptions() {
+    return {
+      serverUrl: 'https://localhost:1234',
+      roomId: roomId
+    };
+  }
+
+  useEffect(() => {
+    const options = createOptions();
+    const connection = createConnection();
+    connection.connect();
+    // ...
+```
+
+This creates a problem. [Every reactive value must be declared as a dependency of your Effect.](/learn/lifecycle-of-reactive-effects#react-verifies-that-you-specified-every-reactive-value-as-a-dependency) However, if you declare `createOptions` as a dependency, it will cause your Effect to constantly reconnect to the chat room:
+
+```js
+useEffect(() => {
+	const options = createOptions();
+	const connection = createConnection();
+	connection.connect();
+	return () => connection.disconnect();
+}, [createOptions]); // 🔴 Problem: This dependency changes on every render
+// ...
+```
+
+To solve this, you can wrap the function you need to call from an Effect into `useCallback`:
+
+```js
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  const createOptions = useCallback(() => {
+    return {
+      serverUrl: 'https://localhost:1234',
+      roomId: roomId
+    };
+  }, [roomId]); // ✅ Only changes when roomId changes
+
+  useEffect(() => {
+    const options = createOptions();
+    const connection = createConnection();
+    connection.connect();
+    return () => connection.disconnect();
+  }, [createOptions]); // ✅ Only changes when createOptions changes
+  // ...
+```
+
+This ensures that the `createOptions` function is the same between re-renders if the `roomId` is the same. **However, it's even better to remove the need for a function dependency.** Move your function _inside_ the Effect:
+
+```js
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  useEffect(() => {
+    function createOptions() { // ✅ No need for useCallback or function dependencies!
+      return {
+        serverUrl: 'https://localhost:1234',
+        roomId: roomId
+      };
+    }
+
+    const options = createOptions();
+    const connection = createConnection();
+    connection.connect();
+    return () => connection.disconnect();
+  }, [roomId]); // ✅ Only changes when roomId changes
+  // ...
+```
+
+Now your code is simpler and doesn't need `useCallback`. [Learn more about removing Effect dependencies.](/learn/removing-effect-dependencies#move-dynamic-objects-and-functions-inside-your-effect)
+
+---
+
+### Optimizing a custom Hook
+
+If you're writing a [custom Hook,](/learn/reusing-logic-with-custom-hooks) it's recommended to wrap any functions that it returns into `useCallback`:
+
+```js
+function useRouter() {
+	const { dispatch } = useContext(RouterStateContext);
+
+	const navigate = useCallback(
+		(url) => {
+			dispatch({ type: "navigate", url });
+		},
+		[dispatch]
+	);
+
+	const goBack = useCallback(() => {
+		dispatch({ type: "back" });
+	}, [dispatch]);
+
+	return {
+		navigate,
+		goBack,
+	};
+}
+```
+
+This ensures that the consumers of your Hook can optimize their own code when needed.
+
+---
+
+## Troubleshooting
+
+### Every time my component renders, `useCallback` returns a different function
+
+Make sure you've specified the dependency array as a second argument!
+
+If you forget the dependency array, `useCallback` will return a new function every time:
+
+```js
+function ProductPage({ productId, referrer }) {
+  const handleSubmit = useCallback((orderDetails) => {
+    post('/product/' + productId + '/buy', {
+      referrer,
+      orderDetails,
+    });
+  }); // 🔴 Returns a new function every time: no dependency array
+  // ...
+```
+
+This is the corrected version passing the dependency array as a second argument:
+
+```js
+function ProductPage({ productId, referrer }) {
+  const handleSubmit = useCallback((orderDetails) => {
+    post('/product/' + productId + '/buy', {
+      referrer,
+      orderDetails,
+    });
+  }, [productId, referrer]); // ✅ Does not return a new function unnecessarily
+  // ...
+```
+
+If this doesn't help, then the problem is that at least one of your dependencies is different from the previous render. You can debug this problem by manually logging your dependencies to the console:
+
+```js
+const handleSubmit = useCallback(
+	(orderDetails) => {
+		// ..
+	},
+	[productId, referrer]
+);
+
+console.log([productId, referrer]);
+```
+
+You can then right-click on the arrays from different re-renders in the console and select "Store as a global variable" for both of them. Assuming the first one got saved as `temp1` and the second one got saved as `temp2`, you can then use the browser console to check whether each dependency in both arrays is the same:
+
+```js
+Object.is(temp1[0], temp2[0]); // Is the first dependency the same between the arrays?
+Object.is(temp1[1], temp2[1]); // Is the second dependency the same between the arrays?
+Object.is(temp1[2], temp2[2]); // ... and so on for every dependency ...
+```
+
+When you find which dependency is breaking memoization, either find a way to remove it, or [memoize it as well.](/reference/react/useMemo#memoizing-a-dependency-of-another-hook)
+
+---
+
+### I need to call `useCallback` for each list item in a loop, but it's not allowed
+
+Suppose the `Chart` component is wrapped in [`memo`](/reference/react/memo). You want to skip re-rendering every `Chart` in the list when the `ReportList` component re-renders. However, you can't call `useCallback` in a loop:
+
+```js
+function ReportList({ items }) {
+	return (
+		<article>
+			{items.map((item) => {
+				// 🔴 You can't call useCallback in a loop like this:
+				const handleClick = useCallback(() => {
+					sendReport(item);
+				}, [item]);
+
+				return (
+					<figure key={item.id}>
+						<Chart onClick={handleClick} />
+					</figure>
+				);
+			})}
+		</article>
+	);
+}
+```
+
+Instead, extract a component for an individual item, and put `useCallback` there:
+
+```js
+function ReportList({ items }) {
+	return (
+		<article>
+			{items.map((item) => (
+				<Report key={item.id} item={item} />
+			))}
+		</article>
+	);
+}
+
+function Report({ item }) {
+	// ✅ Call useCallback at the top level:
+	const handleClick = useCallback(() => {
+		sendReport(item);
+	}, [item]);
+
+	return (
+		<figure>
+			<Chart onClick={handleClick} />
+		</figure>
+	);
+}
+```
+
+Alternatively, you could remove `useCallback` in the last snippet and instead wrap `Report` itself in [`memo`.](/reference/react/memo) If the `item` prop does not change, `Report` will skip re-rendering, so `Chart` will skip re-rendering too:
+
+```js
+function ReportList({ items }) {
+	// ...
+}
+
+const Report = memo(function Report({ item }) {
+	function handleClick() {
+		sendReport(item);
+	}
+
+	return (
+		<figure>
+			<Chart onClick={handleClick} />
+		</figure>
+	);
+});
+```
diff --git a/docs/src/reference/use-context.md b/docs/src/reference/use-context.md
index f9843a78e..165e8e4bf 100644
--- a/docs/src/reference/use-context.md
+++ b/docs/src/reference/use-context.md
@@ -1,3 +1,1325 @@
 ---
 title: Use Context 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useContext` is a React Hook that lets you read and subscribe to [context](/learn/passing-data-deeply-with-context) from your component.
+
+```js
+const value = useContext(SomeContext);
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useContext(SomeContext)`
+
+Call `useContext` at the top level of your component to read and subscribe to [context.](/learn/passing-data-deeply-with-context)
+
+```js
+import { useContext } from 'react';
+
+function MyComponent() {
+  const theme = useContext(ThemeContext);
+  // ...
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `SomeContext`: The context that you've previously created with [`createContext`](/reference/react/createContext). The context itself does not hold the information, it only represents the kind of information you can provide or read from components.
+
+#### Returns
+
+`useContext` returns the context value for the calling component. It is determined as the `value` passed to the closest `SomeContext.Provider` above the calling component in the tree. If there is no such provider, then the returned value will be the `defaultValue` you have passed to [`createContext`](/reference/react/createContext) for that context. The returned value is always up-to-date. React automatically re-renders components that read some context if it changes.
+
+#### Caveats
+
+-   `useContext()` call in a component is not affected by providers returned from the _same_ component. The corresponding `<Context.Provider>` **needs to be _above_** the component doing the `useContext()` call.
+-   React **automatically re-renders** all the children that use a particular context starting from the provider that receives a different `value`. The previous and the next values are compared with the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. Skipping re-renders with [`memo`](/reference/react/memo) does not prevent the children receiving fresh context values.
+-   If your build system produces duplicates modules in the output (which can happen with symlinks), this can break context. Passing something via context only works if `SomeContext` that you use to provide context and `SomeContext` that you use to read it are **_exactly_ the same object**, as determined by a `===` comparison.
+
+---
+
+## Usage
+
+### Passing data deeply into the tree
+
+Call `useContext` at the top level of your component to read and subscribe to [context.](/learn/passing-data-deeply-with-context)
+
+```js
+import { useContext } from 'react';
+
+function Button() {
+  const theme = useContext(ThemeContext);
+  // ...
+```
+
+`useContext` returns the <CodeStep step={2}>context value</CodeStep> for the <CodeStep step={1}>context</CodeStep> you passed. To determine the context value, React searches the component tree and finds **the closest context provider above** for that particular context.
+
+To pass context to a `Button`, wrap it or one of its parent components into the corresponding context provider:
+
+```js
+function MyPage() {
+	return (
+		<ThemeContext.Provider value="dark">
+			<Form />
+		</ThemeContext.Provider>
+	);
+}
+
+function Form() {
+	// ... renders buttons inside ...
+}
+```
+
+It doesn't matter how many layers of components there are between the provider and the `Button`. When a `Button` _anywhere_ inside of `Form` calls `useContext(ThemeContext)`, it will receive `"dark"` as the value.
+
+<Pitfall>
+
+`useContext()` always looks for the closest provider _above_ the component that calls it. It searches upwards and **does not** consider providers in the component from which you're calling `useContext()`.
+
+</Pitfall>
+
+```js
+import { createContext, useContext } from "react";
+
+const ThemeContext = createContext(null);
+
+export default function MyApp() {
+	return (
+		<ThemeContext.Provider value="dark">
+			<Form />
+		</ThemeContext.Provider>
+	);
+}
+
+function Form() {
+	return (
+		<Panel title="Welcome">
+			<Button>Sign up</Button>
+			<Button>Log in</Button>
+		</Panel>
+	);
+}
+
+function Panel({ title, children }) {
+	const theme = useContext(ThemeContext);
+	const className = "panel-" + theme;
+	return (
+		<section className={className}>
+			<h1>{title}</h1>
+			{children}
+		</section>
+	);
+}
+
+function Button({ children }) {
+	const theme = useContext(ThemeContext);
+	const className = "button-" + theme;
+	return <button className={className}>{children}</button>;
+}
+```
+
+```css
+.panel-light,
+.panel-dark {
+	border: 1px solid black;
+	border-radius: 4px;
+	padding: 20px;
+}
+.panel-light {
+	color: #222;
+	background: #fff;
+}
+
+.panel-dark {
+	color: #fff;
+	background: rgb(23, 32, 42);
+}
+
+.button-light,
+.button-dark {
+	border: 1px solid #777;
+	padding: 5px;
+	margin-right: 10px;
+	margin-top: 10px;
+}
+
+.button-dark {
+	background: #222;
+	color: #fff;
+}
+
+.button-light {
+	background: #fff;
+	color: #222;
+}
+```
+
+---
+
+### Updating data passed via context
+
+Often, you'll want the context to change over time. To update context, combine it with [state.](/reference/react/useState) Declare a state variable in the parent component, and pass the current state down as the <CodeStep step={2}>context value</CodeStep> to the provider.
+
+```js
+function MyPage() {
+	const [theme, setTheme] = useState("dark");
+	return (
+		<ThemeContext.Provider value={theme}>
+			<Form />
+			<Button
+				onClick={() => {
+					setTheme("light");
+				}}
+			>
+				Switch to light theme
+			</Button>
+		</ThemeContext.Provider>
+	);
+}
+```
+
+Now any `Button` inside of the provider will receive the current `theme` value. If you call `setTheme` to update the `theme` value that you pass to the provider, all `Button` components will re-render with the new `'light'` value.
+
+<Recipes titleText="Examples of updating context" titleId="examples-basic">
+
+#### Updating a value via context
+
+In this example, the `MyApp` component holds a state variable which is then passed to the `ThemeContext` provider. Checking the "Dark mode" checkbox updates the state. Changing the provided value re-renders all the components using that context.
+
+```js
+import { createContext, useContext, useState } from "react";
+
+const ThemeContext = createContext(null);
+
+export default function MyApp() {
+	const [theme, setTheme] = useState("light");
+	return (
+		<ThemeContext.Provider value={theme}>
+			<Form />
+			<label>
+				<input
+					type="checkbox"
+					checked={theme === "dark"}
+					onChange={(e) => {
+						setTheme(e.target.checked ? "dark" : "light");
+					}}
+				/>
+				Use dark mode
+			</label>
+		</ThemeContext.Provider>
+	);
+}
+
+function Form({ children }) {
+	return (
+		<Panel title="Welcome">
+			<Button>Sign up</Button>
+			<Button>Log in</Button>
+		</Panel>
+	);
+}
+
+function Panel({ title, children }) {
+	const theme = useContext(ThemeContext);
+	const className = "panel-" + theme;
+	return (
+		<section className={className}>
+			<h1>{title}</h1>
+			{children}
+		</section>
+	);
+}
+
+function Button({ children }) {
+	const theme = useContext(ThemeContext);
+	const className = "button-" + theme;
+	return <button className={className}>{children}</button>;
+}
+```
+
+```css
+.panel-light,
+.panel-dark {
+	border: 1px solid black;
+	border-radius: 4px;
+	padding: 20px;
+	margin-bottom: 10px;
+}
+.panel-light {
+	color: #222;
+	background: #fff;
+}
+
+.panel-dark {
+	color: #fff;
+	background: rgb(23, 32, 42);
+}
+
+.button-light,
+.button-dark {
+	border: 1px solid #777;
+	padding: 5px;
+	margin-right: 10px;
+	margin-top: 10px;
+}
+
+.button-dark {
+	background: #222;
+	color: #fff;
+}
+
+.button-light {
+	background: #fff;
+	color: #222;
+}
+```
+
+Note that `value="dark"` passes the `"dark"` string, but `value={theme}` passes the value of the JavaScript `theme` variable with [JSX curly braces.](/learn/javascript-in-jsx-with-curly-braces) Curly braces also let you pass context values that aren't strings.
+
+#### Updating an object via context
+
+In this example, there is a `currentUser` state variable which holds an object. You combine `{ currentUser, setCurrentUser }` into a single object and pass it down through the context inside the `value={}`. This lets any component below, such as `LoginButton`, read both `currentUser` and `setCurrentUser`, and then call `setCurrentUser` when needed.
+
+```js
+import { createContext, useContext, useState } from "react";
+
+const CurrentUserContext = createContext(null);
+
+export default function MyApp() {
+	const [currentUser, setCurrentUser] = useState(null);
+	return (
+		<CurrentUserContext.Provider
+			value={{
+				currentUser,
+				setCurrentUser,
+			}}
+		>
+			<Form />
+		</CurrentUserContext.Provider>
+	);
+}
+
+function Form({ children }) {
+	return (
+		<Panel title="Welcome">
+			<LoginButton />
+		</Panel>
+	);
+}
+
+function LoginButton() {
+	const { currentUser, setCurrentUser } = useContext(CurrentUserContext);
+
+	if (currentUser !== null) {
+		return <p>You logged in as {currentUser.name}.</p>;
+	}
+
+	return (
+		<Button
+			onClick={() => {
+				setCurrentUser({ name: "Advika" });
+			}}
+		>
+			Log in as Advika
+		</Button>
+	);
+}
+
+function Panel({ title, children }) {
+	return (
+		<section className="panel">
+			<h1>{title}</h1>
+			{children}
+		</section>
+	);
+}
+
+function Button({ children, onClick }) {
+	return (
+		<button className="button" onClick={onClick}>
+			{children}
+		</button>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+
+.panel {
+	border: 1px solid black;
+	border-radius: 4px;
+	padding: 20px;
+	margin-bottom: 10px;
+}
+
+.button {
+	border: 1px solid #777;
+	padding: 5px;
+	margin-right: 10px;
+	margin-top: 10px;
+}
+```
+
+#### Multiple contexts
+
+In this example, there are two independent contexts. `ThemeContext` provides the current theme, which is a string, while `CurrentUserContext` holds the object representing the current user.
+
+```js
+import { createContext, useContext, useState } from "react";
+
+const ThemeContext = createContext(null);
+const CurrentUserContext = createContext(null);
+
+export default function MyApp() {
+	const [theme, setTheme] = useState("light");
+	const [currentUser, setCurrentUser] = useState(null);
+	return (
+		<ThemeContext.Provider value={theme}>
+			<CurrentUserContext.Provider
+				value={{
+					currentUser,
+					setCurrentUser,
+				}}
+			>
+				<WelcomePanel />
+				<label>
+					<input
+						type="checkbox"
+						checked={theme === "dark"}
+						onChange={(e) => {
+							setTheme(e.target.checked ? "dark" : "light");
+						}}
+					/>
+					Use dark mode
+				</label>
+			</CurrentUserContext.Provider>
+		</ThemeContext.Provider>
+	);
+}
+
+function WelcomePanel({ children }) {
+	const { currentUser } = useContext(CurrentUserContext);
+	return (
+		<Panel title="Welcome">
+			{currentUser !== null ? <Greeting /> : <LoginForm />}
+		</Panel>
+	);
+}
+
+function Greeting() {
+	const { currentUser } = useContext(CurrentUserContext);
+	return <p>You logged in as {currentUser.name}.</p>;
+}
+
+function LoginForm() {
+	const { setCurrentUser } = useContext(CurrentUserContext);
+	const [firstName, setFirstName] = useState("");
+	const [lastName, setLastName] = useState("");
+	const canLogin = firstName !== "" && lastName !== "";
+	return (
+		<>
+			<label>
+				First name{": "}
+				<input
+					required
+					value={firstName}
+					onChange={(e) => setFirstName(e.target.value)}
+				/>
+			</label>
+			<label>
+				Last name{": "}
+				<input
+					required
+					value={lastName}
+					onChange={(e) => setLastName(e.target.value)}
+				/>
+			</label>
+			<Button
+				disabled={!canLogin}
+				onClick={() => {
+					setCurrentUser({
+						name: firstName + " " + lastName,
+					});
+				}}
+			>
+				Log in
+			</Button>
+			{!canLogin && <i>Fill in both fields.</i>}
+		</>
+	);
+}
+
+function Panel({ title, children }) {
+	const theme = useContext(ThemeContext);
+	const className = "panel-" + theme;
+	return (
+		<section className={className}>
+			<h1>{title}</h1>
+			{children}
+		</section>
+	);
+}
+
+function Button({ children, disabled, onClick }) {
+	const theme = useContext(ThemeContext);
+	const className = "button-" + theme;
+	return (
+		<button className={className} disabled={disabled} onClick={onClick}>
+			{children}
+		</button>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+
+.panel-light,
+.panel-dark {
+	border: 1px solid black;
+	border-radius: 4px;
+	padding: 20px;
+	margin-bottom: 10px;
+}
+.panel-light {
+	color: #222;
+	background: #fff;
+}
+
+.panel-dark {
+	color: #fff;
+	background: rgb(23, 32, 42);
+}
+
+.button-light,
+.button-dark {
+	border: 1px solid #777;
+	padding: 5px;
+	margin-right: 10px;
+	margin-top: 10px;
+}
+
+.button-dark {
+	background: #222;
+	color: #fff;
+}
+
+.button-light {
+	background: #fff;
+	color: #222;
+}
+```
+
+#### Extracting providers to a component
+
+As your app grows, it is expected that you'll have a "pyramid" of contexts closer to the root of your app. There is nothing wrong with that. However, if you dislike the nesting aesthetically, you can extract the providers into a single component. In this example, `MyProviders` hides the "plumbing" and renders the children passed to it inside the necessary providers. Note that the `theme` and `setTheme` state is needed in `MyApp` itself, so `MyApp` still owns that piece of the state.
+
+```js
+import { createContext, useContext, useState } from "react";
+
+const ThemeContext = createContext(null);
+const CurrentUserContext = createContext(null);
+
+export default function MyApp() {
+	const [theme, setTheme] = useState("light");
+	return (
+		<MyProviders theme={theme} setTheme={setTheme}>
+			<WelcomePanel />
+			<label>
+				<input
+					type="checkbox"
+					checked={theme === "dark"}
+					onChange={(e) => {
+						setTheme(e.target.checked ? "dark" : "light");
+					}}
+				/>
+				Use dark mode
+			</label>
+		</MyProviders>
+	);
+}
+
+function MyProviders({ children, theme, setTheme }) {
+	const [currentUser, setCurrentUser] = useState(null);
+	return (
+		<ThemeContext.Provider value={theme}>
+			<CurrentUserContext.Provider
+				value={{
+					currentUser,
+					setCurrentUser,
+				}}
+			>
+				{children}
+			</CurrentUserContext.Provider>
+		</ThemeContext.Provider>
+	);
+}
+
+function WelcomePanel({ children }) {
+	const { currentUser } = useContext(CurrentUserContext);
+	return (
+		<Panel title="Welcome">
+			{currentUser !== null ? <Greeting /> : <LoginForm />}
+		</Panel>
+	);
+}
+
+function Greeting() {
+	const { currentUser } = useContext(CurrentUserContext);
+	return <p>You logged in as {currentUser.name}.</p>;
+}
+
+function LoginForm() {
+	const { setCurrentUser } = useContext(CurrentUserContext);
+	const [firstName, setFirstName] = useState("");
+	const [lastName, setLastName] = useState("");
+	const canLogin = firstName !== "" && lastName !== "";
+	return (
+		<>
+			<label>
+				First name{": "}
+				<input
+					required
+					value={firstName}
+					onChange={(e) => setFirstName(e.target.value)}
+				/>
+			</label>
+			<label>
+				Last name{": "}
+				<input
+					required
+					value={lastName}
+					onChange={(e) => setLastName(e.target.value)}
+				/>
+			</label>
+			<Button
+				disabled={!canLogin}
+				onClick={() => {
+					setCurrentUser({
+						name: firstName + " " + lastName,
+					});
+				}}
+			>
+				Log in
+			</Button>
+			{!canLogin && <i>Fill in both fields.</i>}
+		</>
+	);
+}
+
+function Panel({ title, children }) {
+	const theme = useContext(ThemeContext);
+	const className = "panel-" + theme;
+	return (
+		<section className={className}>
+			<h1>{title}</h1>
+			{children}
+		</section>
+	);
+}
+
+function Button({ children, disabled, onClick }) {
+	const theme = useContext(ThemeContext);
+	const className = "button-" + theme;
+	return (
+		<button className={className} disabled={disabled} onClick={onClick}>
+			{children}
+		</button>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+
+.panel-light,
+.panel-dark {
+	border: 1px solid black;
+	border-radius: 4px;
+	padding: 20px;
+	margin-bottom: 10px;
+}
+.panel-light {
+	color: #222;
+	background: #fff;
+}
+
+.panel-dark {
+	color: #fff;
+	background: rgb(23, 32, 42);
+}
+
+.button-light,
+.button-dark {
+	border: 1px solid #777;
+	padding: 5px;
+	margin-right: 10px;
+	margin-top: 10px;
+}
+
+.button-dark {
+	background: #222;
+	color: #fff;
+}
+
+.button-light {
+	background: #fff;
+	color: #222;
+}
+```
+
+#### Scaling up with context and a reducer
+
+In larger apps, it is common to combine context with a [reducer](/reference/react/useReducer) to extract the logic related to some state out of components. In this example, all the "wiring" is hidden in the `TasksContext.js`, which contains a reducer and two separate contexts.
+
+Read a [full walkthrough](/learn/scaling-up-with-reducer-and-context) of this example.
+
+```js
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+import { TasksProvider } from "./TasksContext.js";
+
+export default function TaskApp() {
+	return (
+		<TasksProvider>
+			<h1>Day off in Kyoto</h1>
+			<AddTask />
+			<TaskList />
+		</TasksProvider>
+	);
+}
+```
+
+```js
+import { createContext, useContext, useReducer } from "react";
+
+const TasksContext = createContext(null);
+
+const TasksDispatchContext = createContext(null);
+
+export function TasksProvider({ children }) {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	return (
+		<TasksContext.Provider value={tasks}>
+			<TasksDispatchContext.Provider value={dispatch}>
+				{children}
+			</TasksDispatchContext.Provider>
+		</TasksContext.Provider>
+	);
+}
+
+export function useTasks() {
+	return useContext(TasksContext);
+}
+
+export function useTasksDispatch() {
+	return useContext(TasksDispatchContext);
+}
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+const initialTasks = [
+	{ id: 0, text: "Philosopher’s Path", done: true },
+	{ id: 1, text: "Visit the temple", done: false },
+	{ id: 2, text: "Drink matcha", done: false },
+];
+```
+
+```js
+import { useState, useContext } from "react";
+import { useTasksDispatch } from "./TasksContext.js";
+
+export default function AddTask() {
+	const [text, setText] = useState("");
+	const dispatch = useTasksDispatch();
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				onClick={() => {
+					setText("");
+					dispatch({
+						type: "added",
+						id: nextId++,
+						text: text,
+					});
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+
+let nextId = 3;
+```
+
+```js
+import { useState, useContext } from "react";
+import { useTasks, useTasksDispatch } from "./TasksContext.js";
+
+export default function TaskList() {
+	const tasks = useTasks();
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task task={task} />
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task }) {
+	const [isEditing, setIsEditing] = useState(false);
+	const dispatch = useTasksDispatch();
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						dispatch({
+							type: "changed",
+							task: {
+								...task,
+								text: e.target.value,
+							},
+						});
+					}}
+				/>
+				<button onClick={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button onClick={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					dispatch({
+						type: "changed",
+						task: {
+							...task,
+							done: e.target.checked,
+						},
+					});
+				}}
+			/>
+			{taskContent}
+			<button
+				onClick={() => {
+					dispatch({
+						type: "deleted",
+						id: task.id,
+					});
+				}}
+			>
+				Delete
+			</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+</Recipes>
+
+---
+
+### Specifying a fallback default value
+
+If React can't find any providers of that particular <CodeStep step={1}>context</CodeStep> in the parent tree, the context value returned by `useContext()` will be equal to the <CodeStep step={3}>default value</CodeStep> that you specified when you [created that context](/reference/react/createContext):
+
+```js
+const ThemeContext = createContext(null);
+```
+
+The default value **never changes**. If you want to update context, use it with state as [described above.](#updating-data-passed-via-context)
+
+Often, instead of `null`, there is some more meaningful value you can use as a default, for example:
+
+```js
+const ThemeContext = createContext("light");
+```
+
+This way, if you accidentally render some component without a corresponding provider, it won't break. This also helps your components work well in a test environment without setting up a lot of providers in the tests.
+
+In the example below, the "Toggle theme" button is always light because it's **outside any theme context provider** and the default context theme value is `'light'`. Try editing the default theme to be `'dark'`.
+
+```js
+import { createContext, useContext, useState } from "react";
+
+const ThemeContext = createContext("light");
+
+export default function MyApp() {
+	const [theme, setTheme] = useState("light");
+	return (
+		<>
+			<ThemeContext.Provider value={theme}>
+				<Form />
+			</ThemeContext.Provider>
+			<Button
+				onClick={() => {
+					setTheme(theme === "dark" ? "light" : "dark");
+				}}
+			>
+				Toggle theme
+			</Button>
+		</>
+	);
+}
+
+function Form({ children }) {
+	return (
+		<Panel title="Welcome">
+			<Button>Sign up</Button>
+			<Button>Log in</Button>
+		</Panel>
+	);
+}
+
+function Panel({ title, children }) {
+	const theme = useContext(ThemeContext);
+	const className = "panel-" + theme;
+	return (
+		<section className={className}>
+			<h1>{title}</h1>
+			{children}
+		</section>
+	);
+}
+
+function Button({ children, onClick }) {
+	const theme = useContext(ThemeContext);
+	const className = "button-" + theme;
+	return (
+		<button className={className} onClick={onClick}>
+			{children}
+		</button>
+	);
+}
+```
+
+```css
+.panel-light,
+.panel-dark {
+	border: 1px solid black;
+	border-radius: 4px;
+	padding: 20px;
+	margin-bottom: 10px;
+}
+.panel-light {
+	color: #222;
+	background: #fff;
+}
+
+.panel-dark {
+	color: #fff;
+	background: rgb(23, 32, 42);
+}
+
+.button-light,
+.button-dark {
+	border: 1px solid #777;
+	padding: 5px;
+	margin-right: 10px;
+	margin-top: 10px;
+}
+
+.button-dark {
+	background: #222;
+	color: #fff;
+}
+
+.button-light {
+	background: #fff;
+	color: #222;
+}
+```
+
+---
+
+### Overriding context for a part of the tree
+
+You can override the context for a part of the tree by wrapping that part in a provider with a different value.
+
+```js
+<ThemeContext.Provider value="dark">
+	...
+	<ThemeContext.Provider value="light">
+		<Footer />
+	</ThemeContext.Provider>
+	...
+</ThemeContext.Provider>
+```
+
+You can nest and override providers as many times as you need.
+
+<Recipes title="Examples of overriding context">
+
+#### Overriding a theme
+
+Here, the button _inside_ the `Footer` receives a different context value (`"light"`) than the buttons outside (`"dark"`).
+
+```js
+import { createContext, useContext } from "react";
+
+const ThemeContext = createContext(null);
+
+export default function MyApp() {
+	return (
+		<ThemeContext.Provider value="dark">
+			<Form />
+		</ThemeContext.Provider>
+	);
+}
+
+function Form() {
+	return (
+		<Panel title="Welcome">
+			<Button>Sign up</Button>
+			<Button>Log in</Button>
+			<ThemeContext.Provider value="light">
+				<Footer />
+			</ThemeContext.Provider>
+		</Panel>
+	);
+}
+
+function Footer() {
+	return (
+		<footer>
+			<Button>Settings</Button>
+		</footer>
+	);
+}
+
+function Panel({ title, children }) {
+	const theme = useContext(ThemeContext);
+	const className = "panel-" + theme;
+	return (
+		<section className={className}>
+			{title && <h1>{title}</h1>}
+			{children}
+		</section>
+	);
+}
+
+function Button({ children }) {
+	const theme = useContext(ThemeContext);
+	const className = "button-" + theme;
+	return <button className={className}>{children}</button>;
+}
+```
+
+```css
+footer {
+	margin-top: 20px;
+	border-top: 1px solid #aaa;
+}
+
+.panel-light,
+.panel-dark {
+	border: 1px solid black;
+	border-radius: 4px;
+	padding: 20px;
+}
+.panel-light {
+	color: #222;
+	background: #fff;
+}
+
+.panel-dark {
+	color: #fff;
+	background: rgb(23, 32, 42);
+}
+
+.button-light,
+.button-dark {
+	border: 1px solid #777;
+	padding: 5px;
+	margin-right: 10px;
+	margin-top: 10px;
+}
+
+.button-dark {
+	background: #222;
+	color: #fff;
+}
+
+.button-light {
+	background: #fff;
+	color: #222;
+}
+```
+
+#### Automatically nested headings
+
+You can "accumulate" information when you nest context providers. In this example, the `Section` component keeps track of the `LevelContext` which specifies the depth of the section nesting. It reads the `LevelContext` from the parent section, and provides the `LevelContext` number increased by one to its children. As a result, the `Heading` component can automatically decide which of the `<h1>`, `<h2>`, `<h3>`, ..., tags to use based on how many `Section` components it is nested inside of.
+
+Read a [detailed walkthrough](/learn/passing-data-deeply-with-context) of this example.
+
+```js
+import Heading from "./Heading.js";
+import Section from "./Section.js";
+
+export default function Page() {
+	return (
+		<Section>
+			<Heading>Title</Heading>
+			<Section>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Heading>Heading</Heading>
+				<Section>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Heading>Sub-heading</Heading>
+					<Section>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+						<Heading>Sub-sub-heading</Heading>
+					</Section>
+				</Section>
+			</Section>
+		</Section>
+	);
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Section({ children }) {
+	const level = useContext(LevelContext);
+	return (
+		<section className="section">
+			<LevelContext.Provider value={level + 1}>
+				{children}
+			</LevelContext.Provider>
+		</section>
+	);
+}
+```
+
+```js
+import { useContext } from "react";
+import { LevelContext } from "./LevelContext.js";
+
+export default function Heading({ children }) {
+	const level = useContext(LevelContext);
+	switch (level) {
+		case 0:
+			throw Error("Heading must be inside a Section!");
+		case 1:
+			return <h1>{children}</h1>;
+		case 2:
+			return <h2>{children}</h2>;
+		case 3:
+			return <h3>{children}</h3>;
+		case 4:
+			return <h4>{children}</h4>;
+		case 5:
+			return <h5>{children}</h5>;
+		case 6:
+			return <h6>{children}</h6>;
+		default:
+			throw Error("Unknown level: " + level);
+	}
+}
+```
+
+```js
+import { createContext } from "react";
+
+export const LevelContext = createContext(0);
+```
+
+```css
+.section {
+	padding: 10px;
+	margin: 5px;
+	border-radius: 5px;
+	border: 1px solid #aaa;
+}
+```
+
+</Recipes>
+
+---
+
+### Optimizing re-renders when passing objects and functions
+
+You can pass any values via context, including objects and functions.
+
+```js
+function MyApp() {
+	const [currentUser, setCurrentUser] = useState(null);
+
+	function login(response) {
+		storeCredentials(response.credentials);
+		setCurrentUser(response.user);
+	}
+
+	return (
+		<AuthContext.Provider value={{ currentUser, login }}>
+			<Page />
+		</AuthContext.Provider>
+	);
+}
+```
+
+Here, the <CodeStep step={2}>context value</CodeStep> is a JavaScript object with two properties, one of which is a function. Whenever `MyApp` re-renders (for example, on a route update), this will be a _different_ object pointing at a _different_ function, so React will also have to re-render all components deep in the tree that call `useContext(AuthContext)`.
+
+In smaller apps, this is not a problem. However, there is no need to re-render them if the underlying data, like `currentUser`, has not changed. To help React take advantage of that fact, you may wrap the `login` function with [`useCallback`](/reference/react/useCallback) and wrap the object creation into [`useMemo`](/reference/react/useMemo). This is a performance optimization:
+
+```js
+import { useCallback, useMemo } from "react";
+
+function MyApp() {
+	const [currentUser, setCurrentUser] = useState(null);
+
+	const login = useCallback((response) => {
+		storeCredentials(response.credentials);
+		setCurrentUser(response.user);
+	}, []);
+
+	const contextValue = useMemo(
+		() => ({
+			currentUser,
+			login,
+		}),
+		[currentUser, login]
+	);
+
+	return (
+		<AuthContext.Provider value={contextValue}>
+			<Page />
+		</AuthContext.Provider>
+	);
+}
+```
+
+As a result of this change, even if `MyApp` needs to re-render, the components calling `useContext(AuthContext)` won't need to re-render unless `currentUser` has changed.
+
+Read more about [`useMemo`](/reference/react/useMemo#skipping-re-rendering-of-components) and [`useCallback`.](/reference/react/useCallback#skipping-re-rendering-of-components)
+
+---
+
+## Troubleshooting
+
+### My component doesn't see the value from my provider
+
+There are a few common ways that this can happen:
+
+1. You're rendering `<SomeContext.Provider>` in the same component (or below) as where you're calling `useContext()`. Move `<SomeContext.Provider>` _above and outside_ the component calling `useContext()`.
+2. You may have forgotten to wrap your component with `<SomeContext.Provider>`, or you might have put it in a different part of the tree than you thought. Check whether the hierarchy is right using [React DevTools.](/learn/react-developer-tools)
+3. You might be running into some build issue with your tooling that causes `SomeContext` as seen from the providing component and `SomeContext` as seen by the reading component to be two different objects. This can happen if you use symlinks, for example. You can verify this by assigning them to globals like `window.SomeContext1` and `window.SomeContext2` and then checking whether `window.SomeContext1 === window.SomeContext2` in the console. If they're not the same, fix that issue on the build tool level.
+
+### I am always getting `undefined` from my context although the default value is different
+
+You might have a provider without a `value` in the tree:
+
+```js
+// 🚩 Doesn't work: no value prop
+<ThemeContext.Provider>
+	<Button />
+</ThemeContext.Provider>
+```
+
+If you forget to specify `value`, it's like passing `value={undefined}`.
+
+You may have also mistakingly used a different prop name by mistake:
+
+```js
+// 🚩 Doesn't work: prop should be called "value"
+<ThemeContext.Provider theme={theme}>
+	<Button />
+</ThemeContext.Provider>
+```
+
+In both of these cases you should see a warning from React in the console. To fix them, call the prop `value`:
+
+```js
+// ✅ Passing the value prop
+<ThemeContext.Provider value={theme}>
+	<Button />
+</ThemeContext.Provider>
+```
+
+Note that the [default value from your `createContext(defaultValue)` call](#specifying-a-fallback-default-value) is only used **if there is no matching provider above at all.** If there is a `<SomeContext.Provider value={undefined}>` component somewhere in the parent tree, the component calling `useContext(SomeContext)` _will_ receive `undefined` as the context value.
diff --git a/docs/src/reference/use-debug-value.md b/docs/src/reference/use-debug-value.md
index a2685d9af..5bbdacf42 100644
--- a/docs/src/reference/use-debug-value.md
+++ b/docs/src/reference/use-debug-value.md
@@ -1,3 +1,122 @@
 ---
 title: Use Debug Value 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useDebugValue` is a React Hook that lets you add a label to a custom Hook in [React DevTools.](/learn/react-developer-tools)
+
+```js
+useDebugValue(value, format?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useDebugValue(value, format?)`
+
+Call `useDebugValue` at the top level of your [custom Hook](/learn/reusing-logic-with-custom-hooks) to display a readable debug value:
+
+```js
+import { useDebugValue } from "react";
+
+function useOnlineStatus() {
+	// ...
+	useDebugValue(isOnline ? "Online" : "Offline");
+	// ...
+}
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `value`: The value you want to display in React DevTools. It can have any type.
+-   **optional** `format`: A formatting function. When the component is inspected, React DevTools will call the formatting function with the `value` as the argument, and then display the returned formatted value (which may have any type). If you don't specify the formatting function, the original `value` itself will be displayed.
+
+#### Returns
+
+`useDebugValue` does not return anything.
+
+## Usage
+
+### Adding a label to a custom Hook
+
+Call `useDebugValue` at the top level of your [custom Hook](/learn/reusing-logic-with-custom-hooks) to display a readable <CodeStep step={1}>debug value</CodeStep> for [React DevTools.](/learn/react-developer-tools)
+
+```js
+import { useDebugValue } from "react";
+
+function useOnlineStatus() {
+	// ...
+	useDebugValue(isOnline ? "Online" : "Offline");
+	// ...
+}
+```
+
+This gives components calling `useOnlineStatus` a label like `OnlineStatus: "Online"` when you inspect them:
+
+![A screenshot of React DevTools showing the debug value](/images/docs/react-devtools-usedebugvalue.png)
+
+Without the `useDebugValue` call, only the underlying data (in this example, `true`) would be displayed.
+
+```js
+import { useOnlineStatus } from "./useOnlineStatus.js";
+
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+
+export default function App() {
+	return <StatusBar />;
+}
+```
+
+```js
+import { useSyncExternalStore, useDebugValue } from "react";
+
+export function useOnlineStatus() {
+	const isOnline = useSyncExternalStore(
+		subscribe,
+		() => navigator.onLine,
+		() => true
+	);
+	useDebugValue(isOnline ? "Online" : "Offline");
+	return isOnline;
+}
+
+function subscribe(callback) {
+	window.addEventListener("online", callback);
+	window.addEventListener("offline", callback);
+	return () => {
+		window.removeEventListener("online", callback);
+		window.removeEventListener("offline", callback);
+	};
+}
+```
+
+<Note>
+
+Don't add debug values to every custom Hook. It's most valuable for custom Hooks that are part of shared libraries and that have a complex internal data structure that's difficult to inspect.
+
+</Note>
+
+---
+
+### Deferring formatting of a debug value
+
+You can also pass a formatting function as the second argument to `useDebugValue`:
+
+```js
+useDebugValue(date, (date) => date.toDateString());
+```
+
+Your formatting function will receive the <CodeStep step={1}>debug value</CodeStep> as a parameter and should return a <CodeStep step={2}>formatted display value</CodeStep>. When your component is inspected, React DevTools will call this function and display its result.
+
+This lets you avoid running potentially expensive formatting logic unless the component is actually inspected. For example, if `date` is a Date value, this avoids calling `toDateString()` on it for every render.
diff --git a/docs/src/reference/use-effect.md b/docs/src/reference/use-effect.md
index 9b28b65e7..7a73905bb 100644
--- a/docs/src/reference/use-effect.md
+++ b/docs/src/reference/use-effect.md
@@ -1,3 +1,1864 @@
 ---
 title: Use Effect 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useEffect` is a React Hook that lets you [synchronize a component with an external system.](/learn/synchronizing-with-effects)
+
+```js
+useEffect(setup, dependencies?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useEffect(setup, dependencies?)`
+
+Call `useEffect` at the top level of your component to declare an Effect:
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [serverUrl, roomId]);
+	// ...
+}
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `setup`: The function with your Effect's logic. Your setup function may also optionally return a _cleanup_ function. When your component is added to the DOM, React will run your setup function. After every re-render with changed dependencies, React will first run the cleanup function (if you provided it) with the old values, and then run your setup function with the new values. After your component is removed from the DOM, React will run your cleanup function.
+
+-   **optional** `dependencies`: The list of all reactive values referenced inside of the `setup` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. If you omit this argument, your Effect will re-run after every re-render of the component. [See the difference between passing an array of dependencies, an empty array, and no dependencies at all.](#examples-dependencies)
+
+#### Returns
+
+`useEffect` returns `undefined`.
+
+#### Caveats
+
+-   `useEffect` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a new component and move the state into it.
+
+-   If you're **not trying to synchronize with some external system,** [you probably don't need an Effect.](/learn/you-might-not-need-an-effect)
+
+-   When Strict Mode is on, React will **run one extra development-only setup+cleanup cycle** before the first real setup. This is a stress-test that ensures that your cleanup logic "mirrors" your setup logic and that it stops or undoes whatever the setup is doing. If this causes a problem, [implement the cleanup function.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+-   If some of your dependencies are objects or functions defined inside the component, there is a risk that they will **cause the Effect to re-run more often than needed.** To fix this, remove unnecessary [object](#removing-unnecessary-object-dependencies) and [function](#removing-unnecessary-function-dependencies) dependencies. You can also [extract state updates](#updating-state-based-on-previous-state-from-an-effect) and [non-reactive logic](#reading-the-latest-props-and-state-from-an-effect) outside of your Effect.
+
+-   If your Effect wasn't caused by an interaction (like a click), React will let the browser **paint the updated screen first before running your Effect.** If your Effect is doing something visual (for example, positioning a tooltip), and the delay is noticeable (for example, it flickers), replace `useEffect` with [`useLayoutEffect`.](/reference/react/useLayoutEffect)
+
+-   Even if your Effect was caused by an interaction (like a click), **the browser may repaint the screen before processing the state updates inside your Effect.** Usually, that's what you want. However, if you must block the browser from repainting the screen, you need to replace `useEffect` with [`useLayoutEffect`.](/reference/react/useLayoutEffect)
+
+-   Effects **only run on the client.** They don't run during server rendering.
+
+---
+
+## Usage
+
+### Connecting to an external system
+
+Some components need to stay connected to the network, some browser API, or a third-party library, while they are displayed on the page. These systems aren't controlled by React, so they are called _external._
+
+To [connect your component to some external system,](/learn/synchronizing-with-effects) call `useEffect` at the top level of your component:
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [serverUrl, roomId]);
+	// ...
+}
+```
+
+You need to pass two arguments to `useEffect`:
+
+1. A _setup function_ with <CodeStep step={1}>setup code</CodeStep> that connects to that system.
+    - It should return a _cleanup function_ with <CodeStep step={2}>cleanup code</CodeStep> that disconnects from that system.
+2. A <CodeStep step={3}>list of dependencies</CodeStep> including every value from your component used inside of those functions.
+
+**React calls your setup and cleanup functions whenever it's necessary, which may happen multiple times:**
+
+1. Your <CodeStep step={1}>setup code</CodeStep> runs when your component is added to the page _(mounts)_.
+2. After every re-render of your component where the <CodeStep step={3}>dependencies</CodeStep> have changed:
+    - First, your <CodeStep step={2}>cleanup code</CodeStep> runs with the old props and state.
+    - Then, your <CodeStep step={1}>setup code</CodeStep> runs with the new props and state.
+3. Your <CodeStep step={2}>cleanup code</CodeStep> runs one final time after your component is removed from the page _(unmounts)._
+
+**Let's illustrate this sequence for the example above.**
+
+When the `ChatRoom` component above gets added to the page, it will connect to the chat room with the initial `serverUrl` and `roomId`. If either `serverUrl` or `roomId` change as a result of a re-render (say, if the user picks a different chat room in a dropdown), your Effect will _disconnect from the previous room, and connect to the next one._ When the `ChatRoom` component is removed from the page, your Effect will disconnect one last time.
+
+**To [help you find bugs,](/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed) in development React runs <CodeStep step={1}>setup</CodeStep> and <CodeStep step={2}>cleanup</CodeStep> one extra time before the <CodeStep step={1}>setup</CodeStep>.** This is a stress-test that verifies your Effect's logic is implemented correctly. If this causes visible issues, your cleanup function is missing some logic. The cleanup function should stop or undo whatever the setup function was doing. The rule of thumb is that the user shouldn't be able to distinguish between the setup being called once (as in production) and a _setup_ → _cleanup_ → _setup_ sequence (as in development). [See common solutions.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+**Try to [write every Effect as an independent process](/learn/lifecycle-of-reactive-effects#each-effect-represents-a-separate-synchronization-process) and [think about a single setup/cleanup cycle at a time.](/learn/lifecycle-of-reactive-effects#thinking-from-the-effects-perspective)** It shouldn't matter whether your component is mounting, updating, or unmounting. When your cleanup logic correctly "mirrors" the setup logic, your Effect is resilient to running setup and cleanup as often as needed.
+
+<Note>
+
+An Effect lets you [keep your component synchronized](/learn/synchronizing-with-effects) with some external system (like a chat service). Here, _external system_ means any piece of code that's not controlled by React, such as:
+
+-   A timer managed with <CodeStep step={1}>[`setInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/setInterval)</CodeStep> and <CodeStep step={2}>[`clearInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval)</CodeStep>.
+-   An event subscription using <CodeStep step={1}>[`window.addEventListener()`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)</CodeStep> and <CodeStep step={2}>[`window.removeEventListener()`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener)</CodeStep>.
+-   A third-party animation library with an API like <CodeStep step={1}>`animation.start()`</CodeStep> and <CodeStep step={2}>`animation.reset()`</CodeStep>.
+
+**If you're not connecting to any external system, [you probably don't need an Effect.](/learn/you-might-not-need-an-effect)**
+
+</Note>
+
+<Recipes titleText="Examples of connecting to an external system" titleId="examples-connecting">
+
+#### Connecting to a chat server
+
+In this example, the `ChatRoom` component uses an Effect to stay connected to an external system defined in `chat.js`. Press "Open chat" to make the `ChatRoom` component appear. This sandbox runs in development mode, so there is an extra connect-and-disconnect cycle, as [explained here.](/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed) Try changing the `roomId` and `serverUrl` using the dropdown and the input, and see how the Effect re-connects to the chat. Press "Close chat" to see the Effect disconnect one last time.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId, serverUrl]);
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+#### Listening to a global browser event
+
+In this example, the external system is the browser DOM itself. Normally, you'd specify event listeners with JSX, but you can't listen to the global [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window) object this way. An Effect lets you connect to the `window` object and listen to its events. Listening to the `pointermove` event lets you track the cursor (or finger) position and update the red dot to move with it.
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+
+	useEffect(() => {
+		function handleMove(e) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+		window.addEventListener("pointermove", handleMove);
+		return () => {
+			window.removeEventListener("pointermove", handleMove);
+		};
+	}, []);
+
+	return (
+		<div
+			style={{
+				position: "absolute",
+				backgroundColor: "pink",
+				borderRadius: "50%",
+				opacity: 0.6,
+				transform: `translate(${position.x}px, ${position.y}px)`,
+				pointerEvents: "none",
+				left: -20,
+				top: -20,
+				width: 40,
+				height: 40,
+			}}
+		/>
+	);
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+#### Triggering an animation
+
+In this example, the external system is the animation library in `animation.js`. It provides a JavaScript class called `FadeInAnimation` that takes a DOM node as an argument and exposes `start()` and `stop()` methods to control the animation. This component [uses a ref](/learn/manipulating-the-dom-with-refs) to access the underlying DOM node. The Effect reads the DOM node from the ref and automatically starts the animation for that node when the component appears.
+
+```js
+import { useState, useEffect, useRef } from "react";
+import { FadeInAnimation } from "./animation.js";
+
+function Welcome() {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		const animation = new FadeInAnimation(ref.current);
+		animation.start(1000);
+		return () => {
+			animation.stop();
+		};
+	}, []);
+
+	return (
+		<h1
+			ref={ref}
+			style={{
+				opacity: 0,
+				color: "white",
+				padding: 50,
+				textAlign: "center",
+				fontSize: 50,
+				backgroundImage:
+					"radial-gradient(circle, rgba(63,94,251,1) 0%, rgba(252,70,107,1) 100%)",
+			}}
+		>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome />}
+		</>
+	);
+}
+```
+
+```js
+export class FadeInAnimation {
+	constructor(node) {
+		this.node = node;
+	}
+	start(duration) {
+		this.duration = duration;
+		if (this.duration === 0) {
+			// Jump to end immediately
+			this.onProgress(1);
+		} else {
+			this.onProgress(0);
+			// Start animating
+			this.startTime = performance.now();
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onFrame() {
+		const timePassed = performance.now() - this.startTime;
+		const progress = Math.min(timePassed / this.duration, 1);
+		this.onProgress(progress);
+		if (progress < 1) {
+			// We still have more frames to paint
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onProgress(progress) {
+		this.node.style.opacity = progress;
+	}
+	stop() {
+		cancelAnimationFrame(this.frameId);
+		this.startTime = null;
+		this.frameId = null;
+		this.duration = 0;
+	}
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+```
+
+#### Controlling a modal dialog
+
+In this example, the external system is the browser DOM. The `ModalDialog` component renders a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) element. It uses an Effect to synchronize the `isOpen` prop to the [`showModal()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/showModal) and [`close()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/close) method calls.
+
+```js
+import { useState } from "react";
+import ModalDialog from "./ModalDialog.js";
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button onClick={() => setShow(true)}>Open dialog</button>
+			<ModalDialog isOpen={show}>
+				Hello there!
+				<br />
+				<button
+					onClick={() => {
+						setShow(false);
+					}}
+				>
+					Close
+				</button>
+			</ModalDialog>
+		</>
+	);
+}
+```
+
+```js
+import { useEffect, useRef } from "react";
+
+export default function ModalDialog({ isOpen, children }) {
+	const ref = useRef();
+
+	useEffect(() => {
+		if (!isOpen) {
+			return;
+		}
+		const dialog = ref.current;
+		dialog.showModal();
+		return () => {
+			dialog.close();
+		};
+	}, [isOpen]);
+
+	return <dialog ref={ref}>{children}</dialog>;
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+#### Tracking element visibility
+
+In this example, the external system is again the browser DOM. The `App` component displays a long list, then a `Box` component, and then another long list. Scroll the list down. Notice that when the `Box` component appears in the viewport, the background color changes to black. To implement this, the `Box` component uses an Effect to manage an [`IntersectionObserver`](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API). This browser API notifies you when the DOM element is visible in the viewport.
+
+```js
+import Box from "./Box.js";
+
+export default function App() {
+	return (
+		<>
+			<LongSection />
+			<Box />
+			<LongSection />
+			<Box />
+			<LongSection />
+		</>
+	);
+}
+
+function LongSection() {
+	const items = [];
+	for (let i = 0; i < 50; i++) {
+		items.push(<li key={i}>Item #{i} (keep scrolling)</li>);
+	}
+	return <ul>{items}</ul>;
+}
+```
+
+```js
+import { useRef, useEffect } from "react";
+
+export default function Box() {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		const div = ref.current;
+		const observer = new IntersectionObserver((entries) => {
+			const entry = entries[0];
+			if (entry.isIntersecting) {
+				document.body.style.backgroundColor = "black";
+				document.body.style.color = "white";
+			} else {
+				document.body.style.backgroundColor = "white";
+				document.body.style.color = "black";
+			}
+		});
+		observer.observe(div, {
+			threshold: 1.0,
+		});
+		return () => {
+			observer.disconnect();
+		};
+	}, []);
+
+	return (
+		<div
+			ref={ref}
+			style={{
+				margin: 20,
+				height: 100,
+				width: 100,
+				border: "2px solid black",
+				backgroundColor: "blue",
+			}}
+		/>
+	);
+}
+```
+
+</Recipes>
+
+---
+
+### Wrapping Effects in custom Hooks
+
+Effects are an ["escape hatch":](/learn/escape-hatches) you use them when you need to "step outside React" and when there is no better built-in solution for your use case. If you find yourself often needing to manually write Effects, it's usually a sign that you need to extract some [custom Hooks](/learn/reusing-logic-with-custom-hooks) for common behaviors your components rely on.
+
+For example, this `useChatRoom` custom Hook "hides" the logic of your Effect behind a more declarative API:
+
+```js
+function useChatRoom({ serverUrl, roomId }) {
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+}
+```
+
+Then you can use it from any component like this:
+
+```js
+function ChatRoom({ roomId }) {
+  const [serverUrl, setServerUrl] = useState('https://localhost:1234');
+
+  useChatRoom({
+    roomId: roomId,
+    serverUrl: serverUrl
+  });
+  // ...
+```
+
+There are also many excellent custom Hooks for every purpose available in the React ecosystem.
+
+[Learn more about wrapping Effects in custom Hooks.](/learn/reusing-logic-with-custom-hooks)
+
+<Recipes titleText="Examples of wrapping Effects in custom Hooks" titleId="examples-custom-hooks">
+
+#### Custom `useChatRoom` Hook
+
+This example is identical to one of the [earlier examples,](#examples-connecting) but the logic is extracted to a custom Hook.
+
+```js
+import { useState } from "react";
+import { useChatRoom } from "./useChatRoom.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useChatRoom({
+		roomId: roomId,
+		serverUrl: serverUrl,
+	});
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+export function useChatRoom({ serverUrl, roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId, serverUrl]);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+#### Custom `useWindowListener` Hook
+
+This example is identical to one of the [earlier examples,](#examples-connecting) but the logic is extracted to a custom Hook.
+
+```js
+import { useState } from "react";
+import { useWindowListener } from "./useWindowListener.js";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+
+	useWindowListener("pointermove", (e) => {
+		setPosition({ x: e.clientX, y: e.clientY });
+	});
+
+	return (
+		<div
+			style={{
+				position: "absolute",
+				backgroundColor: "pink",
+				borderRadius: "50%",
+				opacity: 0.6,
+				transform: `translate(${position.x}px, ${position.y}px)`,
+				pointerEvents: "none",
+				left: -20,
+				top: -20,
+				width: 40,
+				height: 40,
+			}}
+		/>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useWindowListener(eventType, listener) {
+	useEffect(() => {
+		window.addEventListener(eventType, listener);
+		return () => {
+			window.removeEventListener(eventType, listener);
+		};
+	}, [eventType, listener]);
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+#### Custom `useIntersectionObserver` Hook
+
+This example is identical to one of the [earlier examples,](#examples-connecting) but the logic is partially extracted to a custom Hook.
+
+```js
+import Box from "./Box.js";
+
+export default function App() {
+	return (
+		<>
+			<LongSection />
+			<Box />
+			<LongSection />
+			<Box />
+			<LongSection />
+		</>
+	);
+}
+
+function LongSection() {
+	const items = [];
+	for (let i = 0; i < 50; i++) {
+		items.push(<li key={i}>Item #{i} (keep scrolling)</li>);
+	}
+	return <ul>{items}</ul>;
+}
+```
+
+```js
+import { useRef, useEffect } from "react";
+import { useIntersectionObserver } from "./useIntersectionObserver.js";
+
+export default function Box() {
+	const ref = useRef(null);
+	const isIntersecting = useIntersectionObserver(ref);
+
+	useEffect(() => {
+		if (isIntersecting) {
+			document.body.style.backgroundColor = "black";
+			document.body.style.color = "white";
+		} else {
+			document.body.style.backgroundColor = "white";
+			document.body.style.color = "black";
+		}
+	}, [isIntersecting]);
+
+	return (
+		<div
+			ref={ref}
+			style={{
+				margin: 20,
+				height: 100,
+				width: 100,
+				border: "2px solid black",
+				backgroundColor: "blue",
+			}}
+		/>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useIntersectionObserver(ref) {
+	const [isIntersecting, setIsIntersecting] = useState(false);
+
+	useEffect(() => {
+		const div = ref.current;
+		const observer = new IntersectionObserver((entries) => {
+			const entry = entries[0];
+			setIsIntersecting(entry.isIntersecting);
+		});
+		observer.observe(div, {
+			threshold: 1.0,
+		});
+		return () => {
+			observer.disconnect();
+		};
+	}, [ref]);
+
+	return isIntersecting;
+}
+```
+
+</Recipes>
+
+---
+
+### Controlling a non-React widget
+
+Sometimes, you want to keep an external system synchronized to some prop or state of your component.
+
+For example, if you have a third-party map widget or a video player component written without React, you can use an Effect to call methods on it that make its state match the current state of your React component. This Effect creates an instance of a `MapWidget` class defined in `map-widget.js`. When you change the `zoomLevel` prop of the `Map` component, the Effect calls the `setZoom()` on the class instance to keep it synchronized:
+
+```json package.json hidden
+{
+	"dependencies": {
+		"leaflet": "1.9.1",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"remarkable": "2.0.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState } from "react";
+import Map from "./Map.js";
+
+export default function App() {
+	const [zoomLevel, setZoomLevel] = useState(0);
+	return (
+		<>
+			Zoom level: {zoomLevel}x
+			<button onClick={() => setZoomLevel(zoomLevel + 1)}>+</button>
+			<button onClick={() => setZoomLevel(zoomLevel - 1)}>-</button>
+			<hr />
+			<Map zoomLevel={zoomLevel} />
+		</>
+	);
+}
+```
+
+```js
+import { useRef, useEffect } from "react";
+import { MapWidget } from "./map-widget.js";
+
+export default function Map({ zoomLevel }) {
+	const containerRef = useRef(null);
+	const mapRef = useRef(null);
+
+	useEffect(() => {
+		if (mapRef.current === null) {
+			mapRef.current = new MapWidget(containerRef.current);
+		}
+
+		const map = mapRef.current;
+		map.setZoom(zoomLevel);
+	}, [zoomLevel]);
+
+	return <div style={{ width: 200, height: 200 }} ref={containerRef} />;
+}
+```
+
+```js
+import "leaflet/dist/leaflet.css";
+import * as L from "leaflet";
+
+export class MapWidget {
+	constructor(domNode) {
+		this.map = L.map(domNode, {
+			zoomControl: false,
+			doubleClickZoom: false,
+			boxZoom: false,
+			keyboard: false,
+			scrollWheelZoom: false,
+			zoomAnimation: false,
+			touchZoom: false,
+			zoomSnap: 0.1,
+		});
+		L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
+			maxZoom: 19,
+			attribution: "© OpenStreetMap",
+		}).addTo(this.map);
+		this.map.setView([0, 0], 0);
+	}
+	setZoom(level) {
+		this.map.setZoom(level);
+	}
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+```
+
+In this example, a cleanup function is not needed because the `MapWidget` class manages only the DOM node that was passed to it. After the `Map` React component is removed from the tree, both the DOM node and the `MapWidget` class instance will be automatically garbage-collected by the browser JavaScript engine.
+
+---
+
+### Fetching data with Effects
+
+You can use an Effect to fetch data for your component. Note that [if you use a framework,](/learn/start-a-new-react-project#production-grade-react-frameworks) using your framework's data fetching mechanism will be a lot more efficient than writing Effects manually.
+
+If you want to fetch data from an Effect manually, your code might look like this:
+
+```js
+import { useState, useEffect } from 'react';
+import { fetchBio } from './api.js';
+
+export default function Page() {
+  const [person, setPerson] = useState('Alice');
+  const [bio, setBio] = useState(null);
+
+  useEffect(() => {
+    let ignore = false;
+    setBio(null);
+    fetchBio(person).then(result => {
+      if (!ignore) {
+        setBio(result);
+      }
+    });
+    return () => {
+      ignore = true;
+    };
+  }, [person]);
+
+  // ...
+```
+
+Note the `ignore` variable which is initialized to `false`, and is set to `true` during cleanup. This ensures [your code doesn't suffer from "race conditions":](https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect) network responses may arrive in a different order than you sent them.
+
+```js
+import { useState, useEffect } from "react";
+import { fetchBio } from "./api.js";
+
+export default function Page() {
+	const [person, setPerson] = useState("Alice");
+	const [bio, setBio] = useState(null);
+	useEffect(() => {
+		let ignore = false;
+		setBio(null);
+		fetchBio(person).then((result) => {
+			if (!ignore) {
+				setBio(result);
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, [person]);
+
+	return (
+		<>
+			<select
+				value={person}
+				onChange={(e) => {
+					setPerson(e.target.value);
+				}}
+			>
+				<option value="Alice">Alice</option>
+				<option value="Bob">Bob</option>
+				<option value="Taylor">Taylor</option>
+			</select>
+			<hr />
+			<p>
+				<i>{bio ?? "Loading..."}</i>
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export async function fetchBio(person) {
+	const delay = person === "Bob" ? 2000 : 200;
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve("This is " + person + "’s bio.");
+		}, delay);
+	});
+}
+```
+
+You can also rewrite using the [`async` / `await`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) syntax, but you still need to provide a cleanup function:
+
+```js
+import { useState, useEffect } from "react";
+import { fetchBio } from "./api.js";
+
+export default function Page() {
+	const [person, setPerson] = useState("Alice");
+	const [bio, setBio] = useState(null);
+	useEffect(() => {
+		async function startFetching() {
+			setBio(null);
+			const result = await fetchBio(person);
+			if (!ignore) {
+				setBio(result);
+			}
+		}
+
+		let ignore = false;
+		startFetching();
+		return () => {
+			ignore = true;
+		};
+	}, [person]);
+
+	return (
+		<>
+			<select
+				value={person}
+				onChange={(e) => {
+					setPerson(e.target.value);
+				}}
+			>
+				<option value="Alice">Alice</option>
+				<option value="Bob">Bob</option>
+				<option value="Taylor">Taylor</option>
+			</select>
+			<hr />
+			<p>
+				<i>{bio ?? "Loading..."}</i>
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export async function fetchBio(person) {
+	const delay = person === "Bob" ? 2000 : 200;
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve("This is " + person + "’s bio.");
+		}, delay);
+	});
+}
+```
+
+Writing data fetching directly in Effects gets repetitive and makes it difficult to add optimizations like caching and server rendering later. [It's easier to use a custom Hook--either your own or maintained by the community.](/learn/reusing-logic-with-custom-hooks#when-to-use-custom-hooks)
+
+<DeepDive>
+
+#### What are good alternatives to data fetching in Effects?
+
+Writing `fetch` calls inside Effects is a [popular way to fetch data](https://www.robinwieruch.de/react-hooks-fetch-data/), especially in fully client-side apps. This is, however, a very manual approach and it has significant downsides:
+
+-   **Effects don't run on the server.** This means that the initial server-rendered HTML will only include a loading state with no data. The client computer will have to download all JavaScript and render your app only to discover that now it needs to load the data. This is not very efficient.
+-   **Fetching directly in Effects makes it easy to create "network waterfalls".** You render the parent component, it fetches some data, renders the child components, and then they start fetching their data. If the network is not very fast, this is significantly slower than fetching all data in parallel.
+-   **Fetching directly in Effects usually means you don't preload or cache data.** For example, if the component unmounts and then mounts again, it would have to fetch the data again.
+-   **It's not very ergonomic.** There's quite a bit of boilerplate code involved when writing `fetch` calls in a way that doesn't suffer from bugs like [race conditions.](https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect)
+
+This list of downsides is not specific to React. It applies to fetching data on mount with any library. Like with routing, data fetching is not trivial to do well, so we recommend the following approaches:
+
+-   **If you use a [framework](/learn/start-a-new-react-project#production-grade-react-frameworks), use its built-in data fetching mechanism.** Modern React frameworks have integrated data fetching mechanisms that are efficient and don't suffer from the above pitfalls.
+-   **Otherwise, consider using or building a client-side cache.** Popular open source solutions include [React Query](https://react-query.tanstack.com/), [useSWR](https://swr.vercel.app/), and [React Router 6.4+.](https://beta.reactrouter.com/en/main/start/overview) You can build your own solution too, in which case you would use Effects under the hood but also add logic for deduplicating requests, caching responses, and avoiding network waterfalls (by preloading data or hoisting data requirements to routes).
+
+You can continue fetching data directly in Effects if neither of these approaches suit you.
+
+</DeepDive>
+
+---
+
+### Specifying reactive dependencies
+
+**Notice that you can't "choose" the dependencies of your Effect.** Every <CodeStep step={2}>reactive value</CodeStep> used by your Effect's code must be declared as a dependency. Your Effect's dependency list is determined by the surrounding code:
+
+```js
+function ChatRoom({ roomId }) {
+	// This is a reactive value
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234"); // This is a reactive value too
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId); // This Effect reads these reactive values
+		connection.connect();
+		return () => connection.disconnect();
+	}, [serverUrl, roomId]); // ✅ So you must specify them as dependencies of your Effect
+	// ...
+}
+```
+
+If either `serverUrl` or `roomId` change, your Effect will reconnect to the chat using the new values.
+
+**[Reactive values](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) include props and all variables and functions declared directly inside of your component.** Since `roomId` and `serverUrl` are reactive values, you can't remove them from the dependencies. If you try to omit them and [your linter is correctly configured for React,](/learn/editor-setup#linting) the linter will flag this as a mistake you need to fix:
+
+```js
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // 🔴 React Hook useEffect has missing dependencies: 'roomId' and 'serverUrl'
+	// ...
+}
+```
+
+**To remove a dependency, you need to ["prove" to the linter that it _doesn't need_ to be a dependency.](/learn/removing-effect-dependencies#removing-unnecessary-dependencies)** For example, you can move `serverUrl` out of your component to prove that it's not reactive and won't change on re-renders:
+
+```js
+const serverUrl = "https://localhost:1234"; // Not a reactive value anymore
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+Now that `serverUrl` is not a reactive value (and can't change on a re-render), it doesn't need to be a dependency. **If your Effect's code doesn't use any reactive values, its dependency list should be empty (`[]`):**
+
+```js
+const serverUrl = "https://localhost:1234"; // Not a reactive value anymore
+const roomId = "music"; // Not a reactive value anymore
+
+function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // ✅ All dependencies declared
+	// ...
+}
+```
+
+[An Effect with empty dependencies](/learn/lifecycle-of-reactive-effects#what-an-effect-with-empty-dependencies-means) doesn't re-run when any of your component's props or state change.
+
+<Pitfall>
+
+If you have an existing codebase, you might have some Effects that suppress the linter like this:
+
+```js
+useEffect(() => {
+	// ...
+	// 🔴 Avoid suppressing the linter like this:
+	// eslint-ignore-next-line react-hooks/exhaustive-deps
+}, []);
+```
+
+**When dependencies don't match the code, there is a high risk of introducing bugs.** By suppressing the linter, you "lie" to React about the values your Effect depends on. [Instead, prove they're unnecessary.](/learn/removing-effect-dependencies#removing-unnecessary-dependencies)
+
+</Pitfall>
+
+<Recipes titleText="Examples of passing reactive dependencies" titleId="examples-dependencies">
+
+#### Passing a dependency array
+
+If you specify the dependencies, your Effect runs **after the initial render _and_ after re-renders with changed dependencies.**
+
+```js
+useEffect(() => {
+	// ...
+}, [a, b]); // Runs again if a or b are different
+```
+
+In the below example, `serverUrl` and `roomId` are [reactive values,](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) so they both must be specified as dependencies. As a result, selecting a different room in the dropdown or editing the server URL input causes the chat to re-connect. However, since `message` isn't used in the Effect (and so it isn't a dependency), editing the message doesn't re-connect to the chat.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [serverUrl, roomId]);
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+			<label>
+				Your message:{" "}
+				<input
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+			</label>
+		</>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+				<button onClick={() => setShow(!show)}>{show ? "Close chat" : "Open chat"}</button>
+			</label>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	margin-bottom: 10px;
+}
+button {
+	margin-left: 5px;
+}
+```
+
+#### Passing an empty dependency array
+
+If your Effect truly doesn't use any reactive values, it will only run **after the initial render.**
+
+```js
+useEffect(() => {
+	// ...
+}, []); // Does not run again (except once in development)
+```
+
+**Even with empty dependencies, setup and cleanup will [run one extra time in development](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development) to help you find bugs.**
+
+In this example, both `serverUrl` and `roomId` are hardcoded. Since they're declared outside the component, they are not reactive values, and so they aren't dependencies. The dependency list is empty, so the Effect doesn't re-run on re-renders.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+const roomId = "music";
+
+function ChatRoom() {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<label>
+				Your message:{" "}
+				<input
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+			</label>
+		</>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+#### Passing no dependency array at all
+
+If you pass no dependency array at all, your Effect runs **after every single render (and re-render)** of your component.
+
+```js
+useEffect(() => {
+	// ...
+}); // Always runs again
+```
+
+In this example, the Effect re-runs when you change `serverUrl` and `roomId`, which is sensible. However, it _also_ re-runs when you change the `message`, which is probably undesirable. This is why usually you'll specify the dependency array.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}); // No dependency array at all
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+			<label>
+				Your message:{" "}
+				<input
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+			</label>
+		</>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+				<button onClick={() => setShow(!show)}>{show ? "Close chat" : "Open chat"}</button>
+			</label>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	margin-bottom: 10px;
+}
+button {
+	margin-left: 5px;
+}
+```
+
+</Recipes>
+
+---
+
+### Updating state based on previous state from an Effect
+
+When you want to update state based on previous state from an Effect, you might run into a problem:
+
+```js
+function Counter() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		const intervalId = setInterval(() => {
+			setCount(count + 1); // You want to increment the counter every second...
+		}, 1000);
+		return () => clearInterval(intervalId);
+	}, [count]); // 🚩 ... but specifying `count` as a dependency always resets the interval.
+	// ...
+}
+```
+
+Since `count` is a reactive value, it must be specified in the list of dependencies. However, that causes the Effect to cleanup and setup again every time the `count` changes. This is not ideal.
+
+To fix this, [pass the `c => c + 1` state updater](/reference/react/useState#updating-state-based-on-the-previous-state) to `setCount`:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Counter() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		const intervalId = setInterval(() => {
+			setCount((c) => c + 1); // ✅ Pass a state updater
+		}, 1000);
+		return () => clearInterval(intervalId);
+	}, []); // ✅ Now count is not a dependency
+
+	return <h1>{count}</h1>;
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+Now that you're passing `c => c + 1` instead of `count + 1`, [your Effect no longer needs to depend on `count`.](/learn/removing-effect-dependencies#are-you-reading-some-state-to-calculate-the-next-state) As a result of this fix, it won't need to cleanup and setup the interval again every time the `count` changes.
+
+---
+
+### Removing unnecessary object dependencies
+
+If your Effect depends on an object or a function created during rendering, it might run too often. For example, this Effect re-connects after every render because the `options` object is [different for every render:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
+
+```js
+const serverUrl = 'https://localhost:1234';
+
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  const options = { // 🚩 This object is created from scratch on every re-render
+    serverUrl: serverUrl,
+    roomId: roomId
+  };
+
+  useEffect(() => {
+    const connection = createConnection(options); // It's used inside the Effect
+    connection.connect();
+    return () => connection.disconnect();
+  }, [options]); // 🚩 As a result, these dependencies are always different on a re-render
+  // ...
+```
+
+Avoid using an object created during rendering as a dependency. Instead, create the object inside the Effect:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Now that you create the `options` object inside the Effect, the Effect itself only depends on the `roomId` string.
+
+With this fix, typing into the input doesn't reconnect the chat. Unlike an object which gets re-created, a string like `roomId` doesn't change unless you set it to another value. [Read more about removing dependencies.](/learn/removing-effect-dependencies)
+
+---
+
+### Removing unnecessary function dependencies
+
+If your Effect depends on an object or a function created during rendering, it might run too often. For example, this Effect re-connects after every render because the `createOptions` function is [different for every render:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
+
+```js
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  function createOptions() { // 🚩 This function is created from scratch on every re-render
+    return {
+      serverUrl: serverUrl,
+      roomId: roomId
+    };
+  }
+
+  useEffect(() => {
+    const options = createOptions(); // It's used inside the Effect
+    const connection = createConnection();
+    connection.connect();
+    return () => connection.disconnect();
+  }, [createOptions]); // 🚩 As a result, these dependencies are always different on a re-render
+  // ...
+```
+
+By itself, creating a function from scratch on every re-render is not a problem. You don't need to optimize that. However, if you use it as a dependency of your Effect, it will cause your Effect to re-run after every re-render.
+
+Avoid using a function created during rendering as a dependency. Instead, declare it inside the Effect:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		function createOptions() {
+			return {
+				serverUrl: serverUrl,
+				roomId: roomId,
+			};
+		}
+
+		const options = createOptions();
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Now that you define the `createOptions` function inside the Effect, the Effect itself only depends on the `roomId` string. With this fix, typing into the input doesn't reconnect the chat. Unlike a function which gets re-created, a string like `roomId` doesn't change unless you set it to another value. [Read more about removing dependencies.](/learn/removing-effect-dependencies)
+
+---
+
+### Reading the latest props and state from an Effect
+
+<Wip>
+
+This section describes an **experimental API that has not yet been released** in a stable version of React.
+
+</Wip>
+
+By default, when you read a reactive value from an Effect, you have to add it as a dependency. This ensures that your Effect "reacts" to every change of that value. For most dependencies, that's the behavior you want.
+
+**However, sometimes you'll want to read the _latest_ props and state from an Effect without "reacting" to them.** For example, imagine you want to log the number of the items in the shopping cart for every page visit:
+
+```js
+function Page({ url, shoppingCart }) {
+	useEffect(() => {
+		logVisit(url, shoppingCart.length);
+	}, [url, shoppingCart]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+**What if you want to log a new page visit after every `url` change, but _not_ if only the `shoppingCart` changes?** You can't exclude `shoppingCart` from dependencies without breaking the [reactivity rules.](#specifying-reactive-dependencies) However, you can express that you _don't want_ a piece of code to "react" to changes even though it is called from inside an Effect. [Declare an _Effect Event_](/learn/separating-events-from-effects#declaring-an-effect-event) with the [`useEffectEvent`](/reference/react/experimental_useEffectEvent) Hook, and move the code reading `shoppingCart` inside of it:
+
+```js
+function Page({ url, shoppingCart }) {
+	const onVisit = useEffectEvent((visitedUrl) => {
+		logVisit(visitedUrl, shoppingCart.length);
+	});
+
+	useEffect(() => {
+		onVisit(url);
+	}, [url]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+**Effect Events are not reactive and must always be omitted from dependencies of your Effect.** This is what lets you put non-reactive code (where you can read the latest value of some props and state) inside of them. By reading `shoppingCart` inside of `onVisit`, you ensure that `shoppingCart` won't re-run your Effect.
+
+[Read more about how Effect Events let you separate reactive and non-reactive code.](/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)
+
+---
+
+### Displaying different content on the server and the client
+
+If your app uses server rendering (either [directly](/reference/react-dom/server) or via a [framework](/learn/start-a-new-react-project#production-grade-react-frameworks)), your component will render in two different environments. On the server, it will render to produce the initial HTML. On the client, React will run the rendering code again so that it can attach your event handlers to that HTML. This is why, for [hydration](/reference/react-dom/client/hydrateRoot#hydrating-server-rendered-html) to work, your initial render output must be identical on the client and the server.
+
+In rare cases, you might need to display different content on the client. For example, if your app reads some data from [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), it can't possibly do that on the server. Here is how you could implement this:
+
+```js
+function MyComponent() {
+	const [didMount, setDidMount] = useState(false);
+
+	useEffect(() => {
+		setDidMount(true);
+	}, []);
+
+	if (didMount) {
+		// ... return client-only JSX ...
+	} else {
+		// ... return initial JSX ...
+	}
+}
+```
+
+While the app is loading, the user will see the initial render output. Then, when it's loaded and hydrated, your Effect will run and set `didMount` to `true`, triggering a re-render. This will switch to the client-only render output. Effects don't run on the server, so this is why `didMount` was `false` during the initial server render.
+
+Use this pattern sparingly. Keep in mind that users with a slow connection will see the initial content for quite a bit of time--potentially, many seconds--so you don't want to make jarring changes to your component's appearance. In many cases, you can avoid the need for this by conditionally showing different things with CSS.
+
+---
+
+## Troubleshooting
+
+### My Effect runs twice when the component mounts
+
+When Strict Mode is on, in development, React runs setup and cleanup one extra time before the actual setup.
+
+This is a stress-test that verifies your Effect’s logic is implemented correctly. If this causes visible issues, your cleanup function is missing some logic. The cleanup function should stop or undo whatever the setup function was doing. The rule of thumb is that the user shouldn’t be able to distinguish between the setup being called once (as in production) and a setup → cleanup → setup sequence (as in development).
+
+Read more about [how this helps find bugs](/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed) and [how to fix your logic.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+---
+
+### My Effect runs after every re-render
+
+First, check that you haven't forgotten to specify the dependency array:
+
+```js
+useEffect(() => {
+	// ...
+}); // 🚩 No dependency array: re-runs after every render!
+```
+
+If you've specified the dependency array but your Effect still re-runs in a loop, it's because one of your dependencies is different on every re-render.
+
+You can debug this problem by manually logging your dependencies to the console:
+
+```js
+useEffect(() => {
+	// ..
+}, [serverUrl, roomId]);
+
+console.log([serverUrl, roomId]);
+```
+
+You can then right-click on the arrays from different re-renders in the console and select "Store as a global variable" for both of them. Assuming the first one got saved as `temp1` and the second one got saved as `temp2`, you can then use the browser console to check whether each dependency in both arrays is the same:
+
+```js
+Object.is(temp1[0], temp2[0]); // Is the first dependency the same between the arrays?
+Object.is(temp1[1], temp2[1]); // Is the second dependency the same between the arrays?
+Object.is(temp1[2], temp2[2]); // ... and so on for every dependency ...
+```
+
+When you find the dependency that is different on every re-render, you can usually fix it in one of these ways:
+
+-   [Updating state based on previous state from an Effect](#updating-state-based-on-previous-state-from-an-effect)
+-   [Removing unnecessary object dependencies](#removing-unnecessary-object-dependencies)
+-   [Removing unnecessary function dependencies](#removing-unnecessary-function-dependencies)
+-   [Reading the latest props and state from an Effect](#reading-the-latest-props-and-state-from-an-effect)
+
+As a last resort (if these methods didn't help), wrap its creation with [`useMemo`](/reference/react/useMemo#memoizing-a-dependency-of-another-hook) or [`useCallback`](/reference/react/useCallback#preventing-an-effect-from-firing-too-often) (for functions).
+
+---
+
+### My Effect keeps re-running in an infinite cycle
+
+If your Effect runs in an infinite cycle, these two things must be true:
+
+-   Your Effect is updating some state.
+-   That state leads to a re-render, which causes the Effect's dependencies to change.
+
+Before you start fixing the problem, ask yourself whether your Effect is connecting to some external system (like DOM, network, a third-party widget, and so on). Why does your Effect need to set state? Does it synchronize with that external system? Or are you trying to manage your application's data flow with it?
+
+If there is no external system, consider whether [removing the Effect altogether](/learn/you-might-not-need-an-effect) would simplify your logic.
+
+If you're genuinely synchronizing with some external system, think about why and under what conditions your Effect should update the state. Has something changed that affects your component's visual output? If you need to keep track of some data that isn't used by rendering, a [ref](/reference/react/useRef#referencing-a-value-with-a-ref) (which doesn't trigger re-renders) might be more appropriate. Verify your Effect doesn't update the state (and trigger re-renders) more than needed.
+
+Finally, if your Effect is updating the state at the right time, but there is still a loop, it's because that state update leads to one of the Effect's dependencies changing. [Read how to debug dependency changes.](/reference/react/useEffect#my-effect-runs-after-every-re-render)
+
+---
+
+### My cleanup logic runs even though my component didn't unmount
+
+The cleanup function runs not only during unmount, but before every re-render with changed dependencies. Additionally, in development, React [runs setup+cleanup one extra time immediately after component mounts.](#my-effect-runs-twice-when-the-component-mounts)
+
+If you have cleanup code without corresponding setup code, it's usually a code smell:
+
+```js
+useEffect(() => {
+	// 🔴 Avoid: Cleanup logic without corresponding setup logic
+	return () => {
+		doSomething();
+	};
+}, []);
+```
+
+Your cleanup logic should be "symmetrical" to the setup logic, and should stop or undo whatever setup did:
+
+```js
+useEffect(() => {
+	const connection = createConnection(serverUrl, roomId);
+	connection.connect();
+	return () => {
+		connection.disconnect();
+	};
+}, [serverUrl, roomId]);
+```
+
+[Learn how the Effect lifecycle is different from the component's lifecycle.](/learn/lifecycle-of-reactive-effects#the-lifecycle-of-an-effect)
+
+---
+
+### My Effect does something visual, and I see a flicker before it runs
+
+If your Effect must block the browser from [painting the screen,](/learn/render-and-commit#epilogue-browser-paint) replace `useEffect` with [`useLayoutEffect`](/reference/react/useLayoutEffect). Note that **this shouldn't be needed for the vast majority of Effects.** You'll only need this if it's crucial to run your Effect before the browser paint: for example, to measure and position a tooltip before the user sees it.
diff --git a/docs/src/reference/use-id.md b/docs/src/reference/use-id.md
new file mode 100644
index 000000000..804738e7c
--- /dev/null
+++ b/docs/src/reference/use-id.md
@@ -0,0 +1,286 @@
+---
+title: Use ID 🚫
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useId` is a React Hook for generating unique IDs that can be passed to accessibility attributes.
+
+```js
+const id = useId();
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useId()`
+
+Call `useId` at the top level of your component to generate a unique ID:
+
+```js
+import { useId } from 'react';
+
+function PasswordField() {
+  const passwordHintId = useId();
+  // ...
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+`useId` does not take any parameters.
+
+#### Returns
+
+`useId` returns a unique ID string associated with this particular `useId` call in this particular component.
+
+#### Caveats
+
+-   `useId` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a new component and move the state into it.
+
+-   `useId` **should not be used to generate keys** in a list. [Keys should be generated from your data.](/learn/rendering-lists#where-to-get-your-key)
+
+---
+
+## Usage
+
+<Pitfall>
+
+**Do not call `useId` to generate keys in a list.** [Keys should be generated from your data.](/learn/rendering-lists#where-to-get-your-key)
+
+</Pitfall>
+
+### Generating unique IDs for accessibility attributes
+
+Call `useId` at the top level of your component to generate a unique ID:
+
+```js
+import { useId } from 'react';
+
+function PasswordField() {
+  const passwordHintId = useId();
+  // ...
+```
+
+You can then pass the <CodeStep step={1}>generated ID</CodeStep> to different attributes:
+
+```js
+<>
+  <input type="password" aria-describedby={passwordHintId} />
+  <p id={passwordHintId}>
+</>
+```
+
+**Let's walk through an example to see when this is useful.**
+
+[HTML accessibility attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) like [`aria-describedby`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby) let you specify that two tags are related to each other. For example, you can specify that an element (like an input) is described by another element (like a paragraph).
+
+In regular HTML, you would write it like this:
+
+```html {5,8}
+<label>
+	Password:
+	<input type="password" aria-describedby="password-hint" />
+</label>
+<p id="password-hint">The password should contain at least 18 characters</p>
+```
+
+However, hardcoding IDs like this is not a good practice in React. A component may be rendered more than once on the page--but IDs have to be unique! Instead of hardcoding an ID, generate a unique ID with `useId`:
+
+```js
+import { useId } from "react";
+
+function PasswordField() {
+	const passwordHintId = useId();
+	return (
+		<>
+			<label>
+				Password:
+				<input type="password" aria-describedby={passwordHintId} />
+			</label>
+			<p id={passwordHintId}>
+				The password should contain at least 18 characters
+			</p>
+		</>
+	);
+}
+```
+
+Now, even if `PasswordField` appears multiple times on the screen, the generated IDs won't clash.
+
+```js
+import { useId } from "react";
+
+function PasswordField() {
+	const passwordHintId = useId();
+	return (
+		<>
+			<label>
+				Password:
+				<input type="password" aria-describedby={passwordHintId} />
+			</label>
+			<p id={passwordHintId}>
+				The password should contain at least 18 characters
+			</p>
+		</>
+	);
+}
+
+export default function App() {
+	return (
+		<>
+			<h2>Choose password</h2>
+			<PasswordField />
+			<h2>Confirm password</h2>
+			<PasswordField />
+		</>
+	);
+}
+```
+
+```css
+input {
+	margin: 5px;
+}
+```
+
+[Watch this video](https://www.youtube.com/watch?v=0dNzNcuEuOo) to see the difference in the user experience with assistive technologies.
+
+<Pitfall>
+
+With [server rendering](/reference/react-dom/server), **`useId` requires an identical component tree on the server and the client**. If the trees you render on the server and the client don't match exactly, the generated IDs won't match.
+
+</Pitfall>
+
+<DeepDive>
+
+#### Why is useId better than an incrementing counter?
+
+You might be wondering why `useId` is better than incrementing a global variable like `nextId++`.
+
+The primary benefit of `useId` is that React ensures that it works with [server rendering.](/reference/react-dom/server) During server rendering, your components generate HTML output. Later, on the client, [hydration](/reference/react-dom/client/hydrateRoot) attaches your event handlers to the generated HTML. For hydration to work, the client output must match the server HTML.
+
+This is very difficult to guarantee with an incrementing counter because the order in which the client components are hydrated may not match the order in which the server HTML was emitted. By calling `useId`, you ensure that hydration will work, and the output will match between the server and the client.
+
+Inside React, `useId` is generated from the "parent path" of the calling component. This is why, if the client and the server tree are the same, the "parent path" will match up regardless of rendering order.
+
+</DeepDive>
+
+---
+
+### Generating IDs for several related elements
+
+If you need to give IDs to multiple related elements, you can call `useId` to generate a shared prefix for them:
+
+```js
+import { useId } from "react";
+
+export default function Form() {
+	const id = useId();
+	return (
+		<form>
+			<label htmlFor={id + "-firstName"}>First Name:</label>
+			<input id={id + "-firstName"} type="text" />
+			<hr />
+			<label htmlFor={id + "-lastName"}>Last Name:</label>
+			<input id={id + "-lastName"} type="text" />
+		</form>
+	);
+}
+```
+
+```css
+input {
+	margin: 5px;
+}
+```
+
+This lets you avoid calling `useId` for every single element that needs a unique ID.
+
+---
+
+### Specifying a shared prefix for all generated IDs
+
+If you render multiple independent React applications on a single page, pass `identifierPrefix` as an option to your [`createRoot`](/reference/react-dom/client/createRoot#parameters) or [`hydrateRoot`](/reference/react-dom/client/hydrateRoot) calls. This ensures that the IDs generated by the two different apps never clash because every identifier generated with `useId` will start with the distinct prefix you've specified.
+
+```html index.html
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>My app</title>
+	</head>
+	<body>
+		<div id="root1"></div>
+		<div id="root2"></div>
+	</body>
+</html>
+```
+
+```js
+import { useId } from "react";
+
+function PasswordField() {
+	const passwordHintId = useId();
+	console.log("Generated identifier:", passwordHintId);
+	return (
+		<>
+			<label>
+				Password:
+				<input type="password" aria-describedby={passwordHintId} />
+			</label>
+			<p id={passwordHintId}>
+				The password should contain at least 18 characters
+			</p>
+		</>
+	);
+}
+
+export default function App() {
+	return (
+		<>
+			<h2>Choose password</h2>
+			<PasswordField />
+		</>
+	);
+}
+```
+
+```js
+import { createRoot } from "react-dom/client";
+import App from "./App.js";
+import "./styles.css";
+
+const root1 = createRoot(document.getElementById("root1"), {
+	identifierPrefix: "my-first-app-",
+});
+root1.render(<App />);
+
+const root2 = createRoot(document.getElementById("root2"), {
+	identifierPrefix: "my-second-app-",
+});
+root2.render(<App />);
+```
+
+```css
+#root1 {
+	border: 5px solid blue;
+	padding: 10px;
+	margin: 5px;
+}
+
+#root2 {
+	border: 5px solid green;
+	padding: 10px;
+	margin: 5px;
+}
+
+input {
+	margin: 5px;
+}
+```
diff --git a/docs/src/reference/use-memo.md b/docs/src/reference/use-memo.md
index 3daffe622..4a9f3143a 100644
--- a/docs/src/reference/use-memo.md
+++ b/docs/src/reference/use-memo.md
@@ -1,3 +1,1288 @@
 ---
 title: Use Memo 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useMemo` is a React Hook that lets you cache the result of a calculation between re-renders.
+
+```js
+const cachedValue = useMemo(calculateValue, dependencies);
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useMemo(calculateValue, dependencies)`
+
+Call `useMemo` at the top level of your component to cache a calculation between re-renders:
+
+```js
+import { useMemo } from "react";
+
+function TodoList({ todos, tab }) {
+	const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
+	// ...
+}
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `calculateValue`: The function calculating the value that you want to cache. It should be pure, should take no arguments, and should return a value of any type. React will call your function during the initial render. On next renders, React will return the same value again if the `dependencies` have not changed since the last render. Otherwise, it will call `calculateValue`, return its result, and store it so it can be reused later.
+
+-   `dependencies`: The list of all reactive values referenced inside of the `calculateValue` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison.
+
+#### Returns
+
+On the initial render, `useMemo` returns the result of calling `calculateValue` with no arguments.
+
+During next renders, it will either return an already stored value from the last render (if the dependencies haven't changed), or call `calculateValue` again, and return the result that `calculateValue` has returned.
+
+#### Caveats
+
+-   `useMemo` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a new component and move the state into it.
+-   In Strict Mode, React will **call your calculation function twice** in order to [help you find accidental impurities.](#my-calculation-runs-twice-on-every-re-render) This is development-only behavior and does not affect production. If your calculation function is pure (as it should be), this should not affect your logic. The result from one of the calls will be ignored.
+-   React **will not throw away the cached value unless there is a specific reason to do that.** For example, in development, React throws away the cache when you edit the file of your component. Both in development and in production, React will throw away the cache if your component suspends during the initial mount. In the future, React may add more features that take advantage of throwing away the cache--for example, if React adds built-in support for virtualized lists in the future, it would make sense to throw away the cache for items that scroll out of the virtualized table viewport. This should be fine if you rely on `useMemo` solely as a performance optimization. Otherwise, a [state variable](/reference/react/useState#avoiding-recreating-the-initial-state) or a [ref](/reference/react/useRef#avoiding-recreating-the-ref-contents) may be more appropriate.
+
+<Note>
+
+Caching return values like this is also known as [_memoization_,](https://en.wikipedia.org/wiki/Memoization) which is why this Hook is called `useMemo`.
+
+</Note>
+
+---
+
+## Usage
+
+### Skipping expensive recalculations
+
+To cache a calculation between re-renders, wrap it in a `useMemo` call at the top level of your component:
+
+```js
+import { useMemo } from "react";
+
+function TodoList({ todos, tab, theme }) {
+	const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
+	// ...
+}
+```
+
+You need to pass two things to `useMemo`:
+
+1. A <CodeStep step={1}>calculation function</CodeStep> that takes no arguments, like `() =>`, and returns what you wanted to calculate.
+2. A <CodeStep step={2}>list of dependencies</CodeStep> including every value within your component that's used inside your calculation.
+
+On the initial render, the <CodeStep step={3}>value</CodeStep> you'll get from `useMemo` will be the result of calling your <CodeStep step={1}>calculation</CodeStep>.
+
+On every subsequent render, React will compare the <CodeStep step={2}>dependencies</CodeStep> with the dependencies you passed during the last render. If none of the dependencies have changed (compared with [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)), `useMemo` will return the value you already calculated before. Otherwise, React will re-run your calculation and return the new value.
+
+In other words, `useMemo` caches a calculation result between re-renders until its dependencies change.
+
+**Let's walk through an example to see when this is useful.**
+
+By default, React will re-run the entire body of your component every time that it re-renders. For example, if this `TodoList` updates its state or receives new props from its parent, the `filterTodos` function will re-run:
+
+```js
+function TodoList({ todos, tab, theme }) {
+	const visibleTodos = filterTodos(todos, tab);
+	// ...
+}
+```
+
+Usually, this isn't a problem because most calculations are very fast. However, if you're filtering or transforming a large array, or doing some expensive computation, you might want to skip doing it again if data hasn't changed. If both `todos` and `tab` are the same as they were during the last render, wrapping the calculation in `useMemo` like earlier lets you reuse `visibleTodos` you've already calculated before.
+
+This type of caching is called _[memoization.](https://en.wikipedia.org/wiki/Memoization)_
+
+<Note>
+
+**You should only rely on `useMemo` as a performance optimization.** If your code doesn't work without it, find the underlying problem and fix it first. Then you may add `useMemo` to improve performance.
+
+</Note>
+
+<DeepDive>
+
+#### How to tell if a calculation is expensive?
+
+In general, unless you're creating or looping over thousands of objects, it's probably not expensive. If you want to get more confidence, you can add a console log to measure the time spent in a piece of code:
+
+```js
+console.time("filter array");
+const visibleTodos = filterTodos(todos, tab);
+console.timeEnd("filter array");
+```
+
+Perform the interaction you're measuring (for example, typing into the input). You will then see logs like `filter array: 0.15ms` in your console. If the overall logged time adds up to a significant amount (say, `1ms` or more), it might make sense to memoize that calculation. As an experiment, you can then wrap the calculation in `useMemo` to verify whether the total logged time has decreased for that interaction or not:
+
+```js
+console.time("filter array");
+const visibleTodos = useMemo(() => {
+	return filterTodos(todos, tab); // Skipped if todos and tab haven't changed
+}, [todos, tab]);
+console.timeEnd("filter array");
+```
+
+`useMemo` won't make the _first_ render faster. It only helps you skip unnecessary work on updates.
+
+Keep in mind that your machine is probably faster than your users' so it's a good idea to test the performance with an artificial slowdown. For example, Chrome offers a [CPU Throttling](https://developer.chrome.com/blog/new-in-devtools-61/#throttling) option for this.
+
+Also note that measuring performance in development will not give you the most accurate results. (For example, when [Strict Mode](/reference/react/StrictMode) is on, you will see each component render twice rather than once.) To get the most accurate timings, build your app for production and test it on a device like your users have.
+
+</DeepDive>
+
+<DeepDive>
+
+#### Should you add useMemo everywhere?
+
+If your app is like this site, and most interactions are coarse (like replacing a page or an entire section), memoization is usually unnecessary. On the other hand, if your app is more like a drawing editor, and most interactions are granular (like moving shapes), then you might find memoization very helpful.
+
+Optimizing with `useMemo` is only valuable in a few cases:
+
+-   The calculation you're putting in `useMemo` is noticeably slow, and its dependencies rarely change.
+-   You pass it as a prop to a component wrapped in [`memo`.](/reference/react/memo) You want to skip re-rendering if the value hasn't changed. Memoization lets your component re-render only when dependencies aren't the same.
+-   The value you're passing is later used as a dependency of some Hook. For example, maybe another `useMemo` calculation value depends on it. Or maybe you are depending on this value from [`useEffect.`](/reference/react/useEffect)
+
+There is no benefit to wrapping a calculation in `useMemo` in other cases. There is no significant harm to doing that either, so some teams choose to not think about individual cases, and memoize as much as possible. The downside of this approach is that code becomes less readable. Also, not all memoization is effective: a single value that's "always new" is enough to break memoization for an entire component.
+
+**In practice, you can make a lot of memoization unnecessary by following a few principles:**
+
+1. When a component visually wraps other components, let it [accept JSX as children.](/learn/passing-props-to-a-component#passing-jsx-as-children) This way, when the wrapper component updates its own state, React knows that its children don't need to re-render.
+1. Prefer local state and don't [lift state up](/learn/sharing-state-between-components) any further than necessary. For example, don't keep transient state like forms and whether an item is hovered at the top of your tree or in a global state library.
+1. Keep your [rendering logic pure.](/learn/keeping-components-pure) If re-rendering a component causes a problem or produces some noticeable visual artifact, it's a bug in your component! Fix the bug instead of adding memoization.
+1. Avoid [unnecessary Effects that update state.](/learn/you-might-not-need-an-effect) Most performance problems in React apps are caused by chains of updates originating from Effects that cause your components to render over and over.
+1. Try to [remove unnecessary dependencies from your Effects.](/learn/removing-effect-dependencies) For example, instead of memoization, it's often simpler to move some object or a function inside an Effect or outside the component.
+
+If a specific interaction still feels laggy, [use the React Developer Tools profiler](https://legacy.reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html) to see which components would benefit the most from memoization, and add memoization where needed. These principles make your components easier to debug and understand, so it's good to follow them in any case. In the long term, we're researching [doing granular memoization automatically](https://www.youtube.com/watch?v=lGEMwh32soc) to solve this once and for all.
+
+</DeepDive>
+
+<Recipes titleText="The difference between useMemo and calculating a value directly" titleId="examples-recalculation">
+
+#### Skipping recalculation with `useMemo`
+
+In this example, the `filterTodos` implementation is **artificially slowed down** so that you can see what happens when some JavaScript function you're calling during rendering is genuinely slow. Try switching the tabs and toggling the theme.
+
+Switching the tabs feels slow because it forces the slowed down `filterTodos` to re-execute. That's expected because the `tab` has changed, and so the entire calculation _needs_ to re-run. (If you're curious why it runs twice, it's explained [here.](#my-calculation-runs-twice-on-every-re-render))
+
+Toggle the theme. **Thanks to `useMemo`, it's fast despite the artificial slowdown!** The slow `filterTodos` call was skipped because both `todos` and `tab` (which you pass as dependencies to `useMemo`) haven't changed since the last render.
+
+```js
+import { useState } from "react";
+import { createTodos } from "./utils.js";
+import TodoList from "./TodoList.js";
+
+const todos = createTodos();
+
+export default function App() {
+	const [tab, setTab] = useState("all");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<button onClick={() => setTab("all")}>All</button>
+			<button onClick={() => setTab("active")}>Active</button>
+			<button onClick={() => setTab("completed")}>Completed</button>
+			<br />
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<TodoList
+				todos={todos}
+				tab={tab}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useMemo } from "react";
+import { filterTodos } from "./utils.js";
+
+export default function TodoList({ todos, theme, tab }) {
+	const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
+	return (
+		<div className={theme}>
+			<p>
+				<b>
+					Note: <code>filterTodos</code> is artificially slowed down!
+				</b>
+			</p>
+			<ul>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+		</div>
+	);
+}
+```
+
+```js
+export function createTodos() {
+	const todos = [];
+	for (let i = 0; i < 50; i++) {
+		todos.push({
+			id: i,
+			text: "Todo " + (i + 1),
+			completed: Math.random() > 0.5,
+		});
+	}
+	return todos;
+}
+
+export function filterTodos(todos, tab) {
+	console.log(
+		"[ARTIFICIALLY SLOW] Filtering " +
+			todos.length +
+			' todos for "' +
+			tab +
+			'" tab.'
+	);
+	let startTime = performance.now();
+	while (performance.now() - startTime < 500) {
+		// Do nothing for 500 ms to emulate extremely slow code
+	}
+
+	return todos.filter((todo) => {
+		if (tab === "all") {
+			return true;
+		} else if (tab === "active") {
+			return !todo.completed;
+		} else if (tab === "completed") {
+			return todo.completed;
+		}
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+#### Always recalculating a value
+
+In this example, the `filterTodos` implementation is also **artificially slowed down** so that you can see what happens when some JavaScript function you're calling during rendering is genuinely slow. Try switching the tabs and toggling the theme.
+
+Unlike in the previous example, toggling the theme is also slow now! This is because **there is no `useMemo` call in this version,** so the artificially slowed down `filterTodos` gets called on every re-render. It is called even if only `theme` has changed.
+
+```js
+import { useState } from "react";
+import { createTodos } from "./utils.js";
+import TodoList from "./TodoList.js";
+
+const todos = createTodos();
+
+export default function App() {
+	const [tab, setTab] = useState("all");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<button onClick={() => setTab("all")}>All</button>
+			<button onClick={() => setTab("active")}>Active</button>
+			<button onClick={() => setTab("completed")}>Completed</button>
+			<br />
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<TodoList
+				todos={todos}
+				tab={tab}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { filterTodos } from "./utils.js";
+
+export default function TodoList({ todos, theme, tab }) {
+	const visibleTodos = filterTodos(todos, tab);
+	return (
+		<div className={theme}>
+			<ul>
+				<p>
+					<b>
+						Note: <code>filterTodos</code> is artificially slowed
+						down!
+					</b>
+				</p>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+		</div>
+	);
+}
+```
+
+```js
+export function createTodos() {
+	const todos = [];
+	for (let i = 0; i < 50; i++) {
+		todos.push({
+			id: i,
+			text: "Todo " + (i + 1),
+			completed: Math.random() > 0.5,
+		});
+	}
+	return todos;
+}
+
+export function filterTodos(todos, tab) {
+	console.log(
+		"[ARTIFICIALLY SLOW] Filtering " +
+			todos.length +
+			' todos for "' +
+			tab +
+			'" tab.'
+	);
+	let startTime = performance.now();
+	while (performance.now() - startTime < 500) {
+		// Do nothing for 500 ms to emulate extremely slow code
+	}
+
+	return todos.filter((todo) => {
+		if (tab === "all") {
+			return true;
+		} else if (tab === "active") {
+			return !todo.completed;
+		} else if (tab === "completed") {
+			return todo.completed;
+		}
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+However, here is the same code **with the artificial slowdown removed.** Does the lack of `useMemo` feel noticeable or not?
+
+```js
+import { useState } from "react";
+import { createTodos } from "./utils.js";
+import TodoList from "./TodoList.js";
+
+const todos = createTodos();
+
+export default function App() {
+	const [tab, setTab] = useState("all");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<button onClick={() => setTab("all")}>All</button>
+			<button onClick={() => setTab("active")}>Active</button>
+			<button onClick={() => setTab("completed")}>Completed</button>
+			<br />
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<TodoList
+				todos={todos}
+				tab={tab}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { filterTodos } from "./utils.js";
+
+export default function TodoList({ todos, theme, tab }) {
+	const visibleTodos = filterTodos(todos, tab);
+	return (
+		<div className={theme}>
+			<ul>
+				{visibleTodos.map((todo) => (
+					<li key={todo.id}>
+						{todo.completed ? <s>{todo.text}</s> : todo.text}
+					</li>
+				))}
+			</ul>
+		</div>
+	);
+}
+```
+
+```js
+export function createTodos() {
+	const todos = [];
+	for (let i = 0; i < 50; i++) {
+		todos.push({
+			id: i,
+			text: "Todo " + (i + 1),
+			completed: Math.random() > 0.5,
+		});
+	}
+	return todos;
+}
+
+export function filterTodos(todos, tab) {
+	console.log("Filtering " + todos.length + ' todos for "' + tab + '" tab.');
+
+	return todos.filter((todo) => {
+		if (tab === "all") {
+			return true;
+		} else if (tab === "active") {
+			return !todo.completed;
+		} else if (tab === "completed") {
+			return todo.completed;
+		}
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+Quite often, code without memoization works fine. If your interactions are fast enough, you might not need memoization.
+
+You can try increasing the number of todo items in `utils.js` and see how the behavior changes. This particular calculation wasn't very expensive to begin with, but if the number of todos grows significantly, most of the overhead will be in re-rendering rather than in the filtering. Keep reading below to see how you can optimize re-rendering with `useMemo`.
+
+</Recipes>
+
+---
+
+### Skipping re-rendering of components
+
+In some cases, `useMemo` can also help you optimize performance of re-rendering child components. To illustrate this, let's say this `TodoList` component passes the `visibleTodos` as a prop to the child `List` component:
+
+```js
+export default function TodoList({ todos, tab, theme }) {
+	// ...
+	return (
+		<div className={theme}>
+			<List items={visibleTodos} />
+		</div>
+	);
+}
+```
+
+You've noticed that toggling the `theme` prop freezes the app for a moment, but if you remove `<List />` from your JSX, it feels fast. This tells you that it's worth trying to optimize the `List` component.
+
+**By default, when a component re-renders, React re-renders all of its children recursively.** This is why, when `TodoList` re-renders with a different `theme`, the `List` component _also_ re-renders. This is fine for components that don't require much calculation to re-render. But if you've verified that a re-render is slow, you can tell `List` to skip re-rendering when its props are the same as on last render by wrapping it in [`memo`:](/reference/react/memo)
+
+```js
+import { memo } from "react";
+
+const List = memo(function List({ items }) {
+	// ...
+});
+```
+
+**With this change, `List` will skip re-rendering if all of its props are the _same_ as on the last render.** This is where caching the calculation becomes important! Imagine that you calculated `visibleTodos` without `useMemo`:
+
+```js
+export default function TodoList({ todos, tab, theme }) {
+	// Every time the theme changes, this will be a different array...
+	const visibleTodos = filterTodos(todos, tab);
+	return (
+		<div className={theme}>
+			{/* ... so List's props will never be the same, and it will re-render every time */}
+			<List items={visibleTodos} />
+		</div>
+	);
+}
+```
+
+**In the above example, the `filterTodos` function always creates a _different_ array,** similar to how the `{}` object literal always creates a new object. Normally, this wouldn't be a problem, but it means that `List` props will never be the same, and your [`memo`](/reference/react/memo) optimization won't work. This is where `useMemo` comes in handy:
+
+```js
+export default function TodoList({ todos, tab, theme }) {
+	// Tell React to cache your calculation between re-renders...
+	const visibleTodos = useMemo(
+		() => filterTodos(todos, tab),
+		[todos, tab] // ...so as long as these dependencies don't change...
+	);
+	return (
+		<div className={theme}>
+			{/* ...List will receive the same props and can skip re-rendering */}
+			<List items={visibleTodos} />
+		</div>
+	);
+}
+```
+
+**By wrapping the `visibleTodos` calculation in `useMemo`, you ensure that it has the _same_ value between the re-renders** (until dependencies change). You don't _have to_ wrap a calculation in `useMemo` unless you do it for some specific reason. In this example, the reason is that you pass it to a component wrapped in [`memo`,](/reference/react/memo) and this lets it skip re-rendering. There are a few other reasons to add `useMemo` which are described further on this page.
+
+<DeepDive>
+
+#### Memoizing individual JSX nodes
+
+Instead of wrapping `List` in [`memo`](/reference/react/memo), you could wrap the `<List />` JSX node itself in `useMemo`:
+
+```js
+export default function TodoList({ todos, tab, theme }) {
+	const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
+	const children = useMemo(
+		() => <List items={visibleTodos} />,
+		[visibleTodos]
+	);
+	return <div className={theme}>{children}</div>;
+}
+```
+
+The behavior would be the same. If the `visibleTodos` haven't changed, `List` won't be re-rendered.
+
+A JSX node like `<List items={visibleTodos} />` is an object like `{ type: List, props: { items: visibleTodos } }`. Creating this object is very cheap, but React doesn't know whether its contents is the same as last time or not. This is why by default, React will re-render the `List` component.
+
+However, if React sees the same exact JSX as during the previous render, it won't try to re-render your component. This is because JSX nodes are [immutable.](https://en.wikipedia.org/wiki/Immutable_object) A JSX node object could not have changed over time, so React knows it's safe to skip a re-render. However, for this to work, the node has to _actually be the same object_, not merely look the same in code. This is what `useMemo` does in this example.
+
+Manually wrapping JSX nodes into `useMemo` is not convenient. For example, you can't do this conditionally. This is usually why you would wrap components with [`memo`](/reference/react/memo) instead of wrapping JSX nodes.
+
+</DeepDive>
+
+<Recipes titleText="The difference between skipping re-renders and always re-rendering" titleId="examples-rerendering">
+
+#### Skipping re-rendering with `useMemo` and `memo`
+
+In this example, the `List` component is **artificially slowed down** so that you can see what happens when a React component you're rendering is genuinely slow. Try switching the tabs and toggling the theme.
+
+Switching the tabs feels slow because it forces the slowed down `List` to re-render. That's expected because the `tab` has changed, and so you need to reflect the user's new choice on the screen.
+
+Next, try toggling the theme. **Thanks to `useMemo` together with [`memo`](/reference/react/memo), it’s fast despite the artificial slowdown!** The `List` skipped re-rendering because the `visibleItems` array has not changed since the last render. The `visibleItems` array has not changed because both `todos` and `tab` (which you pass as dependencies to `useMemo`) haven't changed since the last render.
+
+```js
+import { useState } from "react";
+import { createTodos } from "./utils.js";
+import TodoList from "./TodoList.js";
+
+const todos = createTodos();
+
+export default function App() {
+	const [tab, setTab] = useState("all");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<button onClick={() => setTab("all")}>All</button>
+			<button onClick={() => setTab("active")}>Active</button>
+			<button onClick={() => setTab("completed")}>Completed</button>
+			<br />
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<TodoList
+				todos={todos}
+				tab={tab}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useMemo } from "react";
+import List from "./List.js";
+import { filterTodos } from "./utils.js";
+
+export default function TodoList({ todos, theme, tab }) {
+	const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
+	return (
+		<div className={theme}>
+			<p>
+				<b>
+					Note: <code>List</code> is artificially slowed down!
+				</b>
+			</p>
+			<List items={visibleTodos} />
+		</div>
+	);
+}
+```
+
+```js
+import { memo } from "react";
+
+const List = memo(function List({ items }) {
+	console.log(
+		"[ARTIFICIALLY SLOW] Rendering <List /> with " + items.length + " items"
+	);
+	let startTime = performance.now();
+	while (performance.now() - startTime < 500) {
+		// Do nothing for 500 ms to emulate extremely slow code
+	}
+
+	return (
+		<ul>
+			{items.map((item) => (
+				<li key={item.id}>
+					{item.completed ? <s>{item.text}</s> : item.text}
+				</li>
+			))}
+		</ul>
+	);
+});
+
+export default List;
+```
+
+```js
+export function createTodos() {
+	const todos = [];
+	for (let i = 0; i < 50; i++) {
+		todos.push({
+			id: i,
+			text: "Todo " + (i + 1),
+			completed: Math.random() > 0.5,
+		});
+	}
+	return todos;
+}
+
+export function filterTodos(todos, tab) {
+	return todos.filter((todo) => {
+		if (tab === "all") {
+			return true;
+		} else if (tab === "active") {
+			return !todo.completed;
+		} else if (tab === "completed") {
+			return todo.completed;
+		}
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+#### Always re-rendering a component
+
+In this example, the `List` implementation is also **artificially slowed down** so that you can see what happens when some React component you're rendering is genuinely slow. Try switching the tabs and toggling the theme.
+
+Unlike in the previous example, toggling the theme is also slow now! This is because **there is no `useMemo` call in this version,** so the `visibleTodos` is always a different array, and the slowed down `List` component can't skip re-rendering.
+
+```js
+import { useState } from "react";
+import { createTodos } from "./utils.js";
+import TodoList from "./TodoList.js";
+
+const todos = createTodos();
+
+export default function App() {
+	const [tab, setTab] = useState("all");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<button onClick={() => setTab("all")}>All</button>
+			<button onClick={() => setTab("active")}>Active</button>
+			<button onClick={() => setTab("completed")}>Completed</button>
+			<br />
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<TodoList
+				todos={todos}
+				tab={tab}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import List from "./List.js";
+import { filterTodos } from "./utils.js";
+
+export default function TodoList({ todos, theme, tab }) {
+	const visibleTodos = filterTodos(todos, tab);
+	return (
+		<div className={theme}>
+			<p>
+				<b>
+					Note: <code>List</code> is artificially slowed down!
+				</b>
+			</p>
+			<List items={visibleTodos} />
+		</div>
+	);
+}
+```
+
+```js
+import { memo } from "react";
+
+const List = memo(function List({ items }) {
+	console.log(
+		"[ARTIFICIALLY SLOW] Rendering <List /> with " + items.length + " items"
+	);
+	let startTime = performance.now();
+	while (performance.now() - startTime < 500) {
+		// Do nothing for 500 ms to emulate extremely slow code
+	}
+
+	return (
+		<ul>
+			{items.map((item) => (
+				<li key={item.id}>
+					{item.completed ? <s>{item.text}</s> : item.text}
+				</li>
+			))}
+		</ul>
+	);
+});
+
+export default List;
+```
+
+```js
+export function createTodos() {
+	const todos = [];
+	for (let i = 0; i < 50; i++) {
+		todos.push({
+			id: i,
+			text: "Todo " + (i + 1),
+			completed: Math.random() > 0.5,
+		});
+	}
+	return todos;
+}
+
+export function filterTodos(todos, tab) {
+	return todos.filter((todo) => {
+		if (tab === "all") {
+			return true;
+		} else if (tab === "active") {
+			return !todo.completed;
+		} else if (tab === "completed") {
+			return todo.completed;
+		}
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+However, here is the same code **with the artificial slowdown removed.** Does the lack of `useMemo` feel noticeable or not?
+
+```js
+import { useState } from "react";
+import { createTodos } from "./utils.js";
+import TodoList from "./TodoList.js";
+
+const todos = createTodos();
+
+export default function App() {
+	const [tab, setTab] = useState("all");
+	const [isDark, setIsDark] = useState(false);
+	return (
+		<>
+			<button onClick={() => setTab("all")}>All</button>
+			<button onClick={() => setTab("active")}>Active</button>
+			<button onClick={() => setTab("completed")}>Completed</button>
+			<br />
+			<label>
+				<input
+					type="checkbox"
+					checked={isDark}
+					onChange={(e) => setIsDark(e.target.checked)}
+				/>
+				Dark mode
+			</label>
+			<hr />
+			<TodoList
+				todos={todos}
+				tab={tab}
+				theme={isDark ? "dark" : "light"}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import List from "./List.js";
+import { filterTodos } from "./utils.js";
+
+export default function TodoList({ todos, theme, tab }) {
+	const visibleTodos = filterTodos(todos, tab);
+	return (
+		<div className={theme}>
+			<List items={visibleTodos} />
+		</div>
+	);
+}
+```
+
+```js
+import { memo } from "react";
+
+function List({ items }) {
+	return (
+		<ul>
+			{items.map((item) => (
+				<li key={item.id}>
+					{item.completed ? <s>{item.text}</s> : item.text}
+				</li>
+			))}
+		</ul>
+	);
+}
+
+export default memo(List);
+```
+
+```js
+export function createTodos() {
+	const todos = [];
+	for (let i = 0; i < 50; i++) {
+		todos.push({
+			id: i,
+			text: "Todo " + (i + 1),
+			completed: Math.random() > 0.5,
+		});
+	}
+	return todos;
+}
+
+export function filterTodos(todos, tab) {
+	return todos.filter((todo) => {
+		if (tab === "all") {
+			return true;
+		} else if (tab === "active") {
+			return !todo.completed;
+		} else if (tab === "completed") {
+			return todo.completed;
+		}
+	});
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 10px;
+}
+
+.dark {
+	background-color: black;
+	color: white;
+}
+
+.light {
+	background-color: white;
+	color: black;
+}
+```
+
+Quite often, code without memoization works fine. If your interactions are fast enough, you don't need memoization.
+
+Keep in mind that you need to run React in production mode, disable [React Developer Tools](/learn/react-developer-tools), and use devices similar to the ones your app's users have in order to get a realistic sense of what's actually slowing down your app.
+
+</Recipes>
+
+---
+
+### Memoizing a dependency of another Hook
+
+Suppose you have a calculation that depends on an object created directly in the component body:
+
+```js
+function Dropdown({ allItems, text }) {
+  const searchOptions = { matchMode: 'whole-word', text };
+
+  const visibleItems = useMemo(() => {
+    return searchItems(allItems, searchOptions);
+  }, [allItems, searchOptions]); // 🚩 Caution: Dependency on an object created in the component body
+  // ...
+```
+
+Depending on an object like this defeats the point of memoization. When a component re-renders, all of the code directly inside the component body runs again. **The lines of code creating the `searchOptions` object will also run on every re-render.** Since `searchOptions` is a dependency of your `useMemo` call, and it's different every time, React knows the dependencies are different, and recalculate `searchItems` every time.
+
+To fix this, you could memoize the `searchOptions` object _itself_ before passing it as a dependency:
+
+```js
+function Dropdown({ allItems, text }) {
+  const searchOptions = useMemo(() => {
+    return { matchMode: 'whole-word', text };
+  }, [text]); // ✅ Only changes when text changes
+
+  const visibleItems = useMemo(() => {
+    return searchItems(allItems, searchOptions);
+  }, [allItems, searchOptions]); // ✅ Only changes when allItems or searchOptions changes
+  // ...
+```
+
+In the example above, if the `text` did not change, the `searchOptions` object also won't change. However, an even better fix is to move the `searchOptions` object declaration _inside_ of the `useMemo` calculation function:
+
+```js
+function Dropdown({ allItems, text }) {
+  const visibleItems = useMemo(() => {
+    const searchOptions = { matchMode: 'whole-word', text };
+    return searchItems(allItems, searchOptions);
+  }, [allItems, text]); // ✅ Only changes when allItems or text changes
+  // ...
+```
+
+Now your calculation depends on `text` directly (which is a string and can't "accidentally" become different).
+
+---
+
+### Memoizing a function
+
+Suppose the `Form` component is wrapped in [`memo`.](/reference/react/memo) You want to pass a function to it as a prop:
+
+```js
+export default function ProductPage({ productId, referrer }) {
+	function handleSubmit(orderDetails) {
+		post("/product/" + productId + "/buy", {
+			referrer,
+			orderDetails,
+		});
+	}
+
+	return <Form onSubmit={handleSubmit} />;
+}
+```
+
+Just as `{}` creates a different object, function declarations like `function() {}` and expressions like `() => {}` produce a _different_ function on every re-render. By itself, creating a new function is not a problem. This is not something to avoid! However, if the `Form` component is memoized, presumably you want to skip re-rendering it when no props have changed. A prop that is _always_ different would defeat the point of memoization.
+
+To memoize a function with `useMemo`, your calculation function would have to return another function:
+
+```js
+export default function Page({ productId, referrer }) {
+	const handleSubmit = useMemo(() => {
+		return (orderDetails) => {
+			post("/product/" + productId + "/buy", {
+				referrer,
+				orderDetails,
+			});
+		};
+	}, [productId, referrer]);
+
+	return <Form onSubmit={handleSubmit} />;
+}
+```
+
+This looks clunky! **Memoizing functions is common enough that React has a built-in Hook specifically for that. Wrap your functions into [`useCallback`](/reference/react/useCallback) instead of `useMemo`** to avoid having to write an extra nested function:
+
+```js
+export default function Page({ productId, referrer }) {
+	const handleSubmit = useCallback(
+		(orderDetails) => {
+			post("/product/" + productId + "/buy", {
+				referrer,
+				orderDetails,
+			});
+		},
+		[productId, referrer]
+	);
+
+	return <Form onSubmit={handleSubmit} />;
+}
+```
+
+The two examples above are completely equivalent. The only benefit to `useCallback` is that it lets you avoid writing an extra nested function inside. It doesn't do anything else. [Read more about `useCallback`.](/reference/react/useCallback)
+
+---
+
+## Troubleshooting
+
+### My calculation runs twice on every re-render
+
+In [Strict Mode](/reference/react/StrictMode), React will call some of your functions twice instead of once:
+
+```js
+function TodoList({ todos, tab }) {
+  // This component function will run twice for every render.
+
+  const visibleTodos = useMemo(() => {
+    // This calculation will run twice if any of the dependencies change.
+    return filterTodos(todos, tab);
+  }, [todos, tab]);
+
+  // ...
+```
+
+This is expected and shouldn't break your code.
+
+This **development-only** behavior helps you [keep components pure.](/learn/keeping-components-pure) React uses the result of one of the calls, and ignores the result of the other call. As long as your component and calculation functions are pure, this shouldn't affect your logic. However, if they are accidentally impure, this helps you notice and fix the mistake.
+
+For example, this impure calculation function mutates an array you received as a prop:
+
+```js
+const visibleTodos = useMemo(() => {
+	// 🚩 Mistake: mutating a prop
+	todos.push({ id: "last", text: "Go for a walk!" });
+	const filtered = filterTodos(todos, tab);
+	return filtered;
+}, [todos, tab]);
+```
+
+React calls your function twice, so you'd notice the todo is added twice. Your calculation shouldn't change any existing objects, but it's okay to change any _new_ objects you created during the calculation. For example, if the `filterTodos` function always returns a _different_ array, you can mutate _that_ array instead:
+
+```js
+const visibleTodos = useMemo(() => {
+	const filtered = filterTodos(todos, tab);
+	// ✅ Correct: mutating an object you created during the calculation
+	filtered.push({ id: "last", text: "Go for a walk!" });
+	return filtered;
+}, [todos, tab]);
+```
+
+Read [keeping components pure](/learn/keeping-components-pure) to learn more about purity.
+
+Also, check out the guides on [updating objects](/learn/updating-objects-in-state) and [updating arrays](/learn/updating-arrays-in-state) without mutation.
+
+---
+
+### My `useMemo` call is supposed to return an object, but returns undefined
+
+This code doesn't work:
+
+```js
+  // 🔴 You can't return an object from an arrow function with () => {
+  const searchOptions = useMemo(() => {
+    matchMode: 'whole-word',
+    text: text
+  }, [text]);
+```
+
+In JavaScript, `() => {` starts the arrow function body, so the `{` brace is not a part of your object. This is why it doesn't return an object, and leads to mistakes. You could fix it by adding parentheses like `({` and `})`:
+
+```js
+// This works, but is easy for someone to break again
+const searchOptions = useMemo(
+	() => ({
+		matchMode: "whole-word",
+		text: text,
+	}),
+	[text]
+);
+```
+
+However, this is still confusing and too easy for someone to break by removing the parentheses.
+
+To avoid this mistake, write a `return` statement explicitly:
+
+```js
+// ✅ This works and is explicit
+const searchOptions = useMemo(() => {
+	return {
+		matchMode: "whole-word",
+		text: text,
+	};
+}, [text]);
+```
+
+---
+
+### Every time my component renders, the calculation in `useMemo` re-runs
+
+Make sure you've specified the dependency array as a second argument!
+
+If you forget the dependency array, `useMemo` will re-run the calculation every time:
+
+```js
+function TodoList({ todos, tab }) {
+  // 🔴 Recalculates every time: no dependency array
+  const visibleTodos = useMemo(() => filterTodos(todos, tab));
+  // ...
+```
+
+This is the corrected version passing the dependency array as a second argument:
+
+```js
+function TodoList({ todos, tab }) {
+  // ✅ Does not recalculate unnecessarily
+  const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
+  // ...
+```
+
+If this doesn't help, then the problem is that at least one of your dependencies is different from the previous render. You can debug this problem by manually logging your dependencies to the console:
+
+```js
+const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
+console.log([todos, tab]);
+```
+
+You can then right-click on the arrays from different re-renders in the console and select "Store as a global variable" for both of them. Assuming the first one got saved as `temp1` and the second one got saved as `temp2`, you can then use the browser console to check whether each dependency in both arrays is the same:
+
+```js
+Object.is(temp1[0], temp2[0]); // Is the first dependency the same between the arrays?
+Object.is(temp1[1], temp2[1]); // Is the second dependency the same between the arrays?
+Object.is(temp1[2], temp2[2]); // ... and so on for every dependency ...
+```
+
+When you find which dependency breaks memoization, either find a way to remove it, or [memoize it as well.](#memoizing-a-dependency-of-another-hook)
+
+---
+
+### I need to call `useMemo` for each list item in a loop, but it's not allowed
+
+Suppose the `Chart` component is wrapped in [`memo`](/reference/react/memo). You want to skip re-rendering every `Chart` in the list when the `ReportList` component re-renders. However, you can't call `useMemo` in a loop:
+
+```js
+function ReportList({ items }) {
+	return (
+		<article>
+			{items.map((item) => {
+				// 🔴 You can't call useMemo in a loop like this:
+				const data = useMemo(() => calculateReport(item), [item]);
+				return (
+					<figure key={item.id}>
+						<Chart data={data} />
+					</figure>
+				);
+			})}
+		</article>
+	);
+}
+```
+
+Instead, extract a component for each item and memoize data for individual items:
+
+```js
+function ReportList({ items }) {
+	return (
+		<article>
+			{items.map((item) => (
+				<Report key={item.id} item={item} />
+			))}
+		</article>
+	);
+}
+
+function Report({ item }) {
+	// ✅ Call useMemo at the top level:
+	const data = useMemo(() => calculateReport(item), [item]);
+	return (
+		<figure>
+			<Chart data={data} />
+		</figure>
+	);
+}
+```
+
+Alternatively, you could remove `useMemo` and instead wrap `Report` itself in [`memo`.](/reference/react/memo) If the `item` prop does not change, `Report` will skip re-rendering, so `Chart` will skip re-rendering too:
+
+```js
+function ReportList({ items }) {
+	// ...
+}
+
+const Report = memo(function Report({ item }) {
+	const data = calculateReport(item);
+	return (
+		<figure>
+			<Chart data={data} />
+		</figure>
+	);
+});
+```
diff --git a/docs/src/reference/use-reducer.md b/docs/src/reference/use-reducer.md
index eb732d01a..c397b41c7 100644
--- a/docs/src/reference/use-reducer.md
+++ b/docs/src/reference/use-reducer.md
@@ -1,3 +1,1093 @@
 ---
 title: Use Reducer 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useReducer` is a React Hook that lets you add a [reducer](/learn/extracting-state-logic-into-a-reducer) to your component.
+
+```js
+const [state, dispatch] = useReducer(reducer, initialArg, init?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useReducer(reducer, initialArg, init?)`
+
+Call `useReducer` at the top level of your component to manage its state with a [reducer.](/learn/extracting-state-logic-into-a-reducer)
+
+```js
+import { useReducer } from 'react';
+
+function reducer(state, action) {
+  // ...
+}
+
+function MyComponent() {
+  const [state, dispatch] = useReducer(reducer, { age: 42 });
+  // ...
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `reducer`: The reducer function that specifies how the state gets updated. It must be pure, should take the state and action as arguments, and should return the next state. State and action can be of any types.
+-   `initialArg`: The value from which the initial state is calculated. It can be a value of any type. How the initial state is calculated from it depends on the next `init` argument.
+-   **optional** `init`: The initializer function that should return the initial state. If it's not specified, the initial state is set to `initialArg`. Otherwise, the initial state is set to the result of calling `init(initialArg)`.
+
+#### Returns
+
+`useReducer` returns an array with exactly two values:
+
+1. The current state. During the first render, it's set to `init(initialArg)` or `initialArg` (if there's no `init`).
+2. The [`dispatch` function](#dispatch) that lets you update the state to a different value and trigger a re-render.
+
+#### Caveats
+
+-   `useReducer` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a new component and move the state into it.
+-   In Strict Mode, React will **call your reducer and initializer twice** in order to [help you find accidental impurities.](#my-reducer-or-initializer-function-runs-twice) This is development-only behavior and does not affect production. If your reducer and initializer are pure (as they should be), this should not affect your logic. The result from one of the calls is ignored.
+
+---
+
+### `dispatch` function
+
+The `dispatch` function returned by `useReducer` lets you update the state to a different value and trigger a re-render. You need to pass the action as the only argument to the `dispatch` function:
+
+```js
+const [state, dispatch] = useReducer(reducer, { age: 42 });
+
+function handleClick() {
+  dispatch({ type: 'incremented_age' });
+  // ...
+```
+
+React will set the next state to the result of calling the `reducer` function you've provided with the current `state` and the action you've passed to `dispatch`.
+
+#### Parameters
+
+-   `action`: The action performed by the user. It can be a value of any type. By convention, an action is usually an object with a `type` property identifying it and, optionally, other properties with additional information.
+
+#### Returns
+
+`dispatch` functions do not have a return value.
+
+#### Caveats
+
+-   The `dispatch` function **only updates the state variable for the _next_ render**. If you read the state variable after calling the `dispatch` function, [you will still get the old value](#ive-dispatched-an-action-but-logging-gives-me-the-old-state-value) that was on the screen before your call.
+
+-   If the new value you provide is identical to the current `state`, as determined by an [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison, React will **skip re-rendering the component and its children.** This is an optimization. React may still need to call your component before ignoring the result, but it shouldn't affect your code.
+
+-   React [batches state updates.](/learn/queueing-a-series-of-state-updates) It updates the screen **after all the event handlers have run** and have called their `set` functions. This prevents multiple re-renders during a single event. In the rare case that you need to force React to update the screen earlier, for example to access the DOM, you can use [`flushSync`.](/reference/react-dom/flushSync)
+
+---
+
+## Usage
+
+### Adding a reducer to a component
+
+Call `useReducer` at the top level of your component to manage state with a [reducer.](/learn/extracting-state-logic-into-a-reducer)
+
+```js
+import { useReducer } from 'react';
+
+function reducer(state, action) {
+  // ...
+}
+
+function MyComponent() {
+  const [state, dispatch] = useReducer(reducer, { age: 42 });
+  // ...
+```
+
+`useReducer` returns an array with exactly two items:
+
+1. The <CodeStep step={1}>current state</CodeStep> of this state variable, initially set to the <CodeStep step={3}>initial state</CodeStep> you provided.
+2. The <CodeStep step={2}>`dispatch` function</CodeStep> that lets you change it in response to interaction.
+
+To update what's on the screen, call <CodeStep step={2}>`dispatch`</CodeStep> with an object representing what the user did, called an _action_:
+
+```js
+function handleClick() {
+	dispatch({ type: "incremented_age" });
+}
+```
+
+React will pass the current state and the action to your <CodeStep step={4}>reducer function</CodeStep>. Your reducer will calculate and return the next state. React will store that next state, render your component with it, and update the UI.
+
+```js
+import { useReducer } from "react";
+
+function reducer(state, action) {
+	if (action.type === "incremented_age") {
+		return {
+			age: state.age + 1,
+		};
+	}
+	throw Error("Unknown action.");
+}
+
+export default function Counter() {
+	const [state, dispatch] = useReducer(reducer, { age: 42 });
+
+	return (
+		<>
+			<button
+				onClick={() => {
+					dispatch({ type: "incremented_age" });
+				}}
+			>
+				Increment age
+			</button>
+			<p>Hello! You are {state.age}.</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+`useReducer` is very similar to [`useState`](/reference/react/useState), but it lets you move the state update logic from event handlers into a single function outside of your component. Read more about [choosing between `useState` and `useReducer`.](/learn/extracting-state-logic-into-a-reducer#comparing-usestate-and-usereducer)
+
+---
+
+### Writing the reducer function
+
+A reducer function is declared like this:
+
+```js
+function reducer(state, action) {
+	// ...
+}
+```
+
+Then you need to fill in the code that will calculate and return the next state. By convention, it is common to write it as a [`switch` statement.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch) For each `case` in the `switch`, calculate and return some next state.
+
+```js
+function reducer(state, action) {
+	switch (action.type) {
+		case "incremented_age": {
+			return {
+				name: state.name,
+				age: state.age + 1,
+			};
+		}
+		case "changed_name": {
+			return {
+				name: action.nextName,
+				age: state.age,
+			};
+		}
+	}
+	throw Error("Unknown action: " + action.type);
+}
+```
+
+Actions can have any shape. By convention, it's common to pass objects with a `type` property identifying the action. It should include the minimal necessary information that the reducer needs to compute the next state.
+
+```js
+function Form() {
+  const [state, dispatch] = useReducer(reducer, { name: 'Taylor', age: 42 });
+
+  function handleButtonClick() {
+    dispatch({ type: 'incremented_age' });
+  }
+
+  function handleInputChange(e) {
+    dispatch({
+      type: 'changed_name',
+      nextName: e.target.value
+    });
+  }
+  // ...
+```
+
+The action type names are local to your component. [Each action describes a single interaction, even if that leads to multiple changes in data.](/learn/extracting-state-logic-into-a-reducer#writing-reducers-well) The shape of the state is arbitrary, but usually it'll be an object or an array.
+
+Read [extracting state logic into a reducer](/learn/extracting-state-logic-into-a-reducer) to learn more.
+
+<Pitfall>
+
+State is read-only. Don't modify any objects or arrays in state:
+
+```js
+function reducer(state, action) {
+  switch (action.type) {
+    case 'incremented_age': {
+      // 🚩 Don't mutate an object in state like this:
+      state.age = state.age + 1;
+      return state;
+    }
+```
+
+Instead, always return new objects from your reducer:
+
+```js
+function reducer(state, action) {
+  switch (action.type) {
+    case 'incremented_age': {
+      // ✅ Instead, return a new object
+      return {
+        ...state,
+        age: state.age + 1
+      };
+    }
+```
+
+Read [updating objects in state](/learn/updating-objects-in-state) and [updating arrays in state](/learn/updating-arrays-in-state) to learn more.
+
+</Pitfall>
+
+<Recipes titleText="Basic useReducer examples" titleId="examples-basic">
+
+#### Form (object)
+
+In this example, the reducer manages a state object with two fields: `name` and `age`.
+
+```js
+import { useReducer } from "react";
+
+function reducer(state, action) {
+	switch (action.type) {
+		case "incremented_age": {
+			return {
+				name: state.name,
+				age: state.age + 1,
+			};
+		}
+		case "changed_name": {
+			return {
+				name: action.nextName,
+				age: state.age,
+			};
+		}
+	}
+	throw Error("Unknown action: " + action.type);
+}
+
+const initialState = { name: "Taylor", age: 42 };
+
+export default function Form() {
+	const [state, dispatch] = useReducer(reducer, initialState);
+
+	function handleButtonClick() {
+		dispatch({ type: "incremented_age" });
+	}
+
+	function handleInputChange(e) {
+		dispatch({
+			type: "changed_name",
+			nextName: e.target.value,
+		});
+	}
+
+	return (
+		<>
+			<input value={state.name} onChange={handleInputChange} />
+			<button onClick={handleButtonClick}>Increment age</button>
+			<p>
+				Hello, {state.name}. You are {state.age}.
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+#### Todo list (array)
+
+In this example, the reducer manages an array of tasks. The array needs to be updated [without mutation.](/learn/updating-arrays-in-state)
+
+```js
+import { useReducer } from "react";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+
+function tasksReducer(tasks, action) {
+	switch (action.type) {
+		case "added": {
+			return [
+				...tasks,
+				{
+					id: action.id,
+					text: action.text,
+					done: false,
+				},
+			];
+		}
+		case "changed": {
+			return tasks.map((t) => {
+				if (t.id === action.task.id) {
+					return action.task;
+				} else {
+					return t;
+				}
+			});
+		}
+		case "deleted": {
+			return tasks.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<>
+			<h1>Prague itinerary</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Visit Kafka Museum", done: true },
+	{ id: 1, text: "Watch a puppet show", done: false },
+	{ id: 2, text: "Lennon Wall pic", done: false },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				onClick={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button onClick={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button onClick={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button onClick={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+#### Writing concise update logic with Immer
+
+If updating arrays and objects without mutation feels tedious, you can use a library like [Immer](https://github.com/immerjs/use-immer#useimmerreducer) to reduce repetitive code. Immer lets you write concise code as if you were mutating objects, but under the hood it performs immutable updates:
+
+```js
+import { useImmerReducer } from "use-immer";
+import AddTask from "./AddTask.js";
+import TaskList from "./TaskList.js";
+
+function tasksReducer(draft, action) {
+	switch (action.type) {
+		case "added": {
+			draft.push({
+				id: action.id,
+				text: action.text,
+				done: false,
+			});
+			break;
+		}
+		case "changed": {
+			const index = draft.findIndex((t) => t.id === action.task.id);
+			draft[index] = action.task;
+			break;
+		}
+		case "deleted": {
+			return draft.filter((t) => t.id !== action.id);
+		}
+		default: {
+			throw Error("Unknown action: " + action.type);
+		}
+	}
+}
+
+export default function TaskApp() {
+	const [tasks, dispatch] = useImmerReducer(tasksReducer, initialTasks);
+
+	function handleAddTask(text) {
+		dispatch({
+			type: "added",
+			id: nextId++,
+			text: text,
+		});
+	}
+
+	function handleChangeTask(task) {
+		dispatch({
+			type: "changed",
+			task: task,
+		});
+	}
+
+	function handleDeleteTask(taskId) {
+		dispatch({
+			type: "deleted",
+			id: taskId,
+		});
+	}
+
+	return (
+		<>
+			<h1>Prague itinerary</h1>
+			<AddTask onAddTask={handleAddTask} />
+			<TaskList
+				tasks={tasks}
+				onChangeTask={handleChangeTask}
+				onDeleteTask={handleDeleteTask}
+			/>
+		</>
+	);
+}
+
+let nextId = 3;
+const initialTasks = [
+	{ id: 0, text: "Visit Kafka Museum", done: true },
+	{ id: 1, text: "Watch a puppet show", done: false },
+	{ id: 2, text: "Lennon Wall pic", done: false },
+];
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTask({ onAddTask }) {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add task"
+				value={text}
+				onChange={(e) => setText(e.target.value)}
+			/>
+			<button
+				onClick={() => {
+					setText("");
+					onAddTask(text);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ tasks, onChangeTask, onDeleteTask }) {
+	return (
+		<ul>
+			{tasks.map((task) => (
+				<li key={task.id}>
+					<Task
+						task={task}
+						onChange={onChangeTask}
+						onDelete={onDeleteTask}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ task, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let taskContent;
+	if (isEditing) {
+		taskContent = (
+			<>
+				<input
+					value={task.text}
+					onChange={(e) => {
+						onChange({
+							...task,
+							text: e.target.value,
+						});
+					}}
+				/>
+				<button onClick={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		taskContent = (
+			<>
+				{task.text}
+				<button onClick={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={task.done}
+				onChange={(e) => {
+					onChange({
+						...task,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{taskContent}
+			<button onClick={() => onDelete(task.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+```json package.json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+</Recipes>
+
+---
+
+### Avoiding recreating the initial state
+
+React saves the initial state once and ignores it on the next renders.
+
+```js
+function createInitialState(username) {
+  // ...
+}
+
+function TodoList({ username }) {
+  const [state, dispatch] = useReducer(reducer, createInitialState(username));
+  // ...
+```
+
+Although the result of `createInitialState(username)` is only used for the initial render, you're still calling this function on every render. This can be wasteful if it's creating large arrays or performing expensive calculations.
+
+To solve this, you may **pass it as an _initializer_ function** to `useReducer` as the third argument instead:
+
+```js
+function createInitialState(username) {
+  // ...
+}
+
+function TodoList({ username }) {
+  const [state, dispatch] = useReducer(reducer, username, createInitialState);
+  // ...
+```
+
+Notice that you’re passing `createInitialState`, which is the _function itself_, and not `createInitialState()`, which is the result of calling it. This way, the initial state does not get re-created after initialization.
+
+In the above example, `createInitialState` takes a `username` argument. If your initializer doesn't need any information to compute the initial state, you may pass `null` as the second argument to `useReducer`.
+
+<Recipes titleText="The difference between passing an initializer and passing the initial state directly" titleId="examples-initializer">
+
+#### Passing the initializer function
+
+This example passes the initializer function, so the `createInitialState` function only runs during initialization. It does not run when component re-renders, such as when you type into the input.
+
+```js
+import TodoList from "./TodoList.js";
+
+export default function App() {
+	return <TodoList username="Taylor" />;
+}
+```
+
+```js
+import { useReducer } from "react";
+
+function createInitialState(username) {
+	const initialTodos = [];
+	for (let i = 0; i < 50; i++) {
+		initialTodos.push({
+			id: i,
+			text: username + "'s task #" + (i + 1),
+		});
+	}
+	return {
+		draft: "",
+		todos: initialTodos,
+	};
+}
+
+function reducer(state, action) {
+	switch (action.type) {
+		case "changed_draft": {
+			return {
+				draft: action.nextDraft,
+				todos: state.todos,
+			};
+		}
+		case "added_todo": {
+			return {
+				draft: "",
+				todos: [
+					{
+						id: state.todos.length,
+						text: state.draft,
+					},
+					...state.todos,
+				],
+			};
+		}
+	}
+	throw Error("Unknown action: " + action.type);
+}
+
+export default function TodoList({ username }) {
+	const [state, dispatch] = useReducer(reducer, username, createInitialState);
+	return (
+		<>
+			<input
+				value={state.draft}
+				onChange={(e) => {
+					dispatch({
+						type: "changed_draft",
+						nextDraft: e.target.value,
+					});
+				}}
+			/>
+			<button
+				onClick={() => {
+					dispatch({ type: "added_todo" });
+				}}
+			>
+				Add
+			</button>
+			<ul>
+				{state.todos.map((item) => (
+					<li key={item.id}>{item.text}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+#### Passing the initial state directly
+
+This example **does not** pass the initializer function, so the `createInitialState` function runs on every render, such as when you type into the input. There is no observable difference in behavior, but this code is less efficient.
+
+```js
+import TodoList from "./TodoList.js";
+
+export default function App() {
+	return <TodoList username="Taylor" />;
+}
+```
+
+```js
+import { useReducer } from "react";
+
+function createInitialState(username) {
+	const initialTodos = [];
+	for (let i = 0; i < 50; i++) {
+		initialTodos.push({
+			id: i,
+			text: username + "'s task #" + (i + 1),
+		});
+	}
+	return {
+		draft: "",
+		todos: initialTodos,
+	};
+}
+
+function reducer(state, action) {
+	switch (action.type) {
+		case "changed_draft": {
+			return {
+				draft: action.nextDraft,
+				todos: state.todos,
+			};
+		}
+		case "added_todo": {
+			return {
+				draft: "",
+				todos: [
+					{
+						id: state.todos.length,
+						text: state.draft,
+					},
+					...state.todos,
+				],
+			};
+		}
+	}
+	throw Error("Unknown action: " + action.type);
+}
+
+export default function TodoList({ username }) {
+	const [state, dispatch] = useReducer(reducer, createInitialState(username));
+	return (
+		<>
+			<input
+				value={state.draft}
+				onChange={(e) => {
+					dispatch({
+						type: "changed_draft",
+						nextDraft: e.target.value,
+					});
+				}}
+			/>
+			<button
+				onClick={() => {
+					dispatch({ type: "added_todo" });
+				}}
+			>
+				Add
+			</button>
+			<ul>
+				{state.todos.map((item) => (
+					<li key={item.id}>{item.text}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+</Recipes>
+
+---
+
+## Troubleshooting
+
+### I've dispatched an action, but logging gives me the old state value
+
+Calling the `dispatch` function **does not change state in the running code**:
+
+```js
+function handleClick() {
+	console.log(state.age); // 42
+
+	dispatch({ type: "incremented_age" }); // Request a re-render with 43
+	console.log(state.age); // Still 42!
+
+	setTimeout(() => {
+		console.log(state.age); // Also 42!
+	}, 5000);
+}
+```
+
+This is because [states behaves like a snapshot.](/learn/state-as-a-snapshot) Updating state requests another render with the new state value, but does not affect the `state` JavaScript variable in your already-running event handler.
+
+If you need to guess the next state value, you can calculate it manually by calling the reducer yourself:
+
+```js
+const action = { type: "incremented_age" };
+dispatch(action);
+
+const nextState = reducer(state, action);
+console.log(state); // { age: 42 }
+console.log(nextState); // { age: 43 }
+```
+
+---
+
+### I've dispatched an action, but the screen doesn't update
+
+React will **ignore your update if the next state is equal to the previous state,** as determined by an [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. This usually happens when you change an object or an array in state directly:
+
+```js
+function reducer(state, action) {
+	switch (action.type) {
+		case "incremented_age": {
+			// 🚩 Wrong: mutating existing object
+			state.age++;
+			return state;
+		}
+		case "changed_name": {
+			// 🚩 Wrong: mutating existing object
+			state.name = action.nextName;
+			return state;
+		}
+		// ...
+	}
+}
+```
+
+You mutated an existing `state` object and returned it, so React ignored the update. To fix this, you need to ensure that you're always [updating objects in state](/learn/updating-objects-in-state) and [updating arrays in state](/learn/updating-arrays-in-state) instead of mutating them:
+
+```js
+function reducer(state, action) {
+	switch (action.type) {
+		case "incremented_age": {
+			// ✅ Correct: creating a new object
+			return {
+				...state,
+				age: state.age + 1,
+			};
+		}
+		case "changed_name": {
+			// ✅ Correct: creating a new object
+			return {
+				...state,
+				name: action.nextName,
+			};
+		}
+		// ...
+	}
+}
+```
+
+---
+
+### A part of my reducer state becomes undefined after dispatching
+
+Make sure that every `case` branch **copies all of the existing fields** when returning the new state:
+
+```js
+function reducer(state, action) {
+  switch (action.type) {
+    case 'incremented_age': {
+      return {
+        ...state, // Don't forget this!
+        age: state.age + 1
+      };
+    }
+    // ...
+```
+
+Without `...state` above, the returned next state would only contain the `age` field and nothing else.
+
+---
+
+### My entire reducer state becomes undefined after dispatching
+
+If your state unexpectedly becomes `undefined`, you're likely forgetting to `return` state in one of the cases, or your action type doesn't match any of the `case` statements. To find why, throw an error outside the `switch`:
+
+```js
+function reducer(state, action) {
+	switch (action.type) {
+		case "incremented_age": {
+			// ...
+		}
+		case "edited_name": {
+			// ...
+		}
+	}
+	throw Error("Unknown action: " + action.type);
+}
+```
+
+You can also use a static type checker like TypeScript to catch such mistakes.
+
+---
+
+### I'm getting an error: "Too many re-renders"
+
+You might get an error that says: `Too many re-renders. React limits the number of renders to prevent an infinite loop.` Typically, this means that you're unconditionally dispatching an action _during render_, so your component enters a loop: render, dispatch (which causes a render), render, dispatch (which causes a render), and so on. Very often, this is caused by a mistake in specifying an event handler:
+
+```js
+// 🚩 Wrong: calls the handler during render
+return <button onClick={handleClick()}>Click me</button>;
+
+// ✅ Correct: passes down the event handler
+return <button onClick={handleClick}>Click me</button>;
+
+// ✅ Correct: passes down an inline function
+return <button onClick={(e) => handleClick(e)}>Click me</button>;
+```
+
+If you can't find the cause of this error, click on the arrow next to the error in the console and look through the JavaScript stack to find the specific `dispatch` function call responsible for the error.
+
+---
+
+### My reducer or initializer function runs twice
+
+In [Strict Mode](/reference/react/StrictMode), React will call your reducer and initializer functions twice. This shouldn't break your code.
+
+This **development-only** behavior helps you [keep components pure.](/learn/keeping-components-pure) React uses the result of one of the calls, and ignores the result of the other call. As long as your component, initializer, and reducer functions are pure, this shouldn't affect your logic. However, if they are accidentally impure, this helps you notice the mistakes.
+
+For example, this impure reducer function mutates an array in state:
+
+```js
+function reducer(state, action) {
+	switch (action.type) {
+		case "added_todo": {
+			// 🚩 Mistake: mutating state
+			state.todos.push({ id: nextId++, text: action.text });
+			return state;
+		}
+		// ...
+	}
+}
+```
+
+Because React calls your reducer function twice, you'll see the todo was added twice, so you'll know that there is a mistake. In this example, you can fix the mistake by [replacing the array instead of mutating it](/learn/updating-arrays-in-state#adding-to-an-array):
+
+```js
+function reducer(state, action) {
+	switch (action.type) {
+		case "added_todo": {
+			// ✅ Correct: replacing with new state
+			return {
+				...state,
+				todos: [...state.todos, { id: nextId++, text: action.text }],
+			};
+		}
+		// ...
+	}
+}
+```
+
+Now that this reducer function is pure, calling it an extra time doesn't make a difference in behavior. This is why React calling it twice helps you find mistakes. **Only component, initializer, and reducer functions need to be pure.** Event handlers don't need to be pure, so React will never call your event handlers twice.
+
+Read [keeping components pure](/learn/keeping-components-pure) to learn more.
diff --git a/docs/src/reference/use-ref.md b/docs/src/reference/use-ref.md
index fa1f25a02..1554ffc7e 100644
--- a/docs/src/reference/use-ref.md
+++ b/docs/src/reference/use-ref.md
@@ -1,3 +1,534 @@
 ---
 title: Use Ref 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useRef` is a React Hook that lets you reference a value that's not needed for rendering.
+
+```js
+const ref = useRef(initialValue);
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useRef(initialValue)`
+
+Call `useRef` at the top level of your component to declare a [ref.](/learn/referencing-values-with-refs)
+
+```js
+import { useRef } from 'react';
+
+function MyComponent() {
+  const intervalRef = useRef(0);
+  const inputRef = useRef(null);
+  // ...
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `initialValue`: The value you want the ref object's `current` property to be initially. It can be a value of any type. This argument is ignored after the initial render.
+
+#### Returns
+
+`useRef` returns an object with a single property:
+
+-   `current`: Initially, it's set to the `initialValue` you have passed. You can later set it to something else. If you pass the ref object to React as a `ref` attribute to a JSX node, React will set its `current` property.
+
+On the next renders, `useRef` will return the same object.
+
+#### Caveats
+
+-   You can mutate the `ref.current` property. Unlike state, it is mutable. However, if it holds an object that is used for rendering (for example, a piece of your state), then you shouldn't mutate that object.
+-   When you change the `ref.current` property, React does not re-render your component. React is not aware of when you change it because a ref is a plain JavaScript object.
+-   Do not write _or read_ `ref.current` during rendering, except for [initialization.](#avoiding-recreating-the-ref-contents) This makes your component's behavior unpredictable.
+-   In Strict Mode, React will **call your component function twice** in order to [help you find accidental impurities.](#my-initializer-or-updater-function-runs-twice) This is development-only behavior and does not affect production. Each ref object will be created twice, but one of the versions will be discarded. If your component function is pure (as it should be), this should not affect the behavior.
+
+---
+
+## Usage
+
+### Referencing a value with a ref
+
+Call `useRef` at the top level of your component to declare one or more [refs.](/learn/referencing-values-with-refs)
+
+```js
+import { useRef } from 'react';
+
+function Stopwatch() {
+  const intervalRef = useRef(0);
+  // ...
+```
+
+`useRef` returns a <CodeStep step={1}>ref object</CodeStep> with a single <CodeStep step={2}>`current` property</CodeStep> initially set to the <CodeStep step={3}>initial value</CodeStep> you provided.
+
+On the next renders, `useRef` will return the same object. You can change its `current` property to store information and read it later. This might remind you of [state](/reference/react/useState), but there is an important difference.
+
+**Changing a ref does not trigger a re-render.** This means refs are perfect for storing information that doesn't affect the visual output of your component. For example, if you need to store an [interval ID](https://developer.mozilla.org/en-US/docs/Web/API/setInterval) and retrieve it later, you can put it in a ref. To update the value inside the ref, you need to manually change its <CodeStep step={2}>`current` property</CodeStep>:
+
+```js
+function handleStartClick() {
+	const intervalId = setInterval(() => {
+		// ...
+	}, 1000);
+	intervalRef.current = intervalId;
+}
+```
+
+Later, you can read that interval ID from the ref so that you can call [clear that interval](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval):
+
+```js
+function handleStopClick() {
+	const intervalId = intervalRef.current;
+	clearInterval(intervalId);
+}
+```
+
+By using a ref, you ensure that:
+
+-   You can **store information** between re-renders (unlike regular variables, which reset on every render).
+-   Changing it **does not trigger a re-render** (unlike state variables, which trigger a re-render).
+-   The **information is local** to each copy of your component (unlike the variables outside, which are shared).
+
+Changing a ref does not trigger a re-render, so refs are not appropriate for storing information you want to display on the screen. Use state for that instead. Read more about [choosing between `useRef` and `useState`.](/learn/referencing-values-with-refs#differences-between-refs-and-state)
+
+<Recipes titleText="Examples of referencing a value with useRef" titleId="examples-value">
+
+#### Click counter
+
+This component uses a ref to keep track of how many times the button was clicked. Note that it's okay to use a ref instead of state here because the click count is only read and written in an event handler.
+
+```js
+import { useRef } from "react";
+
+export default function Counter() {
+	let ref = useRef(0);
+
+	function handleClick() {
+		ref.current = ref.current + 1;
+		alert("You clicked " + ref.current + " times!");
+	}
+
+	return <button onClick={handleClick}>Click me!</button>;
+}
+```
+
+If you show `{ref.current}` in the JSX, the number won't update on click. This is because setting `ref.current` does not trigger a re-render. Information that's used for rendering should be state instead.
+
+#### A stopwatch
+
+This example uses a combination of state and refs. Both `startTime` and `now` are state variables because they are used for rendering. But we also need to hold an [interval ID](https://developer.mozilla.org/en-US/docs/Web/API/setInterval) so that we can stop the interval on button press. Since the interval ID is not used for rendering, it's appropriate to keep it in a ref, and manually update it.
+
+```js
+import { useState, useRef } from "react";
+
+export default function Stopwatch() {
+	const [startTime, setStartTime] = useState(null);
+	const [now, setNow] = useState(null);
+	const intervalRef = useRef(null);
+
+	function handleStart() {
+		setStartTime(Date.now());
+		setNow(Date.now());
+
+		clearInterval(intervalRef.current);
+		intervalRef.current = setInterval(() => {
+			setNow(Date.now());
+		}, 10);
+	}
+
+	function handleStop() {
+		clearInterval(intervalRef.current);
+	}
+
+	let secondsPassed = 0;
+	if (startTime != null && now != null) {
+		secondsPassed = (now - startTime) / 1000;
+	}
+
+	return (
+		<>
+			<h1>Time passed: {secondsPassed.toFixed(3)}</h1>
+			<button onClick={handleStart}>Start</button>
+			<button onClick={handleStop}>Stop</button>
+		</>
+	);
+}
+```
+
+</Recipes>
+
+<Pitfall>
+
+**Do not write _or read_ `ref.current` during rendering.**
+
+React expects that the body of your component [behaves like a pure function](/learn/keeping-components-pure):
+
+-   If the inputs ([props](/learn/passing-props-to-a-component), [state](/learn/state-a-components-memory), and [context](/learn/passing-data-deeply-with-context)) are the same, it should return exactly the same JSX.
+-   Calling it in a different order or with different arguments should not affect the results of other calls.
+
+Reading or writing a ref **during rendering** breaks these expectations.
+
+```js
+function MyComponent() {
+	// ...
+	// 🚩 Don't write a ref during rendering
+	myRef.current = 123;
+	// ...
+	// 🚩 Don't read a ref during rendering
+	return <h1>{myOtherRef.current}</h1>;
+}
+```
+
+You can read or write refs **from event handlers or effects instead**.
+
+```js
+function MyComponent() {
+	// ...
+	useEffect(() => {
+		// ✅ You can read or write refs in effects
+		myRef.current = 123;
+	});
+	// ...
+	function handleClick() {
+		// ✅ You can read or write refs in event handlers
+		doSomething(myOtherRef.current);
+	}
+	// ...
+}
+```
+
+If you _have to_ read [or write](/reference/react/useState#storing-information-from-previous-renders) something during rendering, [use state](/reference/react/useState) instead.
+
+When you break these rules, your component might still work, but most of the newer features we're adding to React will rely on these expectations. Read more about [keeping your components pure.](/learn/keeping-components-pure#where-you-can-cause-side-effects)
+
+</Pitfall>
+
+---
+
+### Manipulating the DOM with a ref
+
+It's particularly common to use a ref to manipulate the [DOM.](https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API) React has built-in support for this.
+
+First, declare a <CodeStep step={1}>ref object</CodeStep> with an <CodeStep step={3}>initial value</CodeStep> of `null`:
+
+```js
+import { useRef } from 'react';
+
+function MyComponent() {
+  const inputRef = useRef(null);
+  // ...
+```
+
+Then pass your ref object as the `ref` attribute to the JSX of the DOM node you want to manipulate:
+
+```js
+// ...
+return <input ref={inputRef} />;
+```
+
+After React creates the DOM node and puts it on the screen, React will set the <CodeStep step={2}>`current` property</CodeStep> of your ref object to that DOM node. Now you can access the `<input>`'s DOM node and call methods like [`focus()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus):
+
+```js
+function handleClick() {
+	inputRef.current.focus();
+}
+```
+
+React will set the `current` property back to `null` when the node is removed from the screen.
+
+Read more about [manipulating the DOM with refs.](/learn/manipulating-the-dom-with-refs)
+
+<Recipes titleText="Examples of manipulating the DOM with useRef" titleId="examples-dom">
+
+#### Focusing a text input
+
+In this example, clicking the button will focus the input:
+
+```js
+import { useRef } from "react";
+
+export default function Form() {
+	const inputRef = useRef(null);
+
+	function handleClick() {
+		inputRef.current.focus();
+	}
+
+	return (
+		<>
+			<input ref={inputRef} />
+			<button onClick={handleClick}>Focus the input</button>
+		</>
+	);
+}
+```
+
+#### Scrolling an image into view
+
+In this example, clicking the button will scroll an image into view. It uses a ref to the list DOM node, and then calls DOM [`querySelectorAll`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) API to find the image we want to scroll to.
+
+```js
+import { useRef } from "react";
+
+export default function CatFriends() {
+	const listRef = useRef(null);
+
+	function scrollToIndex(index) {
+		const listNode = listRef.current;
+		// This line assumes a particular DOM structure:
+		const imgNode = listNode.querySelectorAll("li > img")[index];
+		imgNode.scrollIntoView({
+			behavior: "smooth",
+			block: "nearest",
+			inline: "center",
+		});
+	}
+
+	return (
+		<>
+			<nav>
+				<button onClick={() => scrollToIndex(0)}>Tom</button>
+				<button onClick={() => scrollToIndex(1)}>Maru</button>
+				<button onClick={() => scrollToIndex(2)}>Jellylorum</button>
+			</nav>
+			<div>
+				<ul ref={listRef}>
+					<li>
+						<img
+							src="https://placekitten.com/g/200/200"
+							alt="Tom"
+						/>
+					</li>
+					<li>
+						<img
+							src="https://placekitten.com/g/300/200"
+							alt="Maru"
+						/>
+					</li>
+					<li>
+						<img
+							src="https://placekitten.com/g/250/200"
+							alt="Jellylorum"
+						/>
+					</li>
+				</ul>
+			</div>
+		</>
+	);
+}
+```
+
+```css
+div {
+	width: 100%;
+	overflow: hidden;
+}
+
+nav {
+	text-align: center;
+}
+
+button {
+	margin: 0.25rem;
+}
+
+ul,
+li {
+	list-style: none;
+	white-space: nowrap;
+}
+
+li {
+	display: inline;
+	padding: 0.5rem;
+}
+```
+
+#### Playing and pausing a video
+
+This example uses a ref to call [`play()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play) and [`pause()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/pause) on a `<video>` DOM node.
+
+```js
+import { useState, useRef } from "react";
+
+export default function VideoPlayer() {
+	const [isPlaying, setIsPlaying] = useState(false);
+	const ref = useRef(null);
+
+	function handleClick() {
+		const nextIsPlaying = !isPlaying;
+		setIsPlaying(nextIsPlaying);
+
+		if (nextIsPlaying) {
+			ref.current.play();
+		} else {
+			ref.current.pause();
+		}
+	}
+
+	return (
+		<>
+			<button onClick={handleClick}>
+				{isPlaying ? "Pause" : "Play"}
+			</button>
+			<video
+				width="250"
+				ref={ref}
+				onPlay={() => setIsPlaying(true)}
+				onPause={() => setIsPlaying(false)}
+			>
+				<source
+					src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
+					type="video/mp4"
+				/>
+			</video>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+#### Exposing a ref to your own component
+
+Sometimes, you may want to let the parent component manipulate the DOM inside of your component. For example, maybe you're writing a `MyInput` component, but you want the parent to be able to focus the input (which the parent has no access to). You can use a combination of `useRef` to hold the input and [`forwardRef`](/reference/react/forwardRef) to expose it to the parent component. Read a [detailed walkthrough](/learn/manipulating-the-dom-with-refs#accessing-another-components-dom-nodes) here.
+
+```js
+import { forwardRef, useRef } from "react";
+
+const MyInput = forwardRef((props, ref) => {
+	return <input {...props} ref={ref} />;
+});
+
+export default function Form() {
+	const inputRef = useRef(null);
+
+	function handleClick() {
+		inputRef.current.focus();
+	}
+
+	return (
+		<>
+			<MyInput ref={inputRef} />
+			<button onClick={handleClick}>Focus the input</button>
+		</>
+	);
+}
+```
+
+</Recipes>
+
+---
+
+### Avoiding recreating the ref contents
+
+React saves the initial ref value once and ignores it on the next renders.
+
+```js
+function Video() {
+  const playerRef = useRef(new VideoPlayer());
+  // ...
+```
+
+Although the result of `new VideoPlayer()` is only used for the initial render, you're still calling this function on every render. This can be wasteful if it's creating expensive objects.
+
+To solve it, you may initialize the ref like this instead:
+
+```js
+function Video() {
+  const playerRef = useRef(null);
+  if (playerRef.current === null) {
+    playerRef.current = new VideoPlayer();
+  }
+  // ...
+```
+
+Normally, writing or reading `ref.current` during render is not allowed. However, it's fine in this case because the result is always the same, and the condition only executes during initialization so it's fully predictable.
+
+<DeepDive>
+
+#### How to avoid null checks when initializing useRef later
+
+If you use a type checker and don't want to always check for `null`, you can try a pattern like this instead:
+
+```js
+function Video() {
+  const playerRef = useRef(null);
+
+  function getPlayer() {
+    if (playerRef.current !== null) {
+      return playerRef.current;
+    }
+    const player = new VideoPlayer();
+    playerRef.current = player;
+    return player;
+  }
+
+  // ...
+```
+
+Here, the `playerRef` itself is nullable. However, you should be able to convince your type checker that there is no case in which `getPlayer()` returns `null`. Then use `getPlayer()` in your event handlers.
+
+</DeepDive>
+
+---
+
+## Troubleshooting
+
+### I can't get a ref to a custom component
+
+If you try to pass a `ref` to your own component like this:
+
+```js
+const inputRef = useRef(null);
+
+return <MyInput ref={inputRef} />;
+```
+
+You might get an error in the console:
+
+<ConsoleBlock level="error">
+
+Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
+
+</ConsoleBlock>
+
+By default, your own components don't expose refs to the DOM nodes inside them.
+
+To fix this, find the component that you want to get a ref to:
+
+```js
+export default function MyInput({ value, onChange }) {
+	return <input value={value} onChange={onChange} />;
+}
+```
+
+And then wrap it in [`forwardRef`](/reference/react/forwardRef) like this:
+
+```js
+import { forwardRef } from "react";
+
+const MyInput = forwardRef(({ value, onChange }, ref) => {
+	return <input value={value} onChange={onChange} ref={ref} />;
+});
+
+export default MyInput;
+```
+
+Then the parent component can get a ref to it.
+
+Read more about [accessing another component's DOM nodes.](/learn/manipulating-the-dom-with-refs#accessing-another-components-dom-nodes)
diff --git a/docs/src/reference/use-state.md b/docs/src/reference/use-state.md
index e60b34d64..c624bbd9e 100644
--- a/docs/src/reference/use-state.md
+++ b/docs/src/reference/use-state.md
@@ -1,3 +1,1234 @@
 ---
 title: Use State 🚧
 ---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useState` is a React Hook that lets you add a [state variable](/learn/state-a-components-memory) to your component.
+
+```js
+const [state, setState] = useState(initialState);
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useState(initialState)`
+
+Call `useState` at the top level of your component to declare a [state variable.](/learn/state-a-components-memory)
+
+```js
+import { useState } from 'react';
+
+function MyComponent() {
+  const [age, setAge] = useState(28);
+  const [name, setName] = useState('Taylor');
+  const [todos, setTodos] = useState(() => createTodos());
+  // ...
+```
+
+The convention is to name state variables like `[something, setSomething]` using [array destructuring.](https://javascript.info/destructuring-assignment)
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `initialState`: The value you want the state to be initially. It can be a value of any type, but there is a special behavior for functions. This argument is ignored after the initial render.
+    -   If you pass a function as `initialState`, it will be treated as an _initializer function_. It should be pure, should take no arguments, and should return a value of any type. React will call your initializer function when initializing the component, and store its return value as the initial state. [See an example below.](#avoiding-recreating-the-initial-state)
+
+#### Returns
+
+`useState` returns an array with exactly two values:
+
+1. The current state. During the first render, it will match the `initialState` you have passed.
+2. The [`set` function](#setstate) that lets you update the state to a different value and trigger a re-render.
+
+#### Caveats
+
+-   `useState` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a new component and move the state into it.
+-   In Strict Mode, React will **call your initializer function twice** in order to [help you find accidental impurities.](#my-initializer-or-updater-function-runs-twice) This is development-only behavior and does not affect production. If your initializer function is pure (as it should be), this should not affect the behavior. The result from one of the calls will be ignored.
+
+---
+
+### `set` functions, like `setSomething(nextState)`
+
+The `set` function returned by `useState` lets you update the state to a different value and trigger a re-render. You can pass the next state directly, or a function that calculates it from the previous state:
+
+```js
+const [name, setName] = useState('Edward');
+
+function handleClick() {
+  setName('Taylor');
+  setAge(a => a + 1);
+  // ...
+```
+
+#### Parameters
+
+-   `nextState`: The value that you want the state to be. It can be a value of any type, but there is a special behavior for functions.
+    -   If you pass a function as `nextState`, it will be treated as an _updater function_. It must be pure, should take the pending state as its only argument, and should return the next state. React will put your updater function in a queue and re-render your component. During the next render, React will calculate the next state by applying all of the queued updaters to the previous state. [See an example below.](#updating-state-based-on-the-previous-state)
+
+#### Returns
+
+`set` functions do not have a return value.
+
+#### Caveats
+
+-   The `set` function **only updates the state variable for the _next_ render**. If you read the state variable after calling the `set` function, [you will still get the old value](#ive-updated-the-state-but-logging-gives-me-the-old-value) that was on the screen before your call.
+
+-   If the new value you provide is identical to the current `state`, as determined by an [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison, React will **skip re-rendering the component and its children.** This is an optimization. Although in some cases React may still need to call your component before skipping the children, it shouldn't affect your code.
+
+-   React [batches state updates.](/learn/queueing-a-series-of-state-updates) It updates the screen **after all the event handlers have run** and have called their `set` functions. This prevents multiple re-renders during a single event. In the rare case that you need to force React to update the screen earlier, for example to access the DOM, you can use [`flushSync`.](/reference/react-dom/flushSync)
+
+-   Calling the `set` function _during rendering_ is only allowed from within the currently rendering component. React will discard its output and immediately attempt to render it again with the new state. This pattern is rarely needed, but you can use it to **store information from the previous renders**. [See an example below.](#storing-information-from-previous-renders)
+
+-   In Strict Mode, React will **call your updater function twice** in order to [help you find accidental impurities.](#my-initializer-or-updater-function-runs-twice) This is development-only behavior and does not affect production. If your updater function is pure (as it should be), this should not affect the behavior. The result from one of the calls will be ignored.
+
+---
+
+## Usage
+
+### Adding state to a component
+
+Call `useState` at the top level of your component to declare one or more [state variables.](/learn/state-a-components-memory)
+
+```js
+import { useState } from 'react';
+
+function MyComponent() {
+  const [age, setAge] = useState(42);
+  const [name, setName] = useState('Taylor');
+  // ...
+```
+
+The convention is to name state variables like `[something, setSomething]` using [array destructuring.](https://javascript.info/destructuring-assignment)
+
+`useState` returns an array with exactly two items:
+
+1. The <CodeStep step={1}>current state</CodeStep> of this state variable, initially set to the <CodeStep step={3}>initial state</CodeStep> you provided.
+2. The <CodeStep step={2}>`set` function</CodeStep> that lets you change it to any other value in response to interaction.
+
+To update what’s on the screen, call the `set` function with some next state:
+
+```js
+function handleClick() {
+	setName("Robin");
+}
+```
+
+React will store the next state, render your component again with the new values, and update the UI.
+
+<Pitfall>
+
+Calling the `set` function [**does not** change the current state in the already executing code](#ive-updated-the-state-but-logging-gives-me-the-old-value):
+
+```js
+function handleClick() {
+	setName("Robin");
+	console.log(name); // Still "Taylor"!
+}
+```
+
+It only affects what `useState` will return starting from the _next_ render.
+
+</Pitfall>
+
+<Recipes titleText="Basic useState examples" titleId="examples-basic">
+
+#### Counter (number)
+
+In this example, the `count` state variable holds a number. Clicking the button increments it.
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [count, setCount] = useState(0);
+
+	function handleClick() {
+		setCount(count + 1);
+	}
+
+	return <button onClick={handleClick}>You pressed me {count} times</button>;
+}
+```
+
+#### Text field (string)
+
+In this example, the `text` state variable holds a string. When you type, `handleChange` reads the latest input value from the browser input DOM element, and calls `setText` to update the state. This allows you to display the current `text` below.
+
+```js
+import { useState } from "react";
+
+export default function MyInput() {
+	const [text, setText] = useState("hello");
+
+	function handleChange(e) {
+		setText(e.target.value);
+	}
+
+	return (
+		<>
+			<input value={text} onChange={handleChange} />
+			<p>You typed: {text}</p>
+			<button onClick={() => setText("hello")}>Reset</button>
+		</>
+	);
+}
+```
+
+#### Checkbox (boolean)
+
+In this example, the `liked` state variable holds a boolean. When you click the input, `setLiked` updates the `liked` state variable with whether the browser checkbox input is checked. The `liked` variable is used to render the text below the checkbox.
+
+```js
+import { useState } from "react";
+
+export default function MyCheckbox() {
+	const [liked, setLiked] = useState(true);
+
+	function handleChange(e) {
+		setLiked(e.target.checked);
+	}
+
+	return (
+		<>
+			<label>
+				<input
+					type="checkbox"
+					checked={liked}
+					onChange={handleChange}
+				/>
+				I liked this
+			</label>
+			<p>You {liked ? "liked" : "did not like"} this.</p>
+		</>
+	);
+}
+```
+
+#### Form (two variables)
+
+You can declare more than one state variable in the same component. Each state variable is completely independent.
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [name, setName] = useState("Taylor");
+	const [age, setAge] = useState(42);
+
+	return (
+		<>
+			<input value={name} onChange={(e) => setName(e.target.value)} />
+			<button onClick={() => setAge(age + 1)}>Increment age</button>
+			<p>
+				Hello, {name}. You are {age}.
+			</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-top: 10px;
+}
+```
+
+</Recipes>
+
+---
+
+### Updating state based on the previous state
+
+Suppose the `age` is `42`. This handler calls `setAge(age + 1)` three times:
+
+```js
+function handleClick() {
+	setAge(age + 1); // setAge(42 + 1)
+	setAge(age + 1); // setAge(42 + 1)
+	setAge(age + 1); // setAge(42 + 1)
+}
+```
+
+However, after one click, `age` will only be `43` rather than `45`! This is because calling the `set` function [does not update](/learn/state-as-a-snapshot) the `age` state variable in the already running code. So each `setAge(age + 1)` call becomes `setAge(43)`.
+
+To solve this problem, **you may pass an _updater function_** to `setAge` instead of the next state:
+
+```js
+function handleClick() {
+	setAge((a) => a + 1); // setAge(42 => 43)
+	setAge((a) => a + 1); // setAge(43 => 44)
+	setAge((a) => a + 1); // setAge(44 => 45)
+}
+```
+
+Here, `a => a + 1` is your updater function. It takes the <CodeStep step={1}>pending state</CodeStep> and calculates the <CodeStep step={2}>next state</CodeStep> from it.
+
+React puts your updater functions in a [queue.](/learn/queueing-a-series-of-state-updates) Then, during the next render, it will call them in the same order:
+
+1. `a => a + 1` will receive `42` as the pending state and return `43` as the next state.
+1. `a => a + 1` will receive `43` as the pending state and return `44` as the next state.
+1. `a => a + 1` will receive `44` as the pending state and return `45` as the next state.
+
+There are no other queued updates, so React will store `45` as the current state in the end.
+
+By convention, it's common to name the pending state argument for the first letter of the state variable name, like `a` for `age`. However, you may also call it like `prevAge` or something else that you find clearer.
+
+React may [call your updaters twice](#my-initializer-or-updater-function-runs-twice) in development to verify that they are [pure.](/learn/keeping-components-pure)
+
+<DeepDive>
+
+#### Is using an updater always preferred?
+
+You might hear a recommendation to always write code like `setAge(a => a + 1)` if the state you're setting is calculated from the previous state. There is no harm in it, but it is also not always necessary.
+
+In most cases, there is no difference between these two approaches. React always makes sure that for intentional user actions, like clicks, the `age` state variable would be updated before the next click. This means there is no risk of a click handler seeing a "stale" `age` at the beginning of the event handler.
+
+However, if you do multiple updates within the same event, updaters can be helpful. They're also helpful if accessing the state variable itself is inconvenient (you might run into this when optimizing re-renders).
+
+If you prefer consistency over slightly more verbose syntax, it's reasonable to always write an updater if the state you're setting is calculated from the previous state. If it's calculated from the previous state of some _other_ state variable, you might want to combine them into one object and [use a reducer.](/learn/extracting-state-logic-into-a-reducer)
+
+</DeepDive>
+
+<Recipes titleText="The difference between passing an updater and passing the next state directly" titleId="examples-updater">
+
+#### Passing the updater function
+
+This example passes the updater function, so the "+3" button works.
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [age, setAge] = useState(42);
+
+	function increment() {
+		setAge((a) => a + 1);
+	}
+
+	return (
+		<>
+			<h1>Your age: {age}</h1>
+			<button
+				onClick={() => {
+					increment();
+					increment();
+					increment();
+				}}
+			>
+				+3
+			</button>
+			<button
+				onClick={() => {
+					increment();
+				}}
+			>
+				+1
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: block;
+	margin: 10px;
+}
+```
+
+#### Passing the next state directly
+
+This example **does not** pass the updater function, so the "+3" button **doesn't work as intended**.
+
+```js
+import { useState } from "react";
+
+export default function Counter() {
+	const [age, setAge] = useState(42);
+
+	function increment() {
+		setAge(age + 1);
+	}
+
+	return (
+		<>
+			<h1>Your age: {age}</h1>
+			<button
+				onClick={() => {
+					increment();
+					increment();
+					increment();
+				}}
+			>
+				+3
+			</button>
+			<button
+				onClick={() => {
+					increment();
+				}}
+			>
+				+1
+			</button>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin: 10px;
+	font-size: 20px;
+}
+h1 {
+	display: block;
+	margin: 10px;
+}
+```
+
+</Recipes>
+
+---
+
+### Updating objects and arrays in state
+
+You can put objects and arrays into state. In React, state is considered read-only, so **you should _replace_ it rather than _mutate_ your existing objects**. For example, if you have a `form` object in state, don't mutate it:
+
+```js
+// 🚩 Don't mutate an object in state like this:
+form.firstName = "Taylor";
+```
+
+Instead, replace the whole object by creating a new one:
+
+```js
+// ✅ Replace state with a new object
+setForm({
+	...form,
+	firstName: "Taylor",
+});
+```
+
+Read [updating objects in state](/learn/updating-objects-in-state) and [updating arrays in state](/learn/updating-arrays-in-state) to learn more.
+
+<Recipes titleText="Examples of objects and arrays in state" titleId="examples-objects">
+
+#### Form (object)
+
+In this example, the `form` state variable holds an object. Each input has a change handler that calls `setForm` with the next state of the entire form. The `{ ...form }` spread syntax ensures that the state object is replaced rather than mutated.
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [form, setForm] = useState({
+		firstName: "Barbara",
+		lastName: "Hepworth",
+		email: "bhepworth@sculpture.com",
+	});
+
+	return (
+		<>
+			<label>
+				First name:
+				<input
+					value={form.firstName}
+					onChange={(e) => {
+						setForm({
+							...form,
+							firstName: e.target.value,
+						});
+					}}
+				/>
+			</label>
+			<label>
+				Last name:
+				<input
+					value={form.lastName}
+					onChange={(e) => {
+						setForm({
+							...form,
+							lastName: e.target.value,
+						});
+					}}
+				/>
+			</label>
+			<label>
+				Email:
+				<input
+					value={form.email}
+					onChange={(e) => {
+						setForm({
+							...form,
+							email: e.target.value,
+						});
+					}}
+				/>
+			</label>
+			<p>
+				{form.firstName} {form.lastName} ({form.email})
+			</p>
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+}
+```
+
+#### Form (nested object)
+
+In this example, the state is more nested. When you update nested state, you need to create a copy of the object you're updating, as well as any objects "containing" it on the way upwards. Read [updating a nested object](/learn/updating-objects-in-state#updating-a-nested-object) to learn more.
+
+```js
+import { useState } from "react";
+
+export default function Form() {
+	const [person, setPerson] = useState({
+		name: "Niki de Saint Phalle",
+		artwork: {
+			title: "Blue Nana",
+			city: "Hamburg",
+			image: "https://i.imgur.com/Sd1AgUOm.jpg",
+		},
+	});
+
+	function handleNameChange(e) {
+		setPerson({
+			...person,
+			name: e.target.value,
+		});
+	}
+
+	function handleTitleChange(e) {
+		setPerson({
+			...person,
+			artwork: {
+				...person.artwork,
+				title: e.target.value,
+			},
+		});
+	}
+
+	function handleCityChange(e) {
+		setPerson({
+			...person,
+			artwork: {
+				...person.artwork,
+				city: e.target.value,
+			},
+		});
+	}
+
+	function handleImageChange(e) {
+		setPerson({
+			...person,
+			artwork: {
+				...person.artwork,
+				image: e.target.value,
+			},
+		});
+	}
+
+	return (
+		<>
+			<label>
+				Name:
+				<input value={person.name} onChange={handleNameChange} />
+			</label>
+			<label>
+				Title:
+				<input
+					value={person.artwork.title}
+					onChange={handleTitleChange}
+				/>
+			</label>
+			<label>
+				City:
+				<input
+					value={person.artwork.city}
+					onChange={handleCityChange}
+				/>
+			</label>
+			<label>
+				Image:
+				<input
+					value={person.artwork.image}
+					onChange={handleImageChange}
+				/>
+			</label>
+			<p>
+				<i>{person.artwork.title}</i>
+				{" by "}
+				{person.name}
+				<br />
+				(located in {person.artwork.city})
+			</p>
+			<img src={person.artwork.image} alt={person.artwork.title} />
+		</>
+	);
+}
+```
+
+```css
+label {
+	display: block;
+}
+input {
+	margin-left: 5px;
+	margin-bottom: 5px;
+}
+img {
+	width: 200px;
+	height: 200px;
+}
+```
+
+#### List (array)
+
+In this example, the `todos` state variable holds an array. Each button handler calls `setTodos` with the next version of that array. The `[...todos]` spread syntax, `todos.map()` and `todos.filter()` ensure the state array is replaced rather than mutated.
+
+```js
+import { useState } from "react";
+import AddTodo from "./AddTodo.js";
+import TaskList from "./TaskList.js";
+
+let nextId = 3;
+const initialTodos = [
+	{ id: 0, title: "Buy milk", done: true },
+	{ id: 1, title: "Eat tacos", done: false },
+	{ id: 2, title: "Brew tea", done: false },
+];
+
+export default function TaskApp() {
+	const [todos, setTodos] = useState(initialTodos);
+
+	function handleAddTodo(title) {
+		setTodos([
+			...todos,
+			{
+				id: nextId++,
+				title: title,
+				done: false,
+			},
+		]);
+	}
+
+	function handleChangeTodo(nextTodo) {
+		setTodos(
+			todos.map((t) => {
+				if (t.id === nextTodo.id) {
+					return nextTodo;
+				} else {
+					return t;
+				}
+			})
+		);
+	}
+
+	function handleDeleteTodo(todoId) {
+		setTodos(todos.filter((t) => t.id !== todoId));
+	}
+
+	return (
+		<>
+			<AddTodo onAddTodo={handleAddTodo} />
+			<TaskList
+				todos={todos}
+				onChangeTodo={handleChangeTodo}
+				onDeleteTodo={handleDeleteTodo}
+			/>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function AddTodo({ onAddTodo }) {
+	const [title, setTitle] = useState("");
+	return (
+		<>
+			<input
+				placeholder="Add todo"
+				value={title}
+				onChange={(e) => setTitle(e.target.value)}
+			/>
+			<button
+				onClick={() => {
+					setTitle("");
+					onAddTodo(title);
+				}}
+			>
+				Add
+			</button>
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function TaskList({ todos, onChangeTodo, onDeleteTodo }) {
+	return (
+		<ul>
+			{todos.map((todo) => (
+				<li key={todo.id}>
+					<Task
+						todo={todo}
+						onChange={onChangeTodo}
+						onDelete={onDeleteTodo}
+					/>
+				</li>
+			))}
+		</ul>
+	);
+}
+
+function Task({ todo, onChange, onDelete }) {
+	const [isEditing, setIsEditing] = useState(false);
+	let todoContent;
+	if (isEditing) {
+		todoContent = (
+			<>
+				<input
+					value={todo.title}
+					onChange={(e) => {
+						onChange({
+							...todo,
+							title: e.target.value,
+						});
+					}}
+				/>
+				<button onClick={() => setIsEditing(false)}>Save</button>
+			</>
+		);
+	} else {
+		todoContent = (
+			<>
+				{todo.title}
+				<button onClick={() => setIsEditing(true)}>Edit</button>
+			</>
+		);
+	}
+	return (
+		<label>
+			<input
+				type="checkbox"
+				checked={todo.done}
+				onChange={(e) => {
+					onChange({
+						...todo,
+						done: e.target.checked,
+					});
+				}}
+			/>
+			{todoContent}
+			<button onClick={() => onDelete(todo.id)}>Delete</button>
+		</label>
+	);
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+li {
+	list-style-type: none;
+}
+ul,
+li {
+	margin: 0;
+	padding: 0;
+}
+```
+
+#### Writing concise update logic with Immer
+
+If updating arrays and objects without mutation feels tedious, you can use a library like [Immer](https://github.com/immerjs/use-immer) to reduce repetitive code. Immer lets you write concise code as if you were mutating objects, but under the hood it performs immutable updates:
+
+```js
+import { useState } from "react";
+import { useImmer } from "use-immer";
+
+let nextId = 3;
+const initialList = [
+	{ id: 0, title: "Big Bellies", seen: false },
+	{ id: 1, title: "Lunar Landscape", seen: false },
+	{ id: 2, title: "Terracotta Army", seen: true },
+];
+
+export default function BucketList() {
+	const [list, updateList] = useImmer(initialList);
+
+	function handleToggle(artworkId, nextSeen) {
+		updateList((draft) => {
+			const artwork = draft.find((a) => a.id === artworkId);
+			artwork.seen = nextSeen;
+		});
+	}
+
+	return (
+		<>
+			<h1>Art Bucket List</h1>
+			<h2>My list of art to see:</h2>
+			<ItemList artworks={list} onToggle={handleToggle} />
+		</>
+	);
+}
+
+function ItemList({ artworks, onToggle }) {
+	return (
+		<ul>
+			{artworks.map((artwork) => (
+				<li key={artwork.id}>
+					<label>
+						<input
+							type="checkbox"
+							checked={artwork.seen}
+							onChange={(e) => {
+								onToggle(artwork.id, e.target.checked);
+							}}
+						/>
+						{artwork.title}
+					</label>
+				</li>
+			))}
+		</ul>
+	);
+}
+```
+
+```json package.json
+{
+	"dependencies": {
+		"immer": "1.7.3",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"use-immer": "0.5.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+</Recipes>
+
+---
+
+### Avoiding recreating the initial state
+
+React saves the initial state once and ignores it on the next renders.
+
+```js
+function TodoList() {
+  const [todos, setTodos] = useState(createInitialTodos());
+  // ...
+```
+
+Although the result of `createInitialTodos()` is only used for the initial render, you're still calling this function on every render. This can be wasteful if it's creating large arrays or performing expensive calculations.
+
+To solve this, you may **pass it as an _initializer_ function** to `useState` instead:
+
+```js
+function TodoList() {
+  const [todos, setTodos] = useState(createInitialTodos);
+  // ...
+```
+
+Notice that you’re passing `createInitialTodos`, which is the _function itself_, and not `createInitialTodos()`, which is the result of calling it. If you pass a function to `useState`, React will only call it during initialization.
+
+React may [call your initializers twice](#my-initializer-or-updater-function-runs-twice) in development to verify that they are [pure.](/learn/keeping-components-pure)
+
+<Recipes titleText="The difference between passing an initializer and passing the initial state directly" titleId="examples-initializer">
+
+#### Passing the initializer function
+
+This example passes the initializer function, so the `createInitialTodos` function only runs during initialization. It does not run when component re-renders, such as when you type into the input.
+
+```js
+import { useState } from "react";
+
+function createInitialTodos() {
+	const initialTodos = [];
+	for (let i = 0; i < 50; i++) {
+		initialTodos.push({
+			id: i,
+			text: "Item " + (i + 1),
+		});
+	}
+	return initialTodos;
+}
+
+export default function TodoList() {
+	const [todos, setTodos] = useState(createInitialTodos);
+	const [text, setText] = useState("");
+
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button
+				onClick={() => {
+					setText("");
+					setTodos([
+						{
+							id: todos.length,
+							text: text,
+						},
+						...todos,
+					]);
+				}}
+			>
+				Add
+			</button>
+			<ul>
+				{todos.map((item) => (
+					<li key={item.id}>{item.text}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+#### Passing the initial state directly
+
+This example **does not** pass the initializer function, so the `createInitialTodos` function runs on every render, such as when you type into the input. There is no observable difference in behavior, but this code is less efficient.
+
+```js
+import { useState } from "react";
+
+function createInitialTodos() {
+	const initialTodos = [];
+	for (let i = 0; i < 50; i++) {
+		initialTodos.push({
+			id: i,
+			text: "Item " + (i + 1),
+		});
+	}
+	return initialTodos;
+}
+
+export default function TodoList() {
+	const [todos, setTodos] = useState(createInitialTodos());
+	const [text, setText] = useState("");
+
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<button
+				onClick={() => {
+					setText("");
+					setTodos([
+						{
+							id: todos.length,
+							text: text,
+						},
+						...todos,
+					]);
+				}}
+			>
+				Add
+			</button>
+			<ul>
+				{todos.map((item) => (
+					<li key={item.id}>{item.text}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+</Recipes>
+
+---
+
+### Resetting state with a key
+
+You'll often encounter the `key` attribute when [rendering lists.](/learn/rendering-lists) However, it also serves another purpose.
+
+You can **reset a component's state by passing a different `key` to a component.** In this example, the Reset button changes the `version` state variable, which we pass as a `key` to the `Form`. When the `key` changes, React re-creates the `Form` component (and all of its children) from scratch, so its state gets reset.
+
+Read [preserving and resetting state](/learn/preserving-and-resetting-state) to learn more.
+
+```js
+import { useState } from "react";
+
+export default function App() {
+	const [version, setVersion] = useState(0);
+
+	function handleReset() {
+		setVersion(version + 1);
+	}
+
+	return (
+		<>
+			<button onClick={handleReset}>Reset</button>
+			<Form key={version} />
+		</>
+	);
+}
+
+function Form() {
+	const [name, setName] = useState("Taylor");
+
+	return (
+		<>
+			<input value={name} onChange={(e) => setName(e.target.value)} />
+			<p>Hello, {name}.</p>
+		</>
+	);
+}
+```
+
+```css
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+```
+
+---
+
+### Storing information from previous renders
+
+Usually, you will update state in event handlers. However, in rare cases you might want to adjust state in response to rendering -- for example, you might want to change a state variable when a prop changes.
+
+In most cases, you don't need this:
+
+-   **If the value you need can be computed entirely from the current props or other state, [remove that redundant state altogether.](/learn/choosing-the-state-structure#avoid-redundant-state)** If you're worried about recomputing too often, the [`useMemo` Hook](/reference/react/useMemo) can help.
+-   If you want to reset the entire component tree's state, [pass a different `key` to your component.](#resetting-state-with-a-key)
+-   If you can, update all the relevant state in the event handlers.
+
+In the rare case that none of these apply, there is a pattern you can use to update state based on the values that have been rendered so far, by calling a `set` function while your component is rendering.
+
+Here's an example. This `CountLabel` component displays the `count` prop passed to it:
+
+```js
+export default function CountLabel({ count }) {
+	return <h1>{count}</h1>;
+}
+```
+
+Say you want to show whether the counter has _increased or decreased_ since the last change. The `count` prop doesn't tell you this -- you need to keep track of its previous value. Add the `prevCount` state variable to track it. Add another state variable called `trend` to hold whether the count has increased or decreased. Compare `prevCount` with `count`, and if they're not equal, update both `prevCount` and `trend`. Now you can show both the current count prop and _how it has changed since the last render_.
+
+```js
+import { useState } from "react";
+import CountLabel from "./CountLabel.js";
+
+export default function App() {
+	const [count, setCount] = useState(0);
+	return (
+		<>
+			<button onClick={() => setCount(count + 1)}>Increment</button>
+			<button onClick={() => setCount(count - 1)}>Decrement</button>
+			<CountLabel count={count} />
+		</>
+	);
+}
+```
+
+```js
+import { useState } from "react";
+
+export default function CountLabel({ count }) {
+	const [prevCount, setPrevCount] = useState(count);
+	const [trend, setTrend] = useState(null);
+	if (prevCount !== count) {
+		setPrevCount(count);
+		setTrend(count > prevCount ? "increasing" : "decreasing");
+	}
+	return (
+		<>
+			<h1>{count}</h1>
+			{trend && <p>The count is {trend}</p>}
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-bottom: 10px;
+}
+```
+
+Note that if you call a `set` function while rendering, it must be inside a condition like `prevCount !== count`, and there must be a call like `setPrevCount(count)` inside of the condition. Otherwise, your component would re-render in a loop until it crashes. Also, you can only update the state of the _currently rendering_ component like this. Calling the `set` function of _another_ component during rendering is an error. Finally, your `set` call should still [update state without mutation](#updating-objects-and-arrays-in-state) -- this doesn't mean you can break other rules of [pure functions.](/learn/keeping-components-pure)
+
+This pattern can be hard to understand and is usually best avoided. However, it's better than updating state in an effect. When you call the `set` function during render, React will re-render that component immediately after your component exits with a `return` statement, and before rendering the children. This way, children don't need to render twice. The rest of your component function will still execute (and the result will be thrown away). If your condition is below all the Hook calls, you may add an early `return;` to restart rendering earlier.
+
+---
+
+## Troubleshooting
+
+### I've updated the state, but logging gives me the old value
+
+Calling the `set` function **does not change state in the running code**:
+
+```js
+function handleClick() {
+	console.log(count); // 0
+
+	setCount(count + 1); // Request a re-render with 1
+	console.log(count); // Still 0!
+
+	setTimeout(() => {
+		console.log(count); // Also 0!
+	}, 5000);
+}
+```
+
+This is because [states behaves like a snapshot.](/learn/state-as-a-snapshot) Updating state requests another render with the new state value, but does not affect the `count` JavaScript variable in your already-running event handler.
+
+If you need to use the next state, you can save it in a variable before passing it to the `set` function:
+
+```js
+const nextCount = count + 1;
+setCount(nextCount);
+
+console.log(count); // 0
+console.log(nextCount); // 1
+```
+
+---
+
+### I've updated the state, but the screen doesn't update
+
+React will **ignore your update if the next state is equal to the previous state,** as determined by an [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. This usually happens when you change an object or an array in state directly:
+
+```js
+obj.x = 10; // 🚩 Wrong: mutating existing object
+setObj(obj); // 🚩 Doesn't do anything
+```
+
+You mutated an existing `obj` object and passed it back to `setObj`, so React ignored the update. To fix this, you need to ensure that you're always [_replacing_ objects and arrays in state instead of _mutating_ them](#updating-objects-and-arrays-in-state):
+
+```js
+// ✅ Correct: creating a new object
+setObj({
+	...obj,
+	x: 10,
+});
+```
+
+---
+
+### I'm getting an error: "Too many re-renders"
+
+You might get an error that says: `Too many re-renders. React limits the number of renders to prevent an infinite loop.` Typically, this means that you're unconditionally setting state _during render_, so your component enters a loop: render, set state (which causes a render), render, set state (which causes a render), and so on. Very often, this is caused by a mistake in specifying an event handler:
+
+```js
+// 🚩 Wrong: calls the handler during render
+return <button onClick={handleClick()}>Click me</button>;
+
+// ✅ Correct: passes down the event handler
+return <button onClick={handleClick}>Click me</button>;
+
+// ✅ Correct: passes down an inline function
+return <button onClick={(e) => handleClick(e)}>Click me</button>;
+```
+
+If you can't find the cause of this error, click on the arrow next to the error in the console and look through the JavaScript stack to find the specific `set` function call responsible for the error.
+
+---
+
+### My initializer or updater function runs twice
+
+In [Strict Mode](/reference/react/StrictMode), React will call some of your functions twice instead of once:
+
+```js
+function TodoList() {
+  // This component function will run twice for every render.
+
+  const [todos, setTodos] = useState(() => {
+    // This initializer function will run twice during initialization.
+    return createTodos();
+  });
+
+  function handleClick() {
+    setTodos(prevTodos => {
+      // This updater function will run twice for every click.
+      return [...prevTodos, createTodo()];
+    });
+  }
+  // ...
+```
+
+This is expected and shouldn't break your code.
+
+This **development-only** behavior helps you [keep components pure.](/learn/keeping-components-pure) React uses the result of one of the calls, and ignores the result of the other call. As long as your component, initializer, and updater functions are pure, this shouldn't affect your logic. However, if they are accidentally impure, this helps you notice the mistakes.
+
+For example, this impure updater function mutates an array in state:
+
+```js
+setTodos((prevTodos) => {
+	// 🚩 Mistake: mutating state
+	prevTodos.push(createTodo());
+});
+```
+
+Because React calls your updater function twice, you'll see the todo was added twice, so you'll know that there is a mistake. In this example, you can fix the mistake by [replacing the array instead of mutating it](#updating-objects-and-arrays-in-state):
+
+```js
+setTodos((prevTodos) => {
+	// ✅ Correct: replacing with new state
+	return [...prevTodos, createTodo()];
+});
+```
+
+Now that this updater function is pure, calling it an extra time doesn't make a difference in behavior. This is why React calling it twice helps you find mistakes. **Only component, initializer, and updater functions need to be pure.** Event handlers don't need to be pure, so React will never call your event handlers twice.
+
+Read [keeping components pure](/learn/keeping-components-pure) to learn more.
+
+---
+
+### I'm trying to set state to a function, but it gets called instead
+
+You can't put a function into state like this:
+
+```js
+const [fn, setFn] = useState(someFunction);
+
+function handleClick() {
+	setFn(someOtherFunction);
+}
+```
+
+Because you're passing a function, React assumes that `someFunction` is an [initializer function](#avoiding-recreating-the-initial-state), and that `someOtherFunction` is an [updater function](#updating-state-based-on-the-previous-state), so it tries to call them and store the result. To actually _store_ a function, you have to put `() =>` before them in both cases. Then React will store the functions you pass.
+
+```js
+const [fn, setFn] = useState(() => someFunction);
+
+function handleClick() {
+	setFn(() => someOtherFunction);
+}
+```
diff --git a/mkdocs.yml b/mkdocs.yml
index bb24bdaba..0ae9f2f49 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -69,10 +69,9 @@ nav:
                 - reference/use-connection.md
                 - reference/use-scope.md
                 - reference/use-location.md
+                - reference/use-id.md
           - HTML Tags:
-                - reference/common-types.md
                 - reference/common-props.md
-                - reference/common-events.md
                 - reference/usage.md
           - Backends:
                 - reference/fastapi.md

From 3de3fd3fdee20c8599f748311bf3c77cae486265 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 03:55:58 -0700
Subject: [PATCH 29/49] add use-id warning

---
 docs/src/reference/use-id.md | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/docs/src/reference/use-id.md b/docs/src/reference/use-id.md
index 804738e7c..2802254e8 100644
--- a/docs/src/reference/use-id.md
+++ b/docs/src/reference/use-id.md
@@ -2,6 +2,13 @@
 title: Use ID 🚫
 ---
 
+
+!!! warning "In Progress"
+
+    This feature is planned, but not yet developed.
+
+    See [this issue](https://github.com/reactive-python/reactpy/issues/985) for more details.
+
 ## Overview
 
 <p class="intro" markdown>

From 3aab58b3daba286630a9813bb7a51a1841ce834b Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 16:19:23 -0700
Subject: [PATCH 30/49] Add undeveloped hooks

---
 docs/src/reference/use-deferred-value.md      |  995 +++++++++++
 docs/src/reference/use-imperative-handle.md   |  297 +++
 docs/src/reference/use-insertion-effect.md    |  139 ++
 docs/src/reference/use-layout-effect.md       |  690 +++++++
 docs/src/reference/use-sync-external-store.md |  429 +++++
 docs/src/reference/use-transition.md          | 1587 +++++++++++++++++
 mkdocs.yml                                    |    6 +
 7 files changed, 4143 insertions(+)
 create mode 100644 docs/src/reference/use-deferred-value.md
 create mode 100644 docs/src/reference/use-imperative-handle.md
 create mode 100644 docs/src/reference/use-insertion-effect.md
 create mode 100644 docs/src/reference/use-layout-effect.md
 create mode 100644 docs/src/reference/use-sync-external-store.md
 create mode 100644 docs/src/reference/use-transition.md

diff --git a/docs/src/reference/use-deferred-value.md b/docs/src/reference/use-deferred-value.md
new file mode 100644
index 000000000..d7058b899
--- /dev/null
+++ b/docs/src/reference/use-deferred-value.md
@@ -0,0 +1,995 @@
+---
+title: Use Deferred Value 🚫
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useDeferredValue` is a React Hook that lets you defer updating a part of the UI.
+
+```js
+const deferredValue = useDeferredValue(value);
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useDeferredValue(value)`
+
+Call `useDeferredValue` at the top level of your component to get a deferred version of that value.
+
+```js
+import { useState, useDeferredValue } from "react";
+
+function SearchPage() {
+	const [query, setQuery] = useState("");
+	const deferredQuery = useDeferredValue(query);
+	// ...
+}
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `value`: The value you want to defer. It can have any type.
+
+#### Returns
+
+During the initial render, the returned deferred value will be the same as the value you provided. During updates, React will first attempt a re-render with the old value (so it will return the old value), and then try another re-render in background with the new value (so it will return the updated value).
+
+#### Caveats
+
+-   The values you pass to `useDeferredValue` should either be primitive values (like strings and numbers) or objects created outside of rendering. If you create a new object during rendering and immediately pass it to `useDeferredValue`, it will be different on every render, causing unnecessary background re-renders.
+
+-   When `useDeferredValue` receives a different value (compared with [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)), in addition to the current render (when it still uses the previous value), it schedules a re-render in the background with the new value. The background re-render is interruptible: if there's another update to the `value`, React will restart the background re-render from scratch. For example, if the user is typing into an input faster than a chart receiving its deferred value can re-render, the chart will only re-render after the user stops typing.
+
+-   `useDeferredValue` is integrated with [`<Suspense>`.](/reference/react/Suspense) If the background update caused by a new value suspends the UI, the user will not see the fallback. They will see the old deferred value until the data loads.
+
+-   `useDeferredValue` does not by itself prevent extra network requests.
+
+-   There is no fixed delay caused by `useDeferredValue` itself. As soon as React finishes the original re-render, React will immediately start working on the background re-render with the new deferred value. Any updates caused by events (like typing) will interrupt the background re-render and get prioritized over it.
+
+-   The background re-render caused by `useDeferredValue` does not fire Effects until it's committed to the screen. If the background re-render suspends, its Effects will run after the data loads and the UI updates.
+
+---
+
+## Usage
+
+### Showing stale content while fresh content is loading
+
+Call `useDeferredValue` at the top level of your component to defer updating some part of your UI.
+
+```js
+import { useState, useDeferredValue } from "react";
+
+function SearchPage() {
+	const [query, setQuery] = useState("");
+	const deferredQuery = useDeferredValue(query);
+	// ...
+}
+```
+
+During the initial render, the <CodeStep step={2}>deferred value</CodeStep> will be the same as the <CodeStep step={1}>value</CodeStep> you provided.
+
+During updates, the <CodeStep step={2}>deferred value</CodeStep> will "lag behind" the latest <CodeStep step={1}>value</CodeStep>. In particular, React will first re-render _without_ updating the deferred value, and then try to re-render with the newly received value in background.
+
+**Let's walk through an example to see when this is useful.**
+
+<Note>
+
+This example assumes you use one of Suspense-enabled data sources:
+
+-   Data fetching with Suspense-enabled frameworks like [Relay](https://relay.dev/docs/guided-tour/rendering/loading-states/) and [Next.js](https://nextjs.org/docs/getting-started/react-essentials)
+-   Lazy-loading component code with [`lazy`](/reference/react/lazy)
+
+[Learn more about Suspense and its limitations.](/reference/react/Suspense)
+
+</Note>
+
+In this example, the `SearchResults` component [suspends](/reference/react/Suspense#displaying-a-fallback-while-content-is-loading) while fetching the search results. Try typing `"a"`, waiting for the results, and then editing it to `"ab"`. The results for `"a"` get replaced by the loading fallback.
+
+```json package.json hidden
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { Suspense, useState } from "react";
+import SearchResults from "./SearchResults.js";
+
+export default function App() {
+	const [query, setQuery] = useState("");
+	return (
+		<>
+			<label>
+				Search albums:
+				<input
+					value={query}
+					onChange={(e) => setQuery(e.target.value)}
+				/>
+			</label>
+			<Suspense fallback={<h2>Loading...</h2>}>
+				<SearchResults query={query} />
+			</Suspense>
+		</>
+	);
+}
+```
+
+```js
+import { fetchData } from "./data.js";
+
+// Note: this component is written using an experimental API
+// that's not yet available in stable versions of React.
+
+// For a realistic example you can follow today, try a framework
+// that's integrated with Suspense, like Relay or Next.js.
+
+export default function SearchResults({ query }) {
+	if (query === "") {
+		return null;
+	}
+	const albums = use(fetchData(`/search?q=${query}`));
+	if (albums.length === 0) {
+		return (
+			<p>
+				No matches for <i>"{query}"</i>
+			</p>
+		);
+	}
+	return (
+		<ul>
+			{albums.map((album) => (
+				<li key={album.id}>
+					{album.title} ({album.year})
+				</li>
+			))}
+		</ul>
+	);
+}
+
+// This is a workaround for a bug to get the demo running.
+// TODO: replace with real implementation when the bug is fixed.
+function use(promise) {
+	if (promise.status === "fulfilled") {
+		return promise.value;
+	} else if (promise.status === "rejected") {
+		throw promise.reason;
+	} else if (promise.status === "pending") {
+		throw promise;
+	} else {
+		promise.status = "pending";
+		promise.then(
+			(result) => {
+				promise.status = "fulfilled";
+				promise.value = result;
+			},
+			(reason) => {
+				promise.status = "rejected";
+				promise.reason = reason;
+			}
+		);
+		throw promise;
+	}
+}
+```
+
+```js
+// Note: the way you would do data fetching depends on
+// the framework that you use together with Suspense.
+// Normally, the caching logic would be inside a framework.
+
+let cache = new Map();
+
+export function fetchData(url) {
+	if (!cache.has(url)) {
+		cache.set(url, getData(url));
+	}
+	return cache.get(url);
+}
+
+async function getData(url) {
+	if (url.startsWith("/search?q=")) {
+		return await getSearchResults(url.slice("/search?q=".length));
+	} else {
+		throw Error("Not implemented");
+	}
+}
+
+async function getSearchResults(query) {
+	// Add a fake delay to make waiting noticeable.
+	await new Promise((resolve) => {
+		setTimeout(resolve, 500);
+	});
+
+	const allAlbums = [
+		{
+			id: 13,
+			title: "Let It Be",
+			year: 1970,
+		},
+		{
+			id: 12,
+			title: "Abbey Road",
+			year: 1969,
+		},
+		{
+			id: 11,
+			title: "Yellow Submarine",
+			year: 1969,
+		},
+		{
+			id: 10,
+			title: "The Beatles",
+			year: 1968,
+		},
+		{
+			id: 9,
+			title: "Magical Mystery Tour",
+			year: 1967,
+		},
+		{
+			id: 8,
+			title: "Sgt. Pepper's Lonely Hearts Club Band",
+			year: 1967,
+		},
+		{
+			id: 7,
+			title: "Revolver",
+			year: 1966,
+		},
+		{
+			id: 6,
+			title: "Rubber Soul",
+			year: 1965,
+		},
+		{
+			id: 5,
+			title: "Help!",
+			year: 1965,
+		},
+		{
+			id: 4,
+			title: "Beatles For Sale",
+			year: 1964,
+		},
+		{
+			id: 3,
+			title: "A Hard Day's Night",
+			year: 1964,
+		},
+		{
+			id: 2,
+			title: "With The Beatles",
+			year: 1963,
+		},
+		{
+			id: 1,
+			title: "Please Please Me",
+			year: 1963,
+		},
+	];
+
+	const lowerQuery = query.trim().toLowerCase();
+	return allAlbums.filter((album) => {
+		const lowerTitle = album.title.toLowerCase();
+		return (
+			lowerTitle.startsWith(lowerQuery) ||
+			lowerTitle.indexOf(" " + lowerQuery) !== -1
+		);
+	});
+}
+```
+
+```css
+input {
+	margin: 10px;
+}
+```
+
+A common alternative UI pattern is to _defer_ updating the list of results and to keep showing the previous results until the new results are ready. Call `useDeferredValue` to pass a deferred version of the query down:
+
+```js
+export default function App() {
+	const [query, setQuery] = useState("");
+	const deferredQuery = useDeferredValue(query);
+	return (
+		<>
+			<label>
+				Search albums:
+				<input
+					value={query}
+					onChange={(e) => setQuery(e.target.value)}
+				/>
+			</label>
+			<Suspense fallback={<h2>Loading...</h2>}>
+				<SearchResults query={deferredQuery} />
+			</Suspense>
+		</>
+	);
+}
+```
+
+The `query` will update immediately, so the input will display the new value. However, the `deferredQuery` will keep its previous value until the data has loaded, so `SearchResults` will show the stale results for a bit.
+
+Enter `"a"` in the example below, wait for the results to load, and then edit the input to `"ab"`. Notice how instead of the Suspense fallback, you now see the stale result list until the new results have loaded:
+
+```json package.json hidden
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { Suspense, useState, useDeferredValue } from "react";
+import SearchResults from "./SearchResults.js";
+
+export default function App() {
+	const [query, setQuery] = useState("");
+	const deferredQuery = useDeferredValue(query);
+	return (
+		<>
+			<label>
+				Search albums:
+				<input
+					value={query}
+					onChange={(e) => setQuery(e.target.value)}
+				/>
+			</label>
+			<Suspense fallback={<h2>Loading...</h2>}>
+				<SearchResults query={deferredQuery} />
+			</Suspense>
+		</>
+	);
+}
+```
+
+```js
+import { fetchData } from "./data.js";
+
+// Note: this component is written using an experimental API
+// that's not yet available in stable versions of React.
+
+// For a realistic example you can follow today, try a framework
+// that's integrated with Suspense, like Relay or Next.js.
+
+export default function SearchResults({ query }) {
+	if (query === "") {
+		return null;
+	}
+	const albums = use(fetchData(`/search?q=${query}`));
+	if (albums.length === 0) {
+		return (
+			<p>
+				No matches for <i>"{query}"</i>
+			</p>
+		);
+	}
+	return (
+		<ul>
+			{albums.map((album) => (
+				<li key={album.id}>
+					{album.title} ({album.year})
+				</li>
+			))}
+		</ul>
+	);
+}
+
+// This is a workaround for a bug to get the demo running.
+// TODO: replace with real implementation when the bug is fixed.
+function use(promise) {
+	if (promise.status === "fulfilled") {
+		return promise.value;
+	} else if (promise.status === "rejected") {
+		throw promise.reason;
+	} else if (promise.status === "pending") {
+		throw promise;
+	} else {
+		promise.status = "pending";
+		promise.then(
+			(result) => {
+				promise.status = "fulfilled";
+				promise.value = result;
+			},
+			(reason) => {
+				promise.status = "rejected";
+				promise.reason = reason;
+			}
+		);
+		throw promise;
+	}
+}
+```
+
+```js
+// Note: the way you would do data fetching depends on
+// the framework that you use together with Suspense.
+// Normally, the caching logic would be inside a framework.
+
+let cache = new Map();
+
+export function fetchData(url) {
+	if (!cache.has(url)) {
+		cache.set(url, getData(url));
+	}
+	return cache.get(url);
+}
+
+async function getData(url) {
+	if (url.startsWith("/search?q=")) {
+		return await getSearchResults(url.slice("/search?q=".length));
+	} else {
+		throw Error("Not implemented");
+	}
+}
+
+async function getSearchResults(query) {
+	// Add a fake delay to make waiting noticeable.
+	await new Promise((resolve) => {
+		setTimeout(resolve, 500);
+	});
+
+	const allAlbums = [
+		{
+			id: 13,
+			title: "Let It Be",
+			year: 1970,
+		},
+		{
+			id: 12,
+			title: "Abbey Road",
+			year: 1969,
+		},
+		{
+			id: 11,
+			title: "Yellow Submarine",
+			year: 1969,
+		},
+		{
+			id: 10,
+			title: "The Beatles",
+			year: 1968,
+		},
+		{
+			id: 9,
+			title: "Magical Mystery Tour",
+			year: 1967,
+		},
+		{
+			id: 8,
+			title: "Sgt. Pepper's Lonely Hearts Club Band",
+			year: 1967,
+		},
+		{
+			id: 7,
+			title: "Revolver",
+			year: 1966,
+		},
+		{
+			id: 6,
+			title: "Rubber Soul",
+			year: 1965,
+		},
+		{
+			id: 5,
+			title: "Help!",
+			year: 1965,
+		},
+		{
+			id: 4,
+			title: "Beatles For Sale",
+			year: 1964,
+		},
+		{
+			id: 3,
+			title: "A Hard Day's Night",
+			year: 1964,
+		},
+		{
+			id: 2,
+			title: "With The Beatles",
+			year: 1963,
+		},
+		{
+			id: 1,
+			title: "Please Please Me",
+			year: 1963,
+		},
+	];
+
+	const lowerQuery = query.trim().toLowerCase();
+	return allAlbums.filter((album) => {
+		const lowerTitle = album.title.toLowerCase();
+		return (
+			lowerTitle.startsWith(lowerQuery) ||
+			lowerTitle.indexOf(" " + lowerQuery) !== -1
+		);
+	});
+}
+```
+
+```css
+input {
+	margin: 10px;
+}
+```
+
+<DeepDive>
+
+#### How does deferring a value work under the hood?
+
+You can think of it as happening in two steps:
+
+1. **First, React re-renders with the new `query` (`"ab"`) but with the old `deferredQuery` (still `"a")`.** The `deferredQuery` value, which you pass to the result list, is _deferred:_ it "lags behind" the `query` value.
+
+2. **In background, React tries to re-render with _both_ `query` and `deferredQuery` updated to `"ab"`.** If this re-render completes, React will show it on the screen. However, if it suspends (the results for `"ab"` have not loaded yet), React will abandon this rendering attempt, and retry this re-render again after the data has loaded. The user will keep seeing the stale deferred value until the data is ready.
+
+The deferred "background" rendering is interruptible. For example, if you type into the input again, React will abandon it and restart with the new value. React will always use the latest provided value.
+
+Note that there is still a network request per each keystroke. What's being deferred here is displaying results (until they're ready), not the network requests themselves. Even if the user continues typing, responses for each keystroke get cached, so pressing Backspace is instant and doesn't fetch again.
+
+</DeepDive>
+
+---
+
+### Indicating that the content is stale
+
+In the example above, there is no indication that the result list for the latest query is still loading. This can be confusing to the user if the new results take a while to load. To make it more obvious to the user that the result list does not match the latest query, you can add a visual indication when the stale result list is displayed:
+
+```js
+<div
+	style={{
+		opacity: query !== deferredQuery ? 0.5 : 1,
+	}}
+>
+	<SearchResults query={deferredQuery} />
+</div>
+```
+
+With this change, as soon as you start typing, the stale result list gets slightly dimmed until the new result list loads. You can also add a CSS transition to delay dimming so that it feels gradual, like in the example below:
+
+```json package.json hidden
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { Suspense, useState, useDeferredValue } from "react";
+import SearchResults from "./SearchResults.js";
+
+export default function App() {
+	const [query, setQuery] = useState("");
+	const deferredQuery = useDeferredValue(query);
+	const isStale = query !== deferredQuery;
+	return (
+		<>
+			<label>
+				Search albums:
+				<input
+					value={query}
+					onChange={(e) => setQuery(e.target.value)}
+				/>
+			</label>
+			<Suspense fallback={<h2>Loading...</h2>}>
+				<div
+					style={{
+						opacity: isStale ? 0.5 : 1,
+						transition: isStale
+							? "opacity 0.2s 0.2s linear"
+							: "opacity 0s 0s linear",
+					}}
+				>
+					<SearchResults query={deferredQuery} />
+				</div>
+			</Suspense>
+		</>
+	);
+}
+```
+
+```js
+import { fetchData } from "./data.js";
+
+// Note: this component is written using an experimental API
+// that's not yet available in stable versions of React.
+
+// For a realistic example you can follow today, try a framework
+// that's integrated with Suspense, like Relay or Next.js.
+
+export default function SearchResults({ query }) {
+	if (query === "") {
+		return null;
+	}
+	const albums = use(fetchData(`/search?q=${query}`));
+	if (albums.length === 0) {
+		return (
+			<p>
+				No matches for <i>"{query}"</i>
+			</p>
+		);
+	}
+	return (
+		<ul>
+			{albums.map((album) => (
+				<li key={album.id}>
+					{album.title} ({album.year})
+				</li>
+			))}
+		</ul>
+	);
+}
+
+// This is a workaround for a bug to get the demo running.
+// TODO: replace with real implementation when the bug is fixed.
+function use(promise) {
+	if (promise.status === "fulfilled") {
+		return promise.value;
+	} else if (promise.status === "rejected") {
+		throw promise.reason;
+	} else if (promise.status === "pending") {
+		throw promise;
+	} else {
+		promise.status = "pending";
+		promise.then(
+			(result) => {
+				promise.status = "fulfilled";
+				promise.value = result;
+			},
+			(reason) => {
+				promise.status = "rejected";
+				promise.reason = reason;
+			}
+		);
+		throw promise;
+	}
+}
+```
+
+```js
+// Note: the way you would do data fetching depends on
+// the framework that you use together with Suspense.
+// Normally, the caching logic would be inside a framework.
+
+let cache = new Map();
+
+export function fetchData(url) {
+	if (!cache.has(url)) {
+		cache.set(url, getData(url));
+	}
+	return cache.get(url);
+}
+
+async function getData(url) {
+	if (url.startsWith("/search?q=")) {
+		return await getSearchResults(url.slice("/search?q=".length));
+	} else {
+		throw Error("Not implemented");
+	}
+}
+
+async function getSearchResults(query) {
+	// Add a fake delay to make waiting noticeable.
+	await new Promise((resolve) => {
+		setTimeout(resolve, 500);
+	});
+
+	const allAlbums = [
+		{
+			id: 13,
+			title: "Let It Be",
+			year: 1970,
+		},
+		{
+			id: 12,
+			title: "Abbey Road",
+			year: 1969,
+		},
+		{
+			id: 11,
+			title: "Yellow Submarine",
+			year: 1969,
+		},
+		{
+			id: 10,
+			title: "The Beatles",
+			year: 1968,
+		},
+		{
+			id: 9,
+			title: "Magical Mystery Tour",
+			year: 1967,
+		},
+		{
+			id: 8,
+			title: "Sgt. Pepper's Lonely Hearts Club Band",
+			year: 1967,
+		},
+		{
+			id: 7,
+			title: "Revolver",
+			year: 1966,
+		},
+		{
+			id: 6,
+			title: "Rubber Soul",
+			year: 1965,
+		},
+		{
+			id: 5,
+			title: "Help!",
+			year: 1965,
+		},
+		{
+			id: 4,
+			title: "Beatles For Sale",
+			year: 1964,
+		},
+		{
+			id: 3,
+			title: "A Hard Day's Night",
+			year: 1964,
+		},
+		{
+			id: 2,
+			title: "With The Beatles",
+			year: 1963,
+		},
+		{
+			id: 1,
+			title: "Please Please Me",
+			year: 1963,
+		},
+	];
+
+	const lowerQuery = query.trim().toLowerCase();
+	return allAlbums.filter((album) => {
+		const lowerTitle = album.title.toLowerCase();
+		return (
+			lowerTitle.startsWith(lowerQuery) ||
+			lowerTitle.indexOf(" " + lowerQuery) !== -1
+		);
+	});
+}
+```
+
+```css
+input {
+	margin: 10px;
+}
+```
+
+---
+
+### Deferring re-rendering for a part of the UI
+
+You can also apply `useDeferredValue` as a performance optimization. It is useful when a part of your UI is slow to re-render, there's no easy way to optimize it, and you want to prevent it from blocking the rest of the UI.
+
+Imagine you have a text field and a component (like a chart or a long list) that re-renders on every keystroke:
+
+```js
+function App() {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<SlowList text={text} />
+		</>
+	);
+}
+```
+
+First, optimize `SlowList` to skip re-rendering when its props are the same. To do this, [wrap it in `memo`:](/reference/react/memo#skipping-re-rendering-when-props-are-unchanged)
+
+```js
+const SlowList = memo(function SlowList({ text }) {
+	// ...
+});
+```
+
+However, this only helps if the `SlowList` props are _the same_ as during the previous render. The problem you're facing now is that it's slow when they're _different,_ and when you actually need to show different visual output.
+
+Concretely, the main performance problem is that whenever you type into the input, the `SlowList` receives new props, and re-rendering its entire tree makes the typing feel janky. In this case, `useDeferredValue` lets you prioritize updating the input (which must be fast) over updating the result list (which is allowed to be slower):
+
+```js
+function App() {
+	const [text, setText] = useState("");
+	const deferredText = useDeferredValue(text);
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<SlowList text={deferredText} />
+		</>
+	);
+}
+```
+
+This does not make re-rendering of the `SlowList` faster. However, it tells React that re-rendering the list can be deprioritized so that it doesn't block the keystrokes. The list will "lag behind" the input and then "catch up". Like before, React will attempt to update the list as soon as possible, but will not block the user from typing.
+
+<Recipes titleText="The difference between useDeferredValue and unoptimized re-rendering" titleId="examples">
+
+#### Deferred re-rendering of the list
+
+In this example, each item in the `SlowList` component is **artificially slowed down** so that you can see how `useDeferredValue` lets you keep the input responsive. Type into the input and notice that typing feels snappy while the list "lags behind" it.
+
+```js
+import { useState, useDeferredValue } from "react";
+import SlowList from "./SlowList.js";
+
+export default function App() {
+	const [text, setText] = useState("");
+	const deferredText = useDeferredValue(text);
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<SlowList text={deferredText} />
+		</>
+	);
+}
+```
+
+```js
+import { memo } from "react";
+
+const SlowList = memo(function SlowList({ text }) {
+	// Log once. The actual slowdown is inside SlowItem.
+	console.log("[ARTIFICIALLY SLOW] Rendering 250 <SlowItem />");
+
+	let items = [];
+	for (let i = 0; i < 250; i++) {
+		items.push(<SlowItem key={i} text={text} />);
+	}
+	return <ul className="items">{items}</ul>;
+});
+
+function SlowItem({ text }) {
+	let startTime = performance.now();
+	while (performance.now() - startTime < 1) {
+		// Do nothing for 1 ms per item to emulate extremely slow code
+	}
+
+	return <li className="item">Text: {text}</li>;
+}
+
+export default SlowList;
+```
+
+```css
+.items {
+	padding: 0;
+}
+
+.item {
+	list-style: none;
+	display: block;
+	height: 40px;
+	padding: 5px;
+	margin-top: 10px;
+	border-radius: 4px;
+	border: 1px solid #aaa;
+}
+```
+
+#### Unoptimized re-rendering of the list
+
+In this example, each item in the `SlowList` component is **artificially slowed down**, but there is no `useDeferredValue`.
+
+Notice how typing into the input feels very janky. This is because without `useDeferredValue`, each keystroke forces the entire list to re-render immediately in a non-interruptible way.
+
+```js
+import { useState } from "react";
+import SlowList from "./SlowList.js";
+
+export default function App() {
+	const [text, setText] = useState("");
+	return (
+		<>
+			<input value={text} onChange={(e) => setText(e.target.value)} />
+			<SlowList text={text} />
+		</>
+	);
+}
+```
+
+```js
+import { memo } from "react";
+
+const SlowList = memo(function SlowList({ text }) {
+	// Log once. The actual slowdown is inside SlowItem.
+	console.log("[ARTIFICIALLY SLOW] Rendering 250 <SlowItem />");
+
+	let items = [];
+	for (let i = 0; i < 250; i++) {
+		items.push(<SlowItem key={i} text={text} />);
+	}
+	return <ul className="items">{items}</ul>;
+});
+
+function SlowItem({ text }) {
+	let startTime = performance.now();
+	while (performance.now() - startTime < 1) {
+		// Do nothing for 1 ms per item to emulate extremely slow code
+	}
+
+	return <li className="item">Text: {text}</li>;
+}
+
+export default SlowList;
+```
+
+```css
+.items {
+	padding: 0;
+}
+
+.item {
+	list-style: none;
+	display: block;
+	height: 40px;
+	padding: 5px;
+	margin-top: 10px;
+	border-radius: 4px;
+	border: 1px solid #aaa;
+}
+```
+
+</Recipes>
+
+<Pitfall>
+
+This optimization requires `SlowList` to be wrapped in [`memo`.](/reference/react/memo) This is because whenever the `text` changes, React needs to be able to re-render the parent component quickly. During that re-render, `deferredText` still has its previous value, so `SlowList` is able to skip re-rendering (its props have not changed). Without [`memo`,](/reference/react/memo) it would have to re-render anyway, defeating the point of the optimization.
+
+</Pitfall>
+
+<DeepDive>
+
+#### How is deferring a value different from debouncing and throttling?
+
+There are two common optimization techniques you might have used before in this scenario:
+
+-   _Debouncing_ means you'd wait for the user to stop typing (e.g. for a second) before updating the list.
+-   _Throttling_ means you'd update the list every once in a while (e.g. at most once a second).
+
+While these techniques are helpful in some cases, `useDeferredValue` is better suited to optimizing rendering because it is deeply integrated with React itself and adapts to the user's device.
+
+Unlike debouncing or throttling, it doesn't require choosing any fixed delay. If the user's device is fast (e.g. powerful laptop), the deferred re-render would happen almost immediately and wouldn't be noticeable. If the user's device is slow, the list would "lag behind" the input proportionally to how slow the device is.
+
+Also, unlike with debouncing or throttling, deferred re-renders done by `useDeferredValue` are interruptible by default. This means that if React is in the middle of re-rendering a large list, but the user makes another keystroke, React will abandon that re-render, handle the keystroke, and then start rendering in background again. By contrast, debouncing and throttling still produce a janky experience because they're _blocking:_ they merely postpone the moment when rendering blocks the keystroke.
+
+If the work you're optimizing doesn't happen during rendering, debouncing and throttling are still useful. For example, they can let you fire fewer network requests. You can also use these techniques together.
+
+</DeepDive>
diff --git a/docs/src/reference/use-imperative-handle.md b/docs/src/reference/use-imperative-handle.md
new file mode 100644
index 000000000..8d5ca5994
--- /dev/null
+++ b/docs/src/reference/use-imperative-handle.md
@@ -0,0 +1,297 @@
+---
+title: Use Imperative Handle 🚫
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useImperativeHandle` is a React Hook that lets you customize the handle exposed as a [ref.](/learn/manipulating-the-dom-with-refs)
+
+```js
+useImperativeHandle(ref, createHandle, dependencies?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useImperativeHandle(ref, createHandle, dependencies?)`
+
+Call `useImperativeHandle` at the top level of your component to customize the ref handle it exposes:
+
+```js
+import { forwardRef, useImperativeHandle } from 'react';
+
+const MyInput = forwardRef(function MyInput(props, ref) {
+  useImperativeHandle(ref, () => {
+    return {
+      // ... your methods ...
+    };
+  }, []);
+  // ...
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `ref`: The `ref` you received as the second argument from the [`forwardRef` render function.](/reference/react/forwardRef#render-function)
+
+-   `createHandle`: A function that takes no arguments and returns the ref handle you want to expose. That ref handle can have any type. Usually, you will return an object with the methods you want to expose.
+
+-   **optional** `dependencies`: The list of all reactive values referenced inside of the `createHandle` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. If a re-render resulted in a change to some dependency, or if you omitted this argument, your `createHandle` function will re-execute, and the newly created handle will be assigned to the ref.
+
+#### Returns
+
+`useImperativeHandle` returns `undefined`.
+
+---
+
+## Usage
+
+### Exposing a custom ref handle to the parent component
+
+By default, components don't expose their DOM nodes to parent components. For example, if you want the parent component of `MyInput` to [have access](/learn/manipulating-the-dom-with-refs) to the `<input>` DOM node, you have to opt in with [`forwardRef`:](/reference/react/forwardRef)
+
+```js
+import { forwardRef } from "react";
+
+const MyInput = forwardRef(function MyInput(props, ref) {
+	return <input {...props} ref={ref} />;
+});
+```
+
+With the code above, [a ref to `MyInput` will receive the `<input>` DOM node.](/reference/react/forwardRef#exposing-a-dom-node-to-the-parent-component) However, you can expose a custom value instead. To customize the exposed handle, call `useImperativeHandle` at the top level of your component:
+
+```js
+import { forwardRef, useImperativeHandle } from "react";
+
+const MyInput = forwardRef(function MyInput(props, ref) {
+	useImperativeHandle(
+		ref,
+		() => {
+			return {
+				// ... your methods ...
+			};
+		},
+		[]
+	);
+
+	return <input {...props} />;
+});
+```
+
+Note that in the code above, the `ref` is no longer forwarded to the `<input>`.
+
+For example, suppose you don't want to expose the entire `<input>` DOM node, but you want to expose two of its methods: `focus` and `scrollIntoView`. To do this, keep the real browser DOM in a separate ref. Then use `useImperativeHandle` to expose a handle with only the methods that you want the parent component to call:
+
+```js
+import { forwardRef, useRef, useImperativeHandle } from "react";
+
+const MyInput = forwardRef(function MyInput(props, ref) {
+	const inputRef = useRef(null);
+
+	useImperativeHandle(
+		ref,
+		() => {
+			return {
+				focus() {
+					inputRef.current.focus();
+				},
+				scrollIntoView() {
+					inputRef.current.scrollIntoView();
+				},
+			};
+		},
+		[]
+	);
+
+	return <input {...props} ref={inputRef} />;
+});
+```
+
+Now, if the parent component gets a ref to `MyInput`, it will be able to call the `focus` and `scrollIntoView` methods on it. However, it will not have full access to the underlying `<input>` DOM node.
+
+```js
+import { useRef } from "react";
+import MyInput from "./MyInput.js";
+
+export default function Form() {
+	const ref = useRef(null);
+
+	function handleClick() {
+		ref.current.focus();
+		// This won't work because the DOM node isn't exposed:
+		// ref.current.style.opacity = 0.5;
+	}
+
+	return (
+		<form>
+			<MyInput label="Enter your name:" ref={ref} />
+			<button type="button" onClick={handleClick}>
+				Edit
+			</button>
+		</form>
+	);
+}
+```
+
+```js
+import { forwardRef, useRef, useImperativeHandle } from "react";
+
+const MyInput = forwardRef(function MyInput(props, ref) {
+	const inputRef = useRef(null);
+
+	useImperativeHandle(
+		ref,
+		() => {
+			return {
+				focus() {
+					inputRef.current.focus();
+				},
+				scrollIntoView() {
+					inputRef.current.scrollIntoView();
+				},
+			};
+		},
+		[]
+	);
+
+	return <input {...props} ref={inputRef} />;
+});
+
+export default MyInput;
+```
+
+```css
+input {
+	margin: 5px;
+}
+```
+
+---
+
+### Exposing your own imperative methods
+
+The methods you expose via an imperative handle don't have to match the DOM methods exactly. For example, this `Post` component exposes a `scrollAndFocusAddComment` method via an imperative handle. This lets the parent `Page` scroll the list of comments _and_ focus the input field when you click the button:
+
+```js
+import { useRef } from "react";
+import Post from "./Post.js";
+
+export default function Page() {
+	const postRef = useRef(null);
+
+	function handleClick() {
+		postRef.current.scrollAndFocusAddComment();
+	}
+
+	return (
+		<>
+			<button onClick={handleClick}>Write a comment</button>
+			<Post ref={postRef} />
+		</>
+	);
+}
+```
+
+```js
+import { forwardRef, useRef, useImperativeHandle } from "react";
+import CommentList from "./CommentList.js";
+import AddComment from "./AddComment.js";
+
+const Post = forwardRef((props, ref) => {
+	const commentsRef = useRef(null);
+	const addCommentRef = useRef(null);
+
+	useImperativeHandle(
+		ref,
+		() => {
+			return {
+				scrollAndFocusAddComment() {
+					commentsRef.current.scrollToBottom();
+					addCommentRef.current.focus();
+				},
+			};
+		},
+		[]
+	);
+
+	return (
+		<>
+			<article>
+				<p>Welcome to my blog!</p>
+			</article>
+			<CommentList ref={commentsRef} />
+			<AddComment ref={addCommentRef} />
+		</>
+	);
+});
+
+export default Post;
+```
+
+```js
+import { forwardRef, useRef, useImperativeHandle } from "react";
+
+const CommentList = forwardRef(function CommentList(props, ref) {
+	const divRef = useRef(null);
+
+	useImperativeHandle(
+		ref,
+		() => {
+			return {
+				scrollToBottom() {
+					const node = divRef.current;
+					node.scrollTop = node.scrollHeight;
+				},
+			};
+		},
+		[]
+	);
+
+	let comments = [];
+	for (let i = 0; i < 50; i++) {
+		comments.push(<p key={i}>Comment #{i}</p>);
+	}
+
+	return (
+		<div className="CommentList" ref={divRef}>
+			{comments}
+		</div>
+	);
+});
+
+export default CommentList;
+```
+
+```js
+import { forwardRef, useRef, useImperativeHandle } from "react";
+
+const AddComment = forwardRef(function AddComment(props, ref) {
+	return <input placeholder="Add comment..." ref={ref} />;
+});
+
+export default AddComment;
+```
+
+```css
+.CommentList {
+	height: 100px;
+	overflow: scroll;
+	border: 1px solid black;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+```
+
+<Pitfall>
+
+**Do not overuse refs.** You should only use refs for _imperative_ behaviors that you can't express as props: for example, scrolling to a node, focusing a node, triggering an animation, selecting text, and so on.
+
+**If you can express something as a prop, you should not use a ref.** For example, instead of exposing an imperative handle like `{ open, close }` from a `Modal` component, it is better to take `isOpen` as a prop like `<Modal isOpen={isOpen} />`. [Effects](/learn/synchronizing-with-effects) can help you expose imperative behaviors via props.
+
+</Pitfall>
diff --git a/docs/src/reference/use-insertion-effect.md b/docs/src/reference/use-insertion-effect.md
new file mode 100644
index 000000000..495959069
--- /dev/null
+++ b/docs/src/reference/use-insertion-effect.md
@@ -0,0 +1,139 @@
+---
+title: Use Insertion Effect 🚫
+---
+
+<Pitfall>
+
+`useInsertionEffect` is for CSS-in-JS library authors. Unless you are working on a CSS-in-JS library and need a place to inject the styles, you probably want [`useEffect`](/reference/react/useEffect) or [`useLayoutEffect`](/reference/react/useLayoutEffect) instead.
+
+</Pitfall>
+
+## Overview
+
+<p class="intro" markdown>
+
+`useInsertionEffect` is a version of [`useEffect`](/reference/react/useEffect) that fires before any DOM mutations.
+
+```js
+useInsertionEffect(setup, dependencies?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useInsertionEffect(setup, dependencies?)`
+
+Call `useInsertionEffect` to insert the styles before any DOM mutations:
+
+```js
+import { useInsertionEffect } from "react";
+
+// Inside your CSS-in-JS library
+function useCSS(rule) {
+	useInsertionEffect(() => {
+		// ... inject <style> tags here ...
+	});
+	return rule;
+}
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `setup`: The function with your Effect's logic. Your setup function may also optionally return a _cleanup_ function. Before your component is added to the DOM, React will run your setup function. After every re-render with changed dependencies, React will first run the cleanup function (if you provided it) with the old values, and then run your setup function with the new values. Before your component is removed from the DOM, React will run your cleanup function.
+
+-   **optional** `dependencies`: The list of all reactive values referenced inside of the `setup` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison algorithm. If you don't specify the dependencies at all, your Effect will re-run after every re-render of the component.
+
+#### Returns
+
+`useInsertionEffect` returns `undefined`.
+
+#### Caveats
+
+-   Effects only run on the client. They don't run during server rendering.
+-   You can't update state from inside `useInsertionEffect`.
+-   By the time `useInsertionEffect` runs, refs are not attached yet, and DOM is not yet updated.
+
+---
+
+## Usage
+
+### Injecting dynamic styles from CSS-in-JS libraries
+
+Traditionally, you would style React components using plain CSS.
+
+```js
+// In your JS file:
+<button className="success" />
+
+// In your CSS file:
+.success { color: green; }
+```
+
+Some teams prefer to author styles directly in JavaScript code instead of writing CSS files. This usually requires using a CSS-in-JS library or a tool. There are three common approaches to CSS-in-JS:
+
+1. Static extraction to CSS files with a compiler
+2. Inline styles, e.g. `<div style={{ opacity: 1 }}>`
+3. Runtime injection of `<style>` tags
+
+If you use CSS-in-JS, we recommend a combination of the first two approaches (CSS files for static styles, inline styles for dynamic styles). **We don't recommend runtime `<style>` tag injection for two reasons:**
+
+1. Runtime injection forces the browser to recalculate the styles a lot more often.
+2. Runtime injection can be very slow if it happens at the wrong time in the React lifecycle.
+
+The first problem is not solvable, but `useInsertionEffect` helps you solve the second problem.
+
+Call `useInsertionEffect` to insert the styles before any DOM mutations:
+
+```js
+// Inside your CSS-in-JS library
+let isInserted = new Set();
+function useCSS(rule) {
+	useInsertionEffect(() => {
+		// As explained earlier, we don't recommend runtime injection of <style> tags.
+		// But if you have to do it, then it's important to do in useInsertionEffect.
+		if (!isInserted.has(rule)) {
+			isInserted.add(rule);
+			document.head.appendChild(getStyleForRule(rule));
+		}
+	});
+	return rule;
+}
+
+function Button() {
+	const className = useCSS("...");
+	return <div className={className} />;
+}
+```
+
+Similarly to `useEffect`, `useInsertionEffect` does not run on the server. If you need to collect which CSS rules have been used on the server, you can do it during rendering:
+
+```js
+let collectedRulesSet = new Set();
+
+function useCSS(rule) {
+	if (typeof window === "undefined") {
+		collectedRulesSet.add(rule);
+	}
+	useInsertionEffect(() => {
+		// ...
+	});
+	return rule;
+}
+```
+
+[Read more about upgrading CSS-in-JS libraries with runtime injection to `useInsertionEffect`.](https://github.com/reactwg/react-18/discussions/110)
+
+<DeepDive>
+
+#### How is this better than injecting styles during rendering or useLayoutEffect?
+
+If you insert styles during rendering and React is processing a [non-blocking update,](/reference/react/useTransition#marking-a-state-update-as-a-non-blocking-transition) the browser will recalculate the styles every single frame while rendering a component tree, which can be **extremely slow.**
+
+`useInsertionEffect` is better than inserting styles during [`useLayoutEffect`](/reference/react/useLayoutEffect) or [`useEffect`](/reference/react/useEffect) because it ensures that by the time other Effects run in your components, the `<style>` tags have already been inserted. Otherwise, layout calculations in regular Effects would be wrong due to outdated styles.
+
+</DeepDive>
diff --git a/docs/src/reference/use-layout-effect.md b/docs/src/reference/use-layout-effect.md
new file mode 100644
index 000000000..8ea42d8bc
--- /dev/null
+++ b/docs/src/reference/use-layout-effect.md
@@ -0,0 +1,690 @@
+---
+title: Use Layout Effect 🚫
+---
+
+<Pitfall>
+
+`useLayoutEffect` can hurt performance. Prefer [`useEffect`](/reference/react/useEffect) when possible.
+
+</Pitfall>
+
+## Overview
+
+<p class="intro" markdown>
+
+`useLayoutEffect` is a version of [`useEffect`](/reference/react/useEffect) that fires before the browser repaints the screen.
+
+```js
+useLayoutEffect(setup, dependencies?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useLayoutEffect(setup, dependencies?)`
+
+Call `useLayoutEffect` to perform the layout measurements before the browser repaints the screen:
+
+```js
+import { useState, useRef, useLayoutEffect } from 'react';
+
+function Tooltip() {
+  const ref = useRef(null);
+  const [tooltipHeight, setTooltipHeight] = useState(0);
+
+  useLayoutEffect(() => {
+    const { height } = ref.current.getBoundingClientRect();
+    setTooltipHeight(height);
+  }, []);
+  // ...
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `setup`: The function with your Effect's logic. Your setup function may also optionally return a _cleanup_ function. Before your component is added to the DOM, React will run your setup function. After every re-render with changed dependencies, React will first run the cleanup function (if you provided it) with the old values, and then run your setup function with the new values. Before your component is removed from the DOM, React will run your cleanup function.
+
+-   **optional** `dependencies`: The list of all reactive values referenced inside of the `setup` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. If you omit this argument, your Effect will re-run after every re-render of the component.
+
+#### Returns
+
+`useLayoutEffect` returns `undefined`.
+
+#### Caveats
+
+-   `useLayoutEffect` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a component and move the Effect there.
+
+-   When Strict Mode is on, React will **run one extra development-only setup+cleanup cycle** before the first real setup. This is a stress-test that ensures that your cleanup logic "mirrors" your setup logic and that it stops or undoes whatever the setup is doing. If this causes a problem, [implement the cleanup function.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+-   If some of your dependencies are objects or functions defined inside the component, there is a risk that they will **cause the Effect to re-run more often than needed.** To fix this, remove unnecessary [object](/reference/react/useEffect#removing-unnecessary-object-dependencies) and [function](/reference/react/useEffect#removing-unnecessary-function-dependencies) dependencies. You can also [extract state updates](/reference/react/useEffect#updating-state-based-on-previous-state-from-an-effect) and [non-reactive logic](/reference/react/useEffect#reading-the-latest-props-and-state-from-an-effect) outside of your Effect.
+
+-   Effects **only run on the client.** They don't run during server rendering.
+
+-   The code inside `useLayoutEffect` and all state updates scheduled from it **block the browser from repainting the screen.** When used excessively, this makes your app slow. When possible, prefer [`useEffect`.](/reference/react/useEffect)
+
+---
+
+## Usage
+
+### Measuring layout before the browser repaints the screen
+
+Most components don't need to know their position and size on the screen to decide what to render. They only return some JSX. Then the browser calculates their _layout_ (position and size) and repaints the screen.
+
+Sometimes, that's not enough. Imagine a tooltip that appears next to some element on hover. If there's enough space, the tooltip should appear above the element, but if it doesn't fit, it should appear below. In order to render the tooltip at the right final position, you need to know its height (i.e. whether it fits at the top).
+
+To do this, you need to render in two passes:
+
+1. Render the tooltip anywhere (even with a wrong position).
+2. Measure its height and decide where to place the tooltip.
+3. Render the tooltip _again_ in the correct place.
+
+**All of this needs to happen before the browser repaints the screen.** You don't want the user to see the tooltip moving. Call `useLayoutEffect` to perform the layout measurements before the browser repaints the screen:
+
+```js
+function Tooltip() {
+	const ref = useRef(null);
+	const [tooltipHeight, setTooltipHeight] = useState(0); // You don't know real height yet
+
+	useLayoutEffect(() => {
+		const { height } = ref.current.getBoundingClientRect();
+		setTooltipHeight(height); // Re-render now that you know the real height
+	}, []);
+
+	// ...use tooltipHeight in the rendering logic below...
+}
+```
+
+Here's how this works step by step:
+
+1. `Tooltip` renders with the initial `tooltipHeight = 0` (so the tooltip may be wrongly positioned).
+2. React places it in the DOM and runs the code in `useLayoutEffect`.
+3. Your `useLayoutEffect` [measures the height](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect) of the tooltip content and triggers an immediate re-render.
+4. `Tooltip` renders again with the real `tooltipHeight` (so the tooltip is correctly positioned).
+5. React updates it in the DOM, and the browser finally displays the tooltip.
+
+Hover over the buttons below and see how the tooltip adjusts its position depending on whether it fits:
+
+```js
+import ButtonWithTooltip from "./ButtonWithTooltip.js";
+
+export default function App() {
+	return (
+		<div>
+			<ButtonWithTooltip
+				tooltipContent={
+					<div>
+						This tooltip does not fit above the button.
+						<br />
+						This is why it's displayed below instead!
+					</div>
+				}
+			>
+				Hover over me (tooltip above)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+		</div>
+	);
+}
+```
+
+```js
+import { useState, useRef } from "react";
+import Tooltip from "./Tooltip.js";
+
+export default function ButtonWithTooltip({ tooltipContent, ...rest }) {
+	const [targetRect, setTargetRect] = useState(null);
+	const buttonRef = useRef(null);
+	return (
+		<>
+			<button
+				{...rest}
+				ref={buttonRef}
+				onPointerEnter={() => {
+					const rect = buttonRef.current.getBoundingClientRect();
+					setTargetRect({
+						left: rect.left,
+						top: rect.top,
+						right: rect.right,
+						bottom: rect.bottom,
+					});
+				}}
+				onPointerLeave={() => {
+					setTargetRect(null);
+				}}
+			/>
+			{targetRect !== null && (
+				<Tooltip targetRect={targetRect}>{tooltipContent}</Tooltip>
+			)}
+		</>
+	);
+}
+```
+
+```js
+import { useRef, useLayoutEffect, useState } from "react";
+import { createPortal } from "react-dom";
+import TooltipContainer from "./TooltipContainer.js";
+
+export default function Tooltip({ children, targetRect }) {
+	const ref = useRef(null);
+	const [tooltipHeight, setTooltipHeight] = useState(0);
+
+	useLayoutEffect(() => {
+		const { height } = ref.current.getBoundingClientRect();
+		setTooltipHeight(height);
+		console.log("Measured tooltip height: " + height);
+	}, []);
+
+	let tooltipX = 0;
+	let tooltipY = 0;
+	if (targetRect !== null) {
+		tooltipX = targetRect.left;
+		tooltipY = targetRect.top - tooltipHeight;
+		if (tooltipY < 0) {
+			// It doesn't fit above, so place below.
+			tooltipY = targetRect.bottom;
+		}
+	}
+
+	return createPortal(
+		<TooltipContainer x={tooltipX} y={tooltipY} contentRef={ref}>
+			{children}
+		</TooltipContainer>,
+		document.body
+	);
+}
+```
+
+```js
+export default function TooltipContainer({ children, x, y, contentRef }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				pointerEvents: "none",
+				left: 0,
+				top: 0,
+				transform: `translate3d(${x}px, ${y}px, 0)`,
+			}}
+		>
+			<div ref={contentRef} className="tooltip">
+				{children}
+			</div>
+		</div>
+	);
+}
+```
+
+```css
+.tooltip {
+	color: white;
+	background: #222;
+	border-radius: 4px;
+	padding: 4px;
+}
+```
+
+Notice that even though the `Tooltip` component has to render in two passes (first, with `tooltipHeight` initialized to `0` and then with the real measured height), you only see the final result. This is why you need `useLayoutEffect` instead of [`useEffect`](/reference/react/useEffect) for this example. Let's look at the difference in detail below.
+
+<Recipes titleText="useLayoutEffect vs useEffect" titleId="examples">
+
+#### `useLayoutEffect` blocks the browser from repainting
+
+React guarantees that the code inside `useLayoutEffect` and any state updates scheduled inside it will be processed **before the browser repaints the screen.** This lets you render the tooltip, measure it, and re-render the tooltip again without the user noticing the first extra render. In other words, `useLayoutEffect` blocks the browser from painting.
+
+```js
+import ButtonWithTooltip from "./ButtonWithTooltip.js";
+
+export default function App() {
+	return (
+		<div>
+			<ButtonWithTooltip
+				tooltipContent={
+					<div>
+						This tooltip does not fit above the button.
+						<br />
+						This is why it's displayed below instead!
+					</div>
+				}
+			>
+				Hover over me (tooltip above)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+		</div>
+	);
+}
+```
+
+```js
+import { useState, useRef } from "react";
+import Tooltip from "./Tooltip.js";
+
+export default function ButtonWithTooltip({ tooltipContent, ...rest }) {
+	const [targetRect, setTargetRect] = useState(null);
+	const buttonRef = useRef(null);
+	return (
+		<>
+			<button
+				{...rest}
+				ref={buttonRef}
+				onPointerEnter={() => {
+					const rect = buttonRef.current.getBoundingClientRect();
+					setTargetRect({
+						left: rect.left,
+						top: rect.top,
+						right: rect.right,
+						bottom: rect.bottom,
+					});
+				}}
+				onPointerLeave={() => {
+					setTargetRect(null);
+				}}
+			/>
+			{targetRect !== null && (
+				<Tooltip targetRect={targetRect}>{tooltipContent}</Tooltip>
+			)}
+		</>
+	);
+}
+```
+
+```js
+import { useRef, useLayoutEffect, useState } from "react";
+import { createPortal } from "react-dom";
+import TooltipContainer from "./TooltipContainer.js";
+
+export default function Tooltip({ children, targetRect }) {
+	const ref = useRef(null);
+	const [tooltipHeight, setTooltipHeight] = useState(0);
+
+	useLayoutEffect(() => {
+		const { height } = ref.current.getBoundingClientRect();
+		setTooltipHeight(height);
+	}, []);
+
+	let tooltipX = 0;
+	let tooltipY = 0;
+	if (targetRect !== null) {
+		tooltipX = targetRect.left;
+		tooltipY = targetRect.top - tooltipHeight;
+		if (tooltipY < 0) {
+			// It doesn't fit above, so place below.
+			tooltipY = targetRect.bottom;
+		}
+	}
+
+	return createPortal(
+		<TooltipContainer x={tooltipX} y={tooltipY} contentRef={ref}>
+			{children}
+		</TooltipContainer>,
+		document.body
+	);
+}
+```
+
+```js
+export default function TooltipContainer({ children, x, y, contentRef }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				pointerEvents: "none",
+				left: 0,
+				top: 0,
+				transform: `translate3d(${x}px, ${y}px, 0)`,
+			}}
+		>
+			<div ref={contentRef} className="tooltip">
+				{children}
+			</div>
+		</div>
+	);
+}
+```
+
+```css
+.tooltip {
+	color: white;
+	background: #222;
+	border-radius: 4px;
+	padding: 4px;
+}
+```
+
+#### `useEffect` does not block the browser
+
+Here is the same example, but with [`useEffect`](/reference/react/useEffect) instead of `useLayoutEffect`. If you're on a slower device, you might notice that sometimes the tooltip "flickers" and you briefly see its initial position before the corrected position.
+
+```js
+import ButtonWithTooltip from "./ButtonWithTooltip.js";
+
+export default function App() {
+	return (
+		<div>
+			<ButtonWithTooltip
+				tooltipContent={
+					<div>
+						This tooltip does not fit above the button.
+						<br />
+						This is why it's displayed below instead!
+					</div>
+				}
+			>
+				Hover over me (tooltip above)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+		</div>
+	);
+}
+```
+
+```js
+import { useState, useRef } from "react";
+import Tooltip from "./Tooltip.js";
+
+export default function ButtonWithTooltip({ tooltipContent, ...rest }) {
+	const [targetRect, setTargetRect] = useState(null);
+	const buttonRef = useRef(null);
+	return (
+		<>
+			<button
+				{...rest}
+				ref={buttonRef}
+				onPointerEnter={() => {
+					const rect = buttonRef.current.getBoundingClientRect();
+					setTargetRect({
+						left: rect.left,
+						top: rect.top,
+						right: rect.right,
+						bottom: rect.bottom,
+					});
+				}}
+				onPointerLeave={() => {
+					setTargetRect(null);
+				}}
+			/>
+			{targetRect !== null && (
+				<Tooltip targetRect={targetRect}>{tooltipContent}</Tooltip>
+			)}
+		</>
+	);
+}
+```
+
+```js
+import { useRef, useEffect, useState } from "react";
+import { createPortal } from "react-dom";
+import TooltipContainer from "./TooltipContainer.js";
+
+export default function Tooltip({ children, targetRect }) {
+	const ref = useRef(null);
+	const [tooltipHeight, setTooltipHeight] = useState(0);
+
+	useEffect(() => {
+		const { height } = ref.current.getBoundingClientRect();
+		setTooltipHeight(height);
+	}, []);
+
+	let tooltipX = 0;
+	let tooltipY = 0;
+	if (targetRect !== null) {
+		tooltipX = targetRect.left;
+		tooltipY = targetRect.top - tooltipHeight;
+		if (tooltipY < 0) {
+			// It doesn't fit above, so place below.
+			tooltipY = targetRect.bottom;
+		}
+	}
+
+	return createPortal(
+		<TooltipContainer x={tooltipX} y={tooltipY} contentRef={ref}>
+			{children}
+		</TooltipContainer>,
+		document.body
+	);
+}
+```
+
+```js
+export default function TooltipContainer({ children, x, y, contentRef }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				pointerEvents: "none",
+				left: 0,
+				top: 0,
+				transform: `translate3d(${x}px, ${y}px, 0)`,
+			}}
+		>
+			<div ref={contentRef} className="tooltip">
+				{children}
+			</div>
+		</div>
+	);
+}
+```
+
+```css
+.tooltip {
+	color: white;
+	background: #222;
+	border-radius: 4px;
+	padding: 4px;
+}
+```
+
+To make the bug easier to reproduce, this version adds an artificial delay during rendering. React will let the browser paint the screen before it processes the state update inside `useEffect`. As a result, the tooltip flickers:
+
+```js
+import ButtonWithTooltip from "./ButtonWithTooltip.js";
+
+export default function App() {
+	return (
+		<div>
+			<ButtonWithTooltip
+				tooltipContent={
+					<div>
+						This tooltip does not fit above the button.
+						<br />
+						This is why it's displayed below instead!
+					</div>
+				}
+			>
+				Hover over me (tooltip above)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+			<div style={{ height: 50 }} />
+			<ButtonWithTooltip
+				tooltipContent={<div>This tooltip fits above the button</div>}
+			>
+				Hover over me (tooltip below)
+			</ButtonWithTooltip>
+		</div>
+	);
+}
+```
+
+```js
+import { useState, useRef } from "react";
+import Tooltip from "./Tooltip.js";
+
+export default function ButtonWithTooltip({ tooltipContent, ...rest }) {
+	const [targetRect, setTargetRect] = useState(null);
+	const buttonRef = useRef(null);
+	return (
+		<>
+			<button
+				{...rest}
+				ref={buttonRef}
+				onPointerEnter={() => {
+					const rect = buttonRef.current.getBoundingClientRect();
+					setTargetRect({
+						left: rect.left,
+						top: rect.top,
+						right: rect.right,
+						bottom: rect.bottom,
+					});
+				}}
+				onPointerLeave={() => {
+					setTargetRect(null);
+				}}
+			/>
+			{targetRect !== null && (
+				<Tooltip targetRect={targetRect}>{tooltipContent}</Tooltip>
+			)}
+		</>
+	);
+}
+```
+
+```js
+import { useRef, useEffect, useState } from "react";
+import { createPortal } from "react-dom";
+import TooltipContainer from "./TooltipContainer.js";
+
+export default function Tooltip({ children, targetRect }) {
+	const ref = useRef(null);
+	const [tooltipHeight, setTooltipHeight] = useState(0);
+
+	// This artificially slows down rendering
+	let now = performance.now();
+	while (performance.now() - now < 100) {
+		// Do nothing for a bit...
+	}
+
+	useEffect(() => {
+		const { height } = ref.current.getBoundingClientRect();
+		setTooltipHeight(height);
+	}, []);
+
+	let tooltipX = 0;
+	let tooltipY = 0;
+	if (targetRect !== null) {
+		tooltipX = targetRect.left;
+		tooltipY = targetRect.top - tooltipHeight;
+		if (tooltipY < 0) {
+			// It doesn't fit above, so place below.
+			tooltipY = targetRect.bottom;
+		}
+	}
+
+	return createPortal(
+		<TooltipContainer x={tooltipX} y={tooltipY} contentRef={ref}>
+			{children}
+		</TooltipContainer>,
+		document.body
+	);
+}
+```
+
+```js
+export default function TooltipContainer({ children, x, y, contentRef }) {
+	return (
+		<div
+			style={{
+				position: "absolute",
+				pointerEvents: "none",
+				left: 0,
+				top: 0,
+				transform: `translate3d(${x}px, ${y}px, 0)`,
+			}}
+		>
+			<div ref={contentRef} className="tooltip">
+				{children}
+			</div>
+		</div>
+	);
+}
+```
+
+```css
+.tooltip {
+	color: white;
+	background: #222;
+	border-radius: 4px;
+	padding: 4px;
+}
+```
+
+Edit this example to `useLayoutEffect` and observe that it blocks the paint even if rendering is slowed down.
+
+</Recipes>
+
+<Note>
+
+Rendering in two passes and blocking the browser hurts performance. Try to avoid this when you can.
+
+</Note>
+
+---
+
+## Troubleshooting
+
+### I'm getting an error: "`useLayoutEffect` does nothing on the server"
+
+The purpose of `useLayoutEffect` is to let your component [use layout information for rendering:](#measuring-layout-before-the-browser-repaints-the-screen)
+
+1. Render the initial content.
+2. Measure the layout _before the browser repaints the screen._
+3. Render the final content using the layout information you've read.
+
+When you or your framework uses [server rendering](/reference/react-dom/server), your React app renders to HTML on the server for the initial render. This lets you show the initial HTML before the JavaScript code loads.
+
+The problem is that on the server, there is no layout information.
+
+In the [earlier example](#measuring-layout-before-the-browser-repaints-the-screen), the `useLayoutEffect` call in the `Tooltip` component lets it position itself correctly (either above or below content) depending on the content height. If you tried to render `Tooltip` as a part of the initial server HTML, this would be impossible to determine. On the server, there is no layout yet! So, even if you rendered it on the server, its position would "jump" on the client after the JavaScript loads and runs.
+
+Usually, components that rely on layout information don't need to render on the server anyway. For example, it probably doesn't make sense to show a `Tooltip` during the initial render. It is triggered by a client interaction.
+
+However, if you're running into this problem, you have a few different options:
+
+-   Replace `useLayoutEffect` with [`useEffect`.](/reference/react/useEffect) This tells React that it's okay to display the initial render result without blocking the paint (because the original HTML will become visible before your Effect runs).
+
+-   Alternatively, [mark your component as client-only.](/reference/react/Suspense#providing-a-fallback-for-server-errors-and-server-only-content) This tells React to replace its content up to the closest [`<Suspense>`](/reference/react/Suspense) boundary with a loading fallback (for example, a spinner or a glimmer) during server rendering.
+
+-   Alternatively, you can render a component with `useLayoutEffect` only after hydration. Keep a boolean `isMounted` state that's initialized to `false`, and set it to `true` inside a `useEffect` call. Your rendering logic can then be like `return isMounted ? <RealContent /> : <FallbackContent />`. On the server and during the hydration, the user will see `FallbackContent` which should not call `useLayoutEffect`. Then React will replace it with `RealContent` which runs on the client only and can include `useLayoutEffect` calls.
+
+-   If you synchronize your component with an external data store and rely on `useLayoutEffect` for different reasons than measuring layout, consider [`useSyncExternalStore`](/reference/react/useSyncExternalStore) instead which [supports server rendering.](/reference/react/useSyncExternalStore#adding-support-for-server-rendering)
diff --git a/docs/src/reference/use-sync-external-store.md b/docs/src/reference/use-sync-external-store.md
new file mode 100644
index 000000000..9d5425fd2
--- /dev/null
+++ b/docs/src/reference/use-sync-external-store.md
@@ -0,0 +1,429 @@
+---
+title: Use Sync External Store 🚫
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useSyncExternalStore` is a React Hook that lets you subscribe to an external store.
+
+```js
+const snapshot = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?)`
+
+Call `useSyncExternalStore` at the top level of your component to read a value from an external data store.
+
+```js
+import { useSyncExternalStore } from "react";
+import { todosStore } from "./todoStore.js";
+
+function TodosApp() {
+	const todos = useSyncExternalStore(
+		todosStore.subscribe,
+		todosStore.getSnapshot
+	);
+	// ...
+}
+```
+
+It returns the snapshot of the data in the store. You need to pass two functions as arguments:
+
+1. The `subscribe` function should subscribe to the store and return a function that unsubscribes.
+2. The `getSnapshot` function should read a snapshot of the data from the store.
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `subscribe`: A function that takes a single `callback` argument and subscribes it to the store. When the store changes, it should invoke the provided `callback`. This will cause the component to re-render. The `subscribe` function should return a function that cleans up the subscription.
+
+-   `getSnapshot`: A function that returns a snapshot of the data in the store that's needed by the component. While the store has not changed, repeated calls to `getSnapshot` must return the same value. If the store changes and the returned value is different (as compared by [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)), React re-renders the component.
+
+-   **optional** `getServerSnapshot`: A function that returns the initial snapshot of the data in the store. It will be used only during server rendering and during hydration of server-rendered content on the client. The server snapshot must be the same between the client and the server, and is usually serialized and passed from the server to the client. If you omit this argument, rendering the component on the server will throw an error.
+
+#### Returns
+
+The current snapshot of the store which you can use in your rendering logic.
+
+#### Caveats
+
+-   The store snapshot returned by `getSnapshot` must be immutable. If the underlying store has mutable data, return a new immutable snapshot if the data has changed. Otherwise, return a cached last snapshot.
+
+-   If a different `subscribe` function is passed during a re-render, React will re-subscribe to the store using the newly passed `subscribe` function. You can prevent this by declaring `subscribe` outside the component.
+
+---
+
+## Usage
+
+### Subscribing to an external store
+
+Most of your React components will only read data from their [props,](/learn/passing-props-to-a-component) [state,](/reference/react/useState) and [context.](/reference/react/useContext) However, sometimes a component needs to read some data from some store outside of React that changes over time. This includes:
+
+-   Third-party state management libraries that hold state outside of React.
+-   Browser APIs that expose a mutable value and events to subscribe to its changes.
+
+Call `useSyncExternalStore` at the top level of your component to read a value from an external data store.
+
+```js
+import { useSyncExternalStore } from "react";
+import { todosStore } from "./todoStore.js";
+
+function TodosApp() {
+	const todos = useSyncExternalStore(
+		todosStore.subscribe,
+		todosStore.getSnapshot
+	);
+	// ...
+}
+```
+
+It returns the <CodeStep step={3}>snapshot</CodeStep> of the data in the store. You need to pass two functions as arguments:
+
+1. The <CodeStep step={1}>`subscribe` function</CodeStep> should subscribe to the store and return a function that unsubscribes.
+2. The <CodeStep step={2}>`getSnapshot` function</CodeStep> should read a snapshot of the data from the store.
+
+React will use these functions to keep your component subscribed to the store and re-render it on changes.
+
+For example, in the sandbox below, `todosStore` is implemented as an external store that stores data outside of React. The `TodosApp` component connects to that external store with the `useSyncExternalStore` Hook.
+
+```js
+import { useSyncExternalStore } from "react";
+import { todosStore } from "./todoStore.js";
+
+export default function TodosApp() {
+	const todos = useSyncExternalStore(
+		todosStore.subscribe,
+		todosStore.getSnapshot
+	);
+	return (
+		<>
+			<button onClick={() => todosStore.addTodo()}>Add todo</button>
+			<hr />
+			<ul>
+				{todos.map((todo) => (
+					<li key={todo.id}>{todo.text}</li>
+				))}
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+// This is an example of a third-party store
+// that you might need to integrate with React.
+
+// If your app is fully built with React,
+// we recommend using React state instead.
+
+let nextId = 0;
+let todos = [{ id: nextId++, text: "Todo #1" }];
+let listeners = [];
+
+export const todosStore = {
+	addTodo() {
+		todos = [...todos, { id: nextId++, text: "Todo #" + nextId }];
+		emitChange();
+	},
+	subscribe(listener) {
+		listeners = [...listeners, listener];
+		return () => {
+			listeners = listeners.filter((l) => l !== listener);
+		};
+	},
+	getSnapshot() {
+		return todos;
+	},
+};
+
+function emitChange() {
+	for (let listener of listeners) {
+		listener();
+	}
+}
+```
+
+<Note>
+
+When possible, we recommend using built-in React state with [`useState`](/reference/react/useState) and [`useReducer`](/reference/react/useReducer) instead. The `useSyncExternalStore` API is mostly useful if you need to integrate with existing non-React code.
+
+</Note>
+
+---
+
+### Subscribing to a browser API
+
+Another reason to add `useSyncExternalStore` is when you want to subscribe to some value exposed by the browser that changes over time. For example, suppose that you want your component to display whether the network connection is active. The browser exposes this information via a property called [`navigator.onLine`.](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine)
+
+This value can change without React's knowledge, so you should read it with `useSyncExternalStore`.
+
+```js
+import { useSyncExternalStore } from "react";
+
+function ChatIndicator() {
+	const isOnline = useSyncExternalStore(subscribe, getSnapshot);
+	// ...
+}
+```
+
+To implement the `getSnapshot` function, read the current value from the browser API:
+
+```js
+function getSnapshot() {
+	return navigator.onLine;
+}
+```
+
+Next, you need to implement the `subscribe` function. For example, when `navigator.onLine` changes, the browser fires the [`online`](https://developer.mozilla.org/en-US/docs/Web/API/Window/online_event) and [`offline`](https://developer.mozilla.org/en-US/docs/Web/API/Window/offline_event) events on the `window` object. You need to subscribe the `callback` argument to the corresponding events, and then return a function that cleans up the subscriptions:
+
+```js
+function subscribe(callback) {
+	window.addEventListener("online", callback);
+	window.addEventListener("offline", callback);
+	return () => {
+		window.removeEventListener("online", callback);
+		window.removeEventListener("offline", callback);
+	};
+}
+```
+
+Now React knows how to read the value from the external `navigator.onLine` API and how to subscribe to its changes. Disconnect your device from the network and notice that the component re-renders in response:
+
+```js
+import { useSyncExternalStore } from "react";
+
+export default function ChatIndicator() {
+	const isOnline = useSyncExternalStore(subscribe, getSnapshot);
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+
+function getSnapshot() {
+	return navigator.onLine;
+}
+
+function subscribe(callback) {
+	window.addEventListener("online", callback);
+	window.addEventListener("offline", callback);
+	return () => {
+		window.removeEventListener("online", callback);
+		window.removeEventListener("offline", callback);
+	};
+}
+```
+
+---
+
+### Extracting the logic to a custom Hook
+
+Usually you won't write `useSyncExternalStore` directly in your components. Instead, you'll typically call it from your own custom Hook. This lets you use the same external store from different components.
+
+For example, this custom `useOnlineStatus` Hook tracks whether the network is online:
+
+```js
+import { useSyncExternalStore } from "react";
+
+export function useOnlineStatus() {
+	const isOnline = useSyncExternalStore(subscribe, getSnapshot);
+	return isOnline;
+}
+
+function getSnapshot() {
+	// ...
+}
+
+function subscribe(callback) {
+	// ...
+}
+```
+
+Now different components can call `useOnlineStatus` without repeating the underlying implementation:
+
+```js
+import { useOnlineStatus } from "./useOnlineStatus.js";
+
+function StatusBar() {
+	const isOnline = useOnlineStatus();
+	return <h1>{isOnline ? "✅ Online" : "❌ Disconnected"}</h1>;
+}
+
+function SaveButton() {
+	const isOnline = useOnlineStatus();
+
+	function handleSaveClick() {
+		console.log("✅ Progress saved");
+	}
+
+	return (
+		<button disabled={!isOnline} onClick={handleSaveClick}>
+			{isOnline ? "Save progress" : "Reconnecting..."}
+		</button>
+	);
+}
+
+export default function App() {
+	return (
+		<>
+			<SaveButton />
+			<StatusBar />
+		</>
+	);
+}
+```
+
+```js
+import { useSyncExternalStore } from "react";
+
+export function useOnlineStatus() {
+	const isOnline = useSyncExternalStore(subscribe, getSnapshot);
+	return isOnline;
+}
+
+function getSnapshot() {
+	return navigator.onLine;
+}
+
+function subscribe(callback) {
+	window.addEventListener("online", callback);
+	window.addEventListener("offline", callback);
+	return () => {
+		window.removeEventListener("online", callback);
+		window.removeEventListener("offline", callback);
+	};
+}
+```
+
+---
+
+### Adding support for server rendering
+
+If your React app uses [server rendering,](/reference/react-dom/server) your React components will also run outside the browser environment to generate the initial HTML. This creates a few challenges when connecting to an external store:
+
+-   If you're connecting to a browser-only API, it won't work because it does not exist on the server.
+-   If you're connecting to a third-party data store, you'll need its data to match between the server and client.
+
+To solve these issues, pass a `getServerSnapshot` function as the third argument to `useSyncExternalStore`:
+
+```js
+import { useSyncExternalStore } from "react";
+
+export function useOnlineStatus() {
+	const isOnline = useSyncExternalStore(
+		subscribe,
+		getSnapshot,
+		getServerSnapshot
+	);
+	return isOnline;
+}
+
+function getSnapshot() {
+	return navigator.onLine;
+}
+
+function getServerSnapshot() {
+	return true; // Always show "Online" for server-generated HTML
+}
+
+function subscribe(callback) {
+	// ...
+}
+```
+
+The `getServerSnapshot` function is similar to `getSnapshot`, but it runs only in two situations:
+
+-   It runs on the server when generating the HTML.
+-   It runs on the client during [hydration](/reference/react-dom/client/hydrateRoot), i.e. when React takes the server HTML and makes it interactive.
+
+This lets you provide the initial snapshot value which will be used before the app becomes interactive. If there is no meaningful initial value for the server rendering, omit this argument to [force rendering on the client.](/reference/react/Suspense#providing-a-fallback-for-server-errors-and-server-only-content)
+
+<Note>
+
+Make sure that `getServerSnapshot` returns the same exact data on the initial client render as it returned on the server. For example, if `getServerSnapshot` returned some prepopulated store content on the server, you need to transfer this content to the client. One way to do this is to emit a `<script>` tag during server rendering that sets a global like `window.MY_STORE_DATA`, and read from that global on the client in `getServerSnapshot`. Your external store should provide instructions on how to do that.
+
+</Note>
+
+---
+
+## Troubleshooting
+
+### I'm getting an error: "The result of `getSnapshot` should be cached"
+
+This error means your `getSnapshot` function returns a new object every time it's called, for example:
+
+```js
+function getSnapshot() {
+	// 🔴 Do not return always different objects from getSnapshot
+	return {
+		todos: myStore.todos,
+	};
+}
+```
+
+React will re-render the component if `getSnapshot` return value is different from the last time. This is why, if you always return a different value, you will enter an infinite loop and get this error.
+
+Your `getSnapshot` object should only return a different object if something has actually changed. If your store contains immutable data, you can return that data directly:
+
+```js
+function getSnapshot() {
+	// ✅ You can return immutable data
+	return myStore.todos;
+}
+```
+
+If your store data is mutable, your `getSnapshot` function should return an immutable snapshot of it. This means it _does_ need to create new objects, but it shouldn't do this for every single call. Instead, it should store the last calculated snapshot, and return the same snapshot as the last time if the data in the store has not changed. How you determine whether mutable data has changed depends on your mutable store.
+
+---
+
+### My `subscribe` function gets called after every re-render
+
+This `subscribe` function is defined _inside_ a component so it is different on every re-render:
+
+```js
+function ChatIndicator() {
+	const isOnline = useSyncExternalStore(subscribe, getSnapshot);
+
+	// 🚩 Always a different function, so React will resubscribe on every re-render
+	function subscribe() {
+		// ...
+	}
+
+	// ...
+}
+```
+
+React will resubscribe to your store if you pass a different `subscribe` function between re-renders. If this causes performance issues and you'd like to avoid resubscribing, move the `subscribe` function outside:
+
+```js
+function ChatIndicator() {
+	const isOnline = useSyncExternalStore(subscribe, getSnapshot);
+	// ...
+}
+
+// ✅ Always the same function, so React won't need to resubscribe
+function subscribe() {
+	// ...
+}
+```
+
+Alternatively, wrap `subscribe` into [`useCallback`](/reference/react/useCallback) to only resubscribe when some argument changes:
+
+```js
+function ChatIndicator({ userId }) {
+	const isOnline = useSyncExternalStore(subscribe, getSnapshot);
+
+	// ✅ Same function as long as userId doesn't change
+	const subscribe = useCallback(() => {
+		// ...
+	}, [userId]);
+
+	// ...
+}
+```
diff --git a/docs/src/reference/use-transition.md b/docs/src/reference/use-transition.md
new file mode 100644
index 000000000..8279f7afe
--- /dev/null
+++ b/docs/src/reference/use-transition.md
@@ -0,0 +1,1587 @@
+---
+title: Use Transition 🚫
+---
+
+## Overview
+
+<p class="intro" markdown>
+
+`useTransition` is a React Hook that lets you update the state without blocking the UI.
+
+```js
+const [isPending, startTransition] = useTransition();
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useTransition()`
+
+Call `useTransition` at the top level of your component to mark some state updates as transitions.
+
+```js
+import { useTransition } from "react";
+
+function TabContainer() {
+	const [isPending, startTransition] = useTransition();
+	// ...
+}
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+`useTransition` does not take any parameters.
+
+#### Returns
+
+`useTransition` returns an array with exactly two items:
+
+1. The `isPending` flag that tells you whether there is a pending transition.
+2. The [`startTransition` function](#starttransition) that lets you mark a state update as a transition.
+
+---
+
+### `startTransition` function
+
+The `startTransition` function returned by `useTransition` lets you mark a state update as a transition.
+
+```js
+function TabContainer() {
+	const [isPending, startTransition] = useTransition();
+	const [tab, setTab] = useState("about");
+
+	function selectTab(nextTab) {
+		startTransition(() => {
+			setTab(nextTab);
+		});
+	}
+	// ...
+}
+```
+
+#### Parameters
+
+-   `scope`: A function that updates some state by calling one or more [`set` functions.](/reference/react/useState#setstate) React immediately calls `scope` with no parameters and marks all state updates scheduled synchronously during the `scope` function call as transitions. They will be [non-blocking](#marking-a-state-update-as-a-non-blocking-transition) and [will not display unwanted loading indicators.](#preventing-unwanted-loading-indicators)
+
+#### Returns
+
+`startTransition` does not return anything.
+
+#### Caveats
+
+-   `useTransition` is a Hook, so it can only be called inside components or custom Hooks. If you need to start a transition somewhere else (for example, from a data library), call the standalone [`startTransition`](/reference/react/startTransition) instead.
+
+-   You can wrap an update into a transition only if you have access to the `set` function of that state. If you want to start a transition in response to some prop or a custom Hook value, try [`useDeferredValue`](/reference/react/useDeferredValue) instead.
+
+-   The function you pass to `startTransition` must be synchronous. React immediately executes this function, marking all state updates that happen while it executes as transitions. If you try to perform more state updates later (for example, in a timeout), they won't be marked as transitions.
+
+-   A state update marked as a transition will be interrupted by other state updates. For example, if you update a chart component inside a transition, but then start typing into an input while the chart is in the middle of a re-render, React will restart the rendering work on the chart component after handling the input update.
+
+-   Transition updates can't be used to control text inputs.
+
+-   If there are multiple ongoing transitions, React currently batches them together. This is a limitation that will likely be removed in a future release.
+
+---
+
+## Usage
+
+### Marking a state update as a non-blocking transition
+
+Call `useTransition` at the top level of your component to mark state updates as non-blocking _transitions_.
+
+```js
+import { useState, useTransition } from "react";
+
+function TabContainer() {
+	const [isPending, startTransition] = useTransition();
+	// ...
+}
+```
+
+`useTransition` returns an array with exactly two items:
+
+1. The <CodeStep step={1}>`isPending` flag</CodeStep> that tells you whether there is a pending transition.
+2. The <CodeStep step={2}>`startTransition` function</CodeStep> that lets you mark a state update as a transition.
+
+You can then mark a state update as a transition like this:
+
+```js
+function TabContainer() {
+	const [isPending, startTransition] = useTransition();
+	const [tab, setTab] = useState("about");
+
+	function selectTab(nextTab) {
+		startTransition(() => {
+			setTab(nextTab);
+		});
+	}
+	// ...
+}
+```
+
+Transitions let you keep the user interface updates responsive even on slow devices.
+
+With a transition, your UI stays responsive in the middle of a re-render. For example, if the user clicks a tab but then change their mind and click another tab, they can do that without waiting for the first re-render to finish.
+
+<Recipes titleText="The difference between useTransition and regular state updates" titleId="examples">
+
+#### Updating the current tab in a transition
+
+In this example, the "Posts" tab is **artificially slowed down** so that it takes at least a second to render.
+
+Click "Posts" and then immediately click "Contact". Notice that this interrupts the slow render of "Posts". The "Contact" tab shows immediately. Because this state update is marked as a transition, a slow re-render did not freeze the user interface.
+
+```js
+import { useState, useTransition } from "react";
+import TabButton from "./TabButton.js";
+import AboutTab from "./AboutTab.js";
+import PostsTab from "./PostsTab.js";
+import ContactTab from "./ContactTab.js";
+
+export default function TabContainer() {
+	const [isPending, startTransition] = useTransition();
+	const [tab, setTab] = useState("about");
+
+	function selectTab(nextTab) {
+		startTransition(() => {
+			setTab(nextTab);
+		});
+	}
+
+	return (
+		<>
+			<TabButton
+				isActive={tab === "about"}
+				onClick={() => selectTab("about")}
+			>
+				About
+			</TabButton>
+			<TabButton
+				isActive={tab === "posts"}
+				onClick={() => selectTab("posts")}
+			>
+				Posts (slow)
+			</TabButton>
+			<TabButton
+				isActive={tab === "contact"}
+				onClick={() => selectTab("contact")}
+			>
+				Contact
+			</TabButton>
+			<hr />
+			{tab === "about" && <AboutTab />}
+			{tab === "posts" && <PostsTab />}
+			{tab === "contact" && <ContactTab />}
+		</>
+	);
+}
+```
+
+```js
+import { useTransition } from "react";
+
+export default function TabButton({ children, isActive, onClick }) {
+	if (isActive) {
+		return <b>{children}</b>;
+	}
+	return (
+		<button
+			onClick={() => {
+				onClick();
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+```js
+export default function AboutTab() {
+	return <p>Welcome to my profile!</p>;
+}
+```
+
+```js
+import { memo } from "react";
+
+const PostsTab = memo(function PostsTab() {
+	// Log once. The actual slowdown is inside SlowPost.
+	console.log("[ARTIFICIALLY SLOW] Rendering 500 <SlowPost />");
+
+	let items = [];
+	for (let i = 0; i < 500; i++) {
+		items.push(<SlowPost key={i} index={i} />);
+	}
+	return <ul className="items">{items}</ul>;
+});
+
+function SlowPost({ index }) {
+	let startTime = performance.now();
+	while (performance.now() - startTime < 1) {
+		// Do nothing for 1 ms per item to emulate extremely slow code
+	}
+
+	return <li className="item">Post #{index + 1}</li>;
+}
+
+export default PostsTab;
+```
+
+```js
+export default function ContactTab() {
+	return (
+		<>
+			<p>You can find me online here:</p>
+			<ul>
+				<li>admin@mysite.com</li>
+				<li>+123456789</li>
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+b {
+	display: inline-block;
+	margin-right: 10px;
+}
+```
+
+#### Updating the current tab without a transition
+
+In this example, the "Posts" tab is also **artificially slowed down** so that it takes at least a second to render. Unlike in the previous example, this state update is **not a transition.**
+
+Click "Posts" and then immediately click "Contact". Notice that the app freezes while rendering the slowed down tab, and the UI becomes unresponsive. This state update is not a transition, so a slow re-render freezed the user interface.
+
+```js
+import { useState } from "react";
+import TabButton from "./TabButton.js";
+import AboutTab from "./AboutTab.js";
+import PostsTab from "./PostsTab.js";
+import ContactTab from "./ContactTab.js";
+
+export default function TabContainer() {
+	const [tab, setTab] = useState("about");
+
+	function selectTab(nextTab) {
+		setTab(nextTab);
+	}
+
+	return (
+		<>
+			<TabButton
+				isActive={tab === "about"}
+				onClick={() => selectTab("about")}
+			>
+				About
+			</TabButton>
+			<TabButton
+				isActive={tab === "posts"}
+				onClick={() => selectTab("posts")}
+			>
+				Posts (slow)
+			</TabButton>
+			<TabButton
+				isActive={tab === "contact"}
+				onClick={() => selectTab("contact")}
+			>
+				Contact
+			</TabButton>
+			<hr />
+			{tab === "about" && <AboutTab />}
+			{tab === "posts" && <PostsTab />}
+			{tab === "contact" && <ContactTab />}
+		</>
+	);
+}
+```
+
+```js
+import { useTransition } from "react";
+
+export default function TabButton({ children, isActive, onClick }) {
+	if (isActive) {
+		return <b>{children}</b>;
+	}
+	return (
+		<button
+			onClick={() => {
+				onClick();
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+```js
+export default function AboutTab() {
+	return <p>Welcome to my profile!</p>;
+}
+```
+
+```js
+import { memo } from "react";
+
+const PostsTab = memo(function PostsTab() {
+	// Log once. The actual slowdown is inside SlowPost.
+	console.log("[ARTIFICIALLY SLOW] Rendering 500 <SlowPost />");
+
+	let items = [];
+	for (let i = 0; i < 500; i++) {
+		items.push(<SlowPost key={i} index={i} />);
+	}
+	return <ul className="items">{items}</ul>;
+});
+
+function SlowPost({ index }) {
+	let startTime = performance.now();
+	while (performance.now() - startTime < 1) {
+		// Do nothing for 1 ms per item to emulate extremely slow code
+	}
+
+	return <li className="item">Post #{index + 1}</li>;
+}
+
+export default PostsTab;
+```
+
+```js
+export default function ContactTab() {
+	return (
+		<>
+			<p>You can find me online here:</p>
+			<ul>
+				<li>admin@mysite.com</li>
+				<li>+123456789</li>
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+b {
+	display: inline-block;
+	margin-right: 10px;
+}
+```
+
+</Recipes>
+
+---
+
+### Updating the parent component in a transition
+
+You can update a parent component's state from the `useTransition` call, too. For example, this `TabButton` component wraps its `onClick` logic in a transition:
+
+```js
+export default function TabButton({ children, isActive, onClick }) {
+	const [isPending, startTransition] = useTransition();
+	if (isActive) {
+		return <b>{children}</b>;
+	}
+	return (
+		<button
+			onClick={() => {
+				startTransition(() => {
+					onClick();
+				});
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+Because the parent component updates its state inside the `onClick` event handler, that state update gets marked as a transition. This is why, like in the earlier example, you can click on "Posts" and then immediately click "Contact". Updating the selected tab is marked as a transition, so it does not block user interactions.
+
+```js
+import { useState } from "react";
+import TabButton from "./TabButton.js";
+import AboutTab from "./AboutTab.js";
+import PostsTab from "./PostsTab.js";
+import ContactTab from "./ContactTab.js";
+
+export default function TabContainer() {
+	const [tab, setTab] = useState("about");
+	return (
+		<>
+			<TabButton
+				isActive={tab === "about"}
+				onClick={() => setTab("about")}
+			>
+				About
+			</TabButton>
+			<TabButton
+				isActive={tab === "posts"}
+				onClick={() => setTab("posts")}
+			>
+				Posts (slow)
+			</TabButton>
+			<TabButton
+				isActive={tab === "contact"}
+				onClick={() => setTab("contact")}
+			>
+				Contact
+			</TabButton>
+			<hr />
+			{tab === "about" && <AboutTab />}
+			{tab === "posts" && <PostsTab />}
+			{tab === "contact" && <ContactTab />}
+		</>
+	);
+}
+```
+
+```js
+import { useTransition } from "react";
+
+export default function TabButton({ children, isActive, onClick }) {
+	const [isPending, startTransition] = useTransition();
+	if (isActive) {
+		return <b>{children}</b>;
+	}
+	return (
+		<button
+			onClick={() => {
+				startTransition(() => {
+					onClick();
+				});
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+```js
+export default function AboutTab() {
+	return <p>Welcome to my profile!</p>;
+}
+```
+
+```js
+import { memo } from "react";
+
+const PostsTab = memo(function PostsTab() {
+	// Log once. The actual slowdown is inside SlowPost.
+	console.log("[ARTIFICIALLY SLOW] Rendering 500 <SlowPost />");
+
+	let items = [];
+	for (let i = 0; i < 500; i++) {
+		items.push(<SlowPost key={i} index={i} />);
+	}
+	return <ul className="items">{items}</ul>;
+});
+
+function SlowPost({ index }) {
+	let startTime = performance.now();
+	while (performance.now() - startTime < 1) {
+		// Do nothing for 1 ms per item to emulate extremely slow code
+	}
+
+	return <li className="item">Post #{index + 1}</li>;
+}
+
+export default PostsTab;
+```
+
+```js
+export default function ContactTab() {
+	return (
+		<>
+			<p>You can find me online here:</p>
+			<ul>
+				<li>admin@mysite.com</li>
+				<li>+123456789</li>
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+b {
+	display: inline-block;
+	margin-right: 10px;
+}
+```
+
+---
+
+### Displaying a pending visual state during the transition
+
+You can use the `isPending` boolean value returned by `useTransition` to indicate to the user that a transition is in progress. For example, the tab button can have a special "pending" visual state:
+
+```js
+function TabButton({ children, isActive, onClick }) {
+  const [isPending, startTransition] = useTransition();
+  // ...
+  if (isPending) {
+    return <b className="pending">{children}</b>;
+  }
+  // ...
+```
+
+Notice how clicking "Posts" now feels more responsive because the tab button itself updates right away:
+
+```js
+import { useState } from "react";
+import TabButton from "./TabButton.js";
+import AboutTab from "./AboutTab.js";
+import PostsTab from "./PostsTab.js";
+import ContactTab from "./ContactTab.js";
+
+export default function TabContainer() {
+	const [tab, setTab] = useState("about");
+	return (
+		<>
+			<TabButton
+				isActive={tab === "about"}
+				onClick={() => setTab("about")}
+			>
+				About
+			</TabButton>
+			<TabButton
+				isActive={tab === "posts"}
+				onClick={() => setTab("posts")}
+			>
+				Posts (slow)
+			</TabButton>
+			<TabButton
+				isActive={tab === "contact"}
+				onClick={() => setTab("contact")}
+			>
+				Contact
+			</TabButton>
+			<hr />
+			{tab === "about" && <AboutTab />}
+			{tab === "posts" && <PostsTab />}
+			{tab === "contact" && <ContactTab />}
+		</>
+	);
+}
+```
+
+```js
+import { useTransition } from "react";
+
+export default function TabButton({ children, isActive, onClick }) {
+	const [isPending, startTransition] = useTransition();
+	if (isActive) {
+		return <b>{children}</b>;
+	}
+	if (isPending) {
+		return <b className="pending">{children}</b>;
+	}
+	return (
+		<button
+			onClick={() => {
+				startTransition(() => {
+					onClick();
+				});
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+```js
+export default function AboutTab() {
+	return <p>Welcome to my profile!</p>;
+}
+```
+
+```js
+import { memo } from "react";
+
+const PostsTab = memo(function PostsTab() {
+	// Log once. The actual slowdown is inside SlowPost.
+	console.log("[ARTIFICIALLY SLOW] Rendering 500 <SlowPost />");
+
+	let items = [];
+	for (let i = 0; i < 500; i++) {
+		items.push(<SlowPost key={i} index={i} />);
+	}
+	return <ul className="items">{items}</ul>;
+});
+
+function SlowPost({ index }) {
+	let startTime = performance.now();
+	while (performance.now() - startTime < 1) {
+		// Do nothing for 1 ms per item to emulate extremely slow code
+	}
+
+	return <li className="item">Post #{index + 1}</li>;
+}
+
+export default PostsTab;
+```
+
+```js
+export default function ContactTab() {
+	return (
+		<>
+			<p>You can find me online here:</p>
+			<ul>
+				<li>admin@mysite.com</li>
+				<li>+123456789</li>
+			</ul>
+		</>
+	);
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+b {
+	display: inline-block;
+	margin-right: 10px;
+}
+.pending {
+	color: #777;
+}
+```
+
+---
+
+### Preventing unwanted loading indicators
+
+In this example, the `PostsTab` component fetches some data using a [Suspense-enabled](/reference/react/Suspense) data source. When you click the "Posts" tab, the `PostsTab` component _suspends_, causing the closest loading fallback to appear:
+
+```js
+import { Suspense, useState } from "react";
+import TabButton from "./TabButton.js";
+import AboutTab from "./AboutTab.js";
+import PostsTab from "./PostsTab.js";
+import ContactTab from "./ContactTab.js";
+
+export default function TabContainer() {
+	const [tab, setTab] = useState("about");
+	return (
+		<Suspense fallback={<h1>🌀 Loading...</h1>}>
+			<TabButton
+				isActive={tab === "about"}
+				onClick={() => setTab("about")}
+			>
+				About
+			</TabButton>
+			<TabButton
+				isActive={tab === "posts"}
+				onClick={() => setTab("posts")}
+			>
+				Posts
+			</TabButton>
+			<TabButton
+				isActive={tab === "contact"}
+				onClick={() => setTab("contact")}
+			>
+				Contact
+			</TabButton>
+			<hr />
+			{tab === "about" && <AboutTab />}
+			{tab === "posts" && <PostsTab />}
+			{tab === "contact" && <ContactTab />}
+		</Suspense>
+	);
+}
+```
+
+```js
+export default function TabButton({ children, isActive, onClick }) {
+	if (isActive) {
+		return <b>{children}</b>;
+	}
+	return (
+		<button
+			onClick={() => {
+				onClick();
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+```js
+export default function AboutTab() {
+	return <p>Welcome to my profile!</p>;
+}
+```
+
+```js
+import { fetchData } from "./data.js";
+
+// Note: this component is written using an experimental API
+// that's not yet available in stable versions of React.
+
+// For a realistic example you can follow today, try a framework
+// that's integrated with Suspense, like Relay or Next.js.
+
+function PostsTab() {
+	const posts = use(fetchData("/posts"));
+	return (
+		<ul className="items">
+			{posts.map((post) => (
+				<Post key={post.id} title={post.title} />
+			))}
+		</ul>
+	);
+}
+
+function Post({ title }) {
+	return <li className="item">{title}</li>;
+}
+
+export default PostsTab;
+
+// This is a workaround for a bug to get the demo running.
+// TODO: replace with real implementation when the bug is fixed.
+function use(promise) {
+	if (promise.status === "fulfilled") {
+		return promise.value;
+	} else if (promise.status === "rejected") {
+		throw promise.reason;
+	} else if (promise.status === "pending") {
+		throw promise;
+	} else {
+		promise.status = "pending";
+		promise.then(
+			(result) => {
+				promise.status = "fulfilled";
+				promise.value = result;
+			},
+			(reason) => {
+				promise.status = "rejected";
+				promise.reason = reason;
+			}
+		);
+		throw promise;
+	}
+}
+```
+
+```js
+export default function ContactTab() {
+	return (
+		<>
+			<p>You can find me online here:</p>
+			<ul>
+				<li>admin@mysite.com</li>
+				<li>+123456789</li>
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+// Note: the way you would do data fetching depends on
+// the framework that you use together with Suspense.
+// Normally, the caching logic would be inside a framework.
+
+let cache = new Map();
+
+export function fetchData(url) {
+	if (!cache.has(url)) {
+		cache.set(url, getData(url));
+	}
+	return cache.get(url);
+}
+
+async function getData(url) {
+	if (url.startsWith("/posts")) {
+		return await getPosts();
+	} else {
+		throw Error("Not implemented");
+	}
+}
+
+async function getPosts() {
+	// Add a fake delay to make waiting noticeable.
+	await new Promise((resolve) => {
+		setTimeout(resolve, 1000);
+	});
+	let posts = [];
+	for (let i = 0; i < 500; i++) {
+		posts.push({
+			id: i,
+			title: "Post #" + (i + 1),
+		});
+	}
+	return posts;
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+b {
+	display: inline-block;
+	margin-right: 10px;
+}
+.pending {
+	color: #777;
+}
+```
+
+Hiding the entire tab container to show a loading indicator leads to a jarring user experience. If you add `useTransition` to `TabButton`, you can instead indicate display the pending state in the tab button instead.
+
+Notice that clicking "Posts" no longer replaces the entire tab container with a spinner:
+
+```js
+import { Suspense, useState } from "react";
+import TabButton from "./TabButton.js";
+import AboutTab from "./AboutTab.js";
+import PostsTab from "./PostsTab.js";
+import ContactTab from "./ContactTab.js";
+
+export default function TabContainer() {
+	const [tab, setTab] = useState("about");
+	return (
+		<Suspense fallback={<h1>🌀 Loading...</h1>}>
+			<TabButton
+				isActive={tab === "about"}
+				onClick={() => setTab("about")}
+			>
+				About
+			</TabButton>
+			<TabButton
+				isActive={tab === "posts"}
+				onClick={() => setTab("posts")}
+			>
+				Posts
+			</TabButton>
+			<TabButton
+				isActive={tab === "contact"}
+				onClick={() => setTab("contact")}
+			>
+				Contact
+			</TabButton>
+			<hr />
+			{tab === "about" && <AboutTab />}
+			{tab === "posts" && <PostsTab />}
+			{tab === "contact" && <ContactTab />}
+		</Suspense>
+	);
+}
+```
+
+```js
+import { useTransition } from "react";
+
+export default function TabButton({ children, isActive, onClick }) {
+	const [isPending, startTransition] = useTransition();
+	if (isActive) {
+		return <b>{children}</b>;
+	}
+	if (isPending) {
+		return <b className="pending">{children}</b>;
+	}
+	return (
+		<button
+			onClick={() => {
+				startTransition(() => {
+					onClick();
+				});
+			}}
+		>
+			{children}
+		</button>
+	);
+}
+```
+
+```js
+export default function AboutTab() {
+	return <p>Welcome to my profile!</p>;
+}
+```
+
+```js
+import { fetchData } from "./data.js";
+
+// Note: this component is written using an experimental API
+// that's not yet available in stable versions of React.
+
+// For a realistic example you can follow today, try a framework
+// that's integrated with Suspense, like Relay or Next.js.
+
+function PostsTab() {
+	const posts = use(fetchData("/posts"));
+	return (
+		<ul className="items">
+			{posts.map((post) => (
+				<Post key={post.id} title={post.title} />
+			))}
+		</ul>
+	);
+}
+
+function Post({ title }) {
+	return <li className="item">{title}</li>;
+}
+
+export default PostsTab;
+
+// This is a workaround for a bug to get the demo running.
+// TODO: replace with real implementation when the bug is fixed.
+function use(promise) {
+	if (promise.status === "fulfilled") {
+		return promise.value;
+	} else if (promise.status === "rejected") {
+		throw promise.reason;
+	} else if (promise.status === "pending") {
+		throw promise;
+	} else {
+		promise.status = "pending";
+		promise.then(
+			(result) => {
+				promise.status = "fulfilled";
+				promise.value = result;
+			},
+			(reason) => {
+				promise.status = "rejected";
+				promise.reason = reason;
+			}
+		);
+		throw promise;
+	}
+}
+```
+
+```js
+export default function ContactTab() {
+	return (
+		<>
+			<p>You can find me online here:</p>
+			<ul>
+				<li>admin@mysite.com</li>
+				<li>+123456789</li>
+			</ul>
+		</>
+	);
+}
+```
+
+```js
+// Note: the way you would do data fetching depends on
+// the framework that you use together with Suspense.
+// Normally, the caching logic would be inside a framework.
+
+let cache = new Map();
+
+export function fetchData(url) {
+	if (!cache.has(url)) {
+		cache.set(url, getData(url));
+	}
+	return cache.get(url);
+}
+
+async function getData(url) {
+	if (url.startsWith("/posts")) {
+		return await getPosts();
+	} else {
+		throw Error("Not implemented");
+	}
+}
+
+async function getPosts() {
+	// Add a fake delay to make waiting noticeable.
+	await new Promise((resolve) => {
+		setTimeout(resolve, 1000);
+	});
+	let posts = [];
+	for (let i = 0; i < 500; i++) {
+		posts.push({
+			id: i,
+			title: "Post #" + (i + 1),
+		});
+	}
+	return posts;
+}
+```
+
+```css
+button {
+	margin-right: 10px;
+}
+b {
+	display: inline-block;
+	margin-right: 10px;
+}
+.pending {
+	color: #777;
+}
+```
+
+[Read more about using transitions with Suspense.](/reference/react/Suspense#preventing-already-revealed-content-from-hiding)
+
+<Note>
+
+Transitions will only "wait" long enough to avoid hiding _already revealed_ content (like the tab container). If the Posts tab had a [nested `<Suspense>` boundary,](/reference/react/Suspense#revealing-nested-content-as-it-loads) the transition would not "wait" for it.
+
+</Note>
+
+---
+
+### Building a Suspense-enabled router
+
+If you're building a React framework or a router, we recommend marking page navigations as transitions.
+
+```js
+function Router() {
+  const [page, setPage] = useState('/');
+  const [isPending, startTransition] = useTransition();
+
+  function navigate(url) {
+    startTransition(() => {
+      setPage(url);
+    });
+  }
+  // ...
+```
+
+This is recommended for two reasons:
+
+-   [Transitions are interruptible,](#marking-a-state-update-as-a-non-blocking-transition) which lets the user click away without waiting for the re-render to complete.
+-   [Transitions prevent unwanted loading indicators,](#preventing-unwanted-loading-indicators) which lets the user avoid jarring jumps on navigation.
+
+Here is a tiny simplified router example using transitions for navigations.
+
+```json package.json hidden
+{
+	"dependencies": {
+		"react": "experimental",
+		"react-dom": "experimental"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { Suspense, useState, useTransition } from "react";
+import IndexPage from "./IndexPage.js";
+import ArtistPage from "./ArtistPage.js";
+import Layout from "./Layout.js";
+
+export default function App() {
+	return (
+		<Suspense fallback={<BigSpinner />}>
+			<Router />
+		</Suspense>
+	);
+}
+
+function Router() {
+	const [page, setPage] = useState("/");
+	const [isPending, startTransition] = useTransition();
+
+	function navigate(url) {
+		startTransition(() => {
+			setPage(url);
+		});
+	}
+
+	let content;
+	if (page === "/") {
+		content = <IndexPage navigate={navigate} />;
+	} else if (page === "/the-beatles") {
+		content = (
+			<ArtistPage
+				artist={{
+					id: "the-beatles",
+					name: "The Beatles",
+				}}
+			/>
+		);
+	}
+	return <Layout isPending={isPending}>{content}</Layout>;
+}
+
+function BigSpinner() {
+	return <h2>🌀 Loading...</h2>;
+}
+```
+
+```js
+export default function Layout({ children, isPending }) {
+	return (
+		<div className="layout">
+			<section
+				className="header"
+				style={{
+					opacity: isPending ? 0.7 : 1,
+				}}
+			>
+				Music Browser
+			</section>
+			<main>{children}</main>
+		</div>
+	);
+}
+```
+
+```js
+export default function IndexPage({ navigate }) {
+	return (
+		<button onClick={() => navigate("/the-beatles")}>
+			Open The Beatles artist page
+		</button>
+	);
+}
+```
+
+```js
+import { Suspense } from "react";
+import Albums from "./Albums.js";
+import Biography from "./Biography.js";
+import Panel from "./Panel.js";
+
+export default function ArtistPage({ artist }) {
+	return (
+		<>
+			<h1>{artist.name}</h1>
+			<Biography artistId={artist.id} />
+			<Suspense fallback={<AlbumsGlimmer />}>
+				<Panel>
+					<Albums artistId={artist.id} />
+				</Panel>
+			</Suspense>
+		</>
+	);
+}
+
+function AlbumsGlimmer() {
+	return (
+		<div className="glimmer-panel">
+			<div className="glimmer-line" />
+			<div className="glimmer-line" />
+			<div className="glimmer-line" />
+		</div>
+	);
+}
+```
+
+```js
+import { fetchData } from "./data.js";
+
+// Note: this component is written using an experimental API
+// that's not yet available in stable versions of React.
+
+// For a realistic example you can follow today, try a framework
+// that's integrated with Suspense, like Relay or Next.js.
+
+export default function Albums({ artistId }) {
+	const albums = use(fetchData(`/${artistId}/albums`));
+	return (
+		<ul>
+			{albums.map((album) => (
+				<li key={album.id}>
+					{album.title} ({album.year})
+				</li>
+			))}
+		</ul>
+	);
+}
+
+// This is a workaround for a bug to get the demo running.
+// TODO: replace with real implementation when the bug is fixed.
+function use(promise) {
+	if (promise.status === "fulfilled") {
+		return promise.value;
+	} else if (promise.status === "rejected") {
+		throw promise.reason;
+	} else if (promise.status === "pending") {
+		throw promise;
+	} else {
+		promise.status = "pending";
+		promise.then(
+			(result) => {
+				promise.status = "fulfilled";
+				promise.value = result;
+			},
+			(reason) => {
+				promise.status = "rejected";
+				promise.reason = reason;
+			}
+		);
+		throw promise;
+	}
+}
+```
+
+```js
+import { fetchData } from "./data.js";
+
+// Note: this component is written using an experimental API
+// that's not yet available in stable versions of React.
+
+// For a realistic example you can follow today, try a framework
+// that's integrated with Suspense, like Relay or Next.js.
+
+export default function Biography({ artistId }) {
+	const bio = use(fetchData(`/${artistId}/bio`));
+	return (
+		<section>
+			<p className="bio">{bio}</p>
+		</section>
+	);
+}
+
+// This is a workaround for a bug to get the demo running.
+// TODO: replace with real implementation when the bug is fixed.
+function use(promise) {
+	if (promise.status === "fulfilled") {
+		return promise.value;
+	} else if (promise.status === "rejected") {
+		throw promise.reason;
+	} else if (promise.status === "pending") {
+		throw promise;
+	} else {
+		promise.status = "pending";
+		promise.then(
+			(result) => {
+				promise.status = "fulfilled";
+				promise.value = result;
+			},
+			(reason) => {
+				promise.status = "rejected";
+				promise.reason = reason;
+			}
+		);
+		throw promise;
+	}
+}
+```
+
+```js
+export default function Panel({ children }) {
+	return <section className="panel">{children}</section>;
+}
+```
+
+```js
+// Note: the way you would do data fetching depends on
+// the framework that you use together with Suspense.
+// Normally, the caching logic would be inside a framework.
+
+let cache = new Map();
+
+export function fetchData(url) {
+	if (!cache.has(url)) {
+		cache.set(url, getData(url));
+	}
+	return cache.get(url);
+}
+
+async function getData(url) {
+	if (url === "/the-beatles/albums") {
+		return await getAlbums();
+	} else if (url === "/the-beatles/bio") {
+		return await getBio();
+	} else {
+		throw Error("Not implemented");
+	}
+}
+
+async function getBio() {
+	// Add a fake delay to make waiting noticeable.
+	await new Promise((resolve) => {
+		setTimeout(resolve, 500);
+	});
+
+	return `The Beatles were an English rock band, 
+    formed in Liverpool in 1960, that comprised 
+    John Lennon, Paul McCartney, George Harrison 
+    and Ringo Starr.`;
+}
+
+async function getAlbums() {
+	// Add a fake delay to make waiting noticeable.
+	await new Promise((resolve) => {
+		setTimeout(resolve, 3000);
+	});
+
+	return [
+		{
+			id: 13,
+			title: "Let It Be",
+			year: 1970,
+		},
+		{
+			id: 12,
+			title: "Abbey Road",
+			year: 1969,
+		},
+		{
+			id: 11,
+			title: "Yellow Submarine",
+			year: 1969,
+		},
+		{
+			id: 10,
+			title: "The Beatles",
+			year: 1968,
+		},
+		{
+			id: 9,
+			title: "Magical Mystery Tour",
+			year: 1967,
+		},
+		{
+			id: 8,
+			title: "Sgt. Pepper's Lonely Hearts Club Band",
+			year: 1967,
+		},
+		{
+			id: 7,
+			title: "Revolver",
+			year: 1966,
+		},
+		{
+			id: 6,
+			title: "Rubber Soul",
+			year: 1965,
+		},
+		{
+			id: 5,
+			title: "Help!",
+			year: 1965,
+		},
+		{
+			id: 4,
+			title: "Beatles For Sale",
+			year: 1964,
+		},
+		{
+			id: 3,
+			title: "A Hard Day's Night",
+			year: 1964,
+		},
+		{
+			id: 2,
+			title: "With The Beatles",
+			year: 1963,
+		},
+		{
+			id: 1,
+			title: "Please Please Me",
+			year: 1963,
+		},
+	];
+}
+```
+
+```css
+main {
+	min-height: 200px;
+	padding: 10px;
+}
+
+.layout {
+	border: 1px solid black;
+}
+
+.header {
+	background: #222;
+	padding: 10px;
+	text-align: center;
+	color: white;
+}
+
+.bio {
+	font-style: italic;
+}
+
+.panel {
+	border: 1px solid #aaa;
+	border-radius: 6px;
+	margin-top: 20px;
+	padding: 10px;
+}
+
+.glimmer-panel {
+	border: 1px dashed #aaa;
+	background: linear-gradient(
+		90deg,
+		rgba(221, 221, 221, 1) 0%,
+		rgba(255, 255, 255, 1) 100%
+	);
+	border-radius: 6px;
+	margin-top: 20px;
+	padding: 10px;
+}
+
+.glimmer-line {
+	display: block;
+	width: 60%;
+	height: 20px;
+	margin: 10px;
+	border-radius: 4px;
+	background: #f0f0f0;
+}
+```
+
+<Note>
+
+[Suspense-enabled](/reference/react/Suspense) routers are expected to wrap the navigation updates into transitions by default.
+
+</Note>
+
+---
+
+## Troubleshooting
+
+### Updating an input in a transition doesn't work
+
+You can't use a transition for a state variable that controls an input:
+
+```js
+const [text, setText] = useState("");
+// ...
+function handleChange(e) {
+	// ❌ Can't use transitions for controlled input state
+	startTransition(() => {
+		setText(e.target.value);
+	});
+}
+// ...
+return <input value={text} onChange={handleChange} />;
+```
+
+This is because transitions are non-blocking, but updating an input in response to the change event should happen synchronously. If you want to run a transition in response to typing, you have two options:
+
+1. You can declare two separate state variables: one for the input state (which always updates synchronously), and one that you will update in a transition. This lets you control the input using the synchronous state, and pass the transition state variable (which will "lag behind" the input) to the rest of your rendering logic.
+2. Alternatively, you can have one state variable, and add [`useDeferredValue`](/reference/react/useDeferredValue) which will "lag behind" the real value. It will trigger non-blocking re-renders to "catch up" with the new value automatically.
+
+---
+
+### React doesn't treat my state update as a transition
+
+When you wrap a state update in a transition, make sure that it happens _during_ the `startTransition` call:
+
+```js
+startTransition(() => {
+	// ✅ Setting state *during* startTransition call
+	setPage("/about");
+});
+```
+
+The function you pass to `startTransition` must be synchronous.
+
+You can't mark an update as a transition like this:
+
+```js
+startTransition(() => {
+	// ❌ Setting state *after* startTransition call
+	setTimeout(() => {
+		setPage("/about");
+	}, 1000);
+});
+```
+
+Instead, you could do this:
+
+```js
+setTimeout(() => {
+	startTransition(() => {
+		// ✅ Setting state *during* startTransition call
+		setPage("/about");
+	});
+}, 1000);
+```
+
+Similarly, you can't mark an update as a transition like this:
+
+```js
+startTransition(async () => {
+	await someAsyncFunction();
+	// ❌ Setting state *after* startTransition call
+	setPage("/about");
+});
+```
+
+However, this works instead:
+
+```js
+await someAsyncFunction();
+startTransition(() => {
+	// ✅ Setting state *during* startTransition call
+	setPage("/about");
+});
+```
+
+---
+
+### I want to call `useTransition` from outside a component
+
+You can't call `useTransition` outside a component because it's a Hook. In this case, use the standalone [`startTransition`](/reference/react/startTransition) method instead. It works the same way, but it doesn't provide the `isPending` indicator.
+
+---
+
+### The function I pass to `startTransition` executes immediately
+
+If you run this code, it will print 1, 2, 3:
+
+```js
+console.log(1);
+startTransition(() => {
+	console.log(2);
+	setPage("/about");
+});
+console.log(3);
+```
+
+**It is expected to print 1, 2, 3.** The function you pass to `startTransition` does not get delayed. Unlike with the browser `setTimeout`, it does not run the callback later. React executes your function immediately, but any state updates scheduled _while it is running_ are marked as transitions. You can imagine that it works like this:
+
+```js
+// A simplified version of how React works
+
+let isInsideTransition = false;
+
+function startTransition(scope) {
+	isInsideTransition = true;
+	scope();
+	isInsideTransition = false;
+}
+
+function setState() {
+	if (isInsideTransition) {
+		// ... schedule a transition state update ...
+	} else {
+		// ... schedule an urgent state update ...
+	}
+}
+```
diff --git a/mkdocs.yml b/mkdocs.yml
index 0ae9f2f49..e64f52371 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -70,6 +70,12 @@ nav:
                 - reference/use-scope.md
                 - reference/use-location.md
                 - reference/use-id.md
+                - reference/use-deferred-value.md
+                - reference/use-imperative-handle.md
+                - reference/use-insertion-effect.md
+                - reference/use-layout-effect.md
+                - reference/use-sync-external-store.md
+                - reference/use-transition.md
           - HTML Tags:
                 - reference/common-props.md
                 - reference/usage.md

From 8f58f8c836f3a7d31a1a000273fe80b4765d7298 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 17:23:28 -0700
Subject: [PATCH 31/49] mkdocs-section-index: Move titles to mkdocs.yml

---
 docs/requirements.txt                         |   1 +
 docs/src/about/code.md                        |   3 -
 docs/src/about/community.md                   |   3 -
 docs/src/about/docs.md                        |   3 -
 docs/src/about/running-tests.md               |   3 -
 .../learn/add-react-to-an-existing-project.md |   3 -
 .../src/learn/choosing-the-state-structure.md |   3 -
 ...municate-data-between-server-and-client.md |   3 -
 docs/src/learn/conditional-rendering.md       |   3 -
 .../learn/convert-between-vdom-and-html.md    |   3 -
 docs/src/learn/creating-backends.md           |   3 -
 docs/src/learn/creating-html-tags.md          |   3 -
 .../src/learn/creating-vdom-event-handlers.md |   3 -
 docs/src/learn/editor-setup.md                |   3 -
 .../extracting-state-logic-into-a-reducer.md  |   3 -
 .../importing-and-exporting-components.md     |   3 -
 docs/src/learn/keeping-components-pure.md     |   3 -
 .../learn/lifecycle-of-reactive-effects.md    |   3 -
 .../learn/manipulating-the-dom-with-refs.md   |   3 -
 docs/src/learn/manually-register-a-client.md  |   3 -
 .../learn/passing-data-deeply-with-context.md |   3 -
 .../src/learn/passing-props-to-a-component.md |   3 -
 .../learn/preserving-and-resetting-state.md   |   3 -
 .../learn/python-in-psx-with-curly-braces.md  |   3 -
 .../queueing-a-series-of-state-updates.md     |   3 -
 .../learn/{get-started.md => quick-start.md}  |   4 -
 docs/src/learn/react-developer-tools.md       |   3 -
 .../src/learn/reacting-to-input-with-state.md |   3 -
 .../src/learn/referencing-values-with-refs.md |   3 -
 .../src/learn/removing-effect-dependencies.md |   3 -
 docs/src/learn/render-and-commit.md           |   3 -
 docs/src/learn/rendering-lists.md             |   3 -
 docs/src/learn/responding-to-events.md        |   3 -
 .../learn/reusing-logic-with-custom-hooks.md  |   3 -
 .../scaling-up-with-reducer-and-context.md    |   3 -
 .../learn/separating-events-from-effects.md   |   3 -
 .../learn/sharing-state-between-components.md |   3 -
 docs/src/learn/start-a-new-react-project.md   |   3 -
 docs/src/learn/state-a-components-memory.md   |   3 -
 docs/src/learn/state-as-a-snapshot.md         |   3 -
 docs/src/learn/synchronizing-with-effects.md  |   3 -
 docs/src/learn/thinking-in-react.md           |   5 +-
 docs/src/learn/tutorial-material-ui.md        |   3 -
 docs/src/learn/tutorial-react-bootstrap.md    |   3 -
 docs/src/learn/tutorial-tic-tac-toe.md        |   3 -
 docs/src/learn/updating-arrays-in-state.md    |   3 -
 docs/src/learn/updating-objects-in-state.md   |   3 -
 docs/src/learn/vdom-mutations.md              |   3 -
 docs/src/learn/writing-markup-with-psx.md     |   3 -
 .../src/learn/you-might-not-need-an-effect.md |   3 -
 docs/src/learn/your-first-component.md        |   3 -
 docs/src/reference/client-api.md              |   3 -
 docs/src/reference/common-props.md            |   3 -
 docs/src/reference/django.md                  |   3 -
 docs/src/reference/fastapi.md                 |   3 -
 docs/src/reference/flask.md                   |   3 -
 docs/src/reference/jupyter.md                 |   3 -
 docs/src/reference/plotly-dash.md             |   3 -
 docs/src/reference/protocol-structure.md      |   3 -
 docs/src/reference/sanic.md                   |   3 -
 docs/src/reference/starlette.md               |   3 -
 docs/src/reference/tornado.md                 |   3 -
 docs/src/reference/usage.md                   |   3 -
 docs/src/reference/use-callback.md            |   3 -
 docs/src/reference/use-connection.md          |   3 -
 docs/src/reference/use-context.md             |   3 -
 docs/src/reference/use-debug-value.md         |   3 -
 docs/src/reference/use-deferred-value.md      |   3 -
 docs/src/reference/use-effect.md              |   3 -
 docs/src/reference/use-id.md                  |   3 -
 docs/src/reference/use-imperative-handle.md   |   3 -
 docs/src/reference/use-insertion-effect.md    |   3 -
 docs/src/reference/use-layout-effect.md       |   3 -
 docs/src/reference/use-location.md            |   3 -
 docs/src/reference/use-memo.md                |   3 -
 docs/src/reference/use-reducer.md             |   3 -
 docs/src/reference/use-ref.md                 |   3 -
 docs/src/reference/use-scope.md               |   3 -
 docs/src/reference/use-state.md               |   3 -
 docs/src/reference/use-sync-external-store.md |   3 -
 docs/src/reference/use-transition.md          |   3 -
 mkdocs.yml                                    | 163 +++++++++---------
 82 files changed, 84 insertions(+), 323 deletions(-)
 rename docs/src/learn/{get-started.md => quick-start.md} (99%)

diff --git a/docs/requirements.txt b/docs/requirements.txt
index 9ae8fcf17..612b7fe7a 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -6,3 +6,4 @@ linkcheckmd
 mkdocs-spellcheck[all]
 mkdocs-git-authors-plugin
 mkdocs-minify-plugin
+mkdocs-section-index
diff --git a/docs/src/about/code.md b/docs/src/about/code.md
index b62ac3725..e69de29bb 100644
--- a/docs/src/about/code.md
+++ b/docs/src/about/code.md
@@ -1,3 +0,0 @@
----
-title: Contributing Code 🚧
----
diff --git a/docs/src/about/community.md b/docs/src/about/community.md
index a2aaf44d8..e69de29bb 100644
--- a/docs/src/about/community.md
+++ b/docs/src/about/community.md
@@ -1,3 +0,0 @@
----
-title: Community 🚧
----
diff --git a/docs/src/about/docs.md b/docs/src/about/docs.md
index cf935525e..e69de29bb 100644
--- a/docs/src/about/docs.md
+++ b/docs/src/about/docs.md
@@ -1,3 +0,0 @@
----
-title: Contributing Documentation 🚧
----
diff --git a/docs/src/about/running-tests.md b/docs/src/about/running-tests.md
index 714a7456c..e69de29bb 100644
--- a/docs/src/about/running-tests.md
+++ b/docs/src/about/running-tests.md
@@ -1,3 +0,0 @@
----
-title: Running Tests 🚧
----
diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index bdc4a0d3d..0a2c0c9c4 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -1,6 +1,3 @@
----
-title: Add React to an Existing Project 🚫
----
 
 !!! warning "In Progress"
 
diff --git a/docs/src/learn/choosing-the-state-structure.md b/docs/src/learn/choosing-the-state-structure.md
index 2a40ef2d5..61205cd7d 100644
--- a/docs/src/learn/choosing-the-state-structure.md
+++ b/docs/src/learn/choosing-the-state-structure.md
@@ -1,6 +1,3 @@
----
-title: Choosing the State Structure 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/communicate-data-between-server-and-client.md b/docs/src/learn/communicate-data-between-server-and-client.md
index 01736cacd..e69de29bb 100644
--- a/docs/src/learn/communicate-data-between-server-and-client.md
+++ b/docs/src/learn/communicate-data-between-server-and-client.md
@@ -1,3 +0,0 @@
----
-title: Communicating Data Between Server and Client 🚧
----
diff --git a/docs/src/learn/conditional-rendering.md b/docs/src/learn/conditional-rendering.md
index 87d031613..46a07a4bf 100644
--- a/docs/src/learn/conditional-rendering.md
+++ b/docs/src/learn/conditional-rendering.md
@@ -1,6 +1,3 @@
----
-title: Conditional Rendering 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/convert-between-vdom-and-html.md b/docs/src/learn/convert-between-vdom-and-html.md
index 6f3c2dba3..e69de29bb 100644
--- a/docs/src/learn/convert-between-vdom-and-html.md
+++ b/docs/src/learn/convert-between-vdom-and-html.md
@@ -1,3 +0,0 @@
----
-title: Convert Between VDOM and HTML 🚧
----
diff --git a/docs/src/learn/creating-backends.md b/docs/src/learn/creating-backends.md
index 75bf0be65..e69de29bb 100644
--- a/docs/src/learn/creating-backends.md
+++ b/docs/src/learn/creating-backends.md
@@ -1,3 +0,0 @@
----
-title: Creating Backends 🚧
----
diff --git a/docs/src/learn/creating-html-tags.md b/docs/src/learn/creating-html-tags.md
index 4742655e1..e69de29bb 100644
--- a/docs/src/learn/creating-html-tags.md
+++ b/docs/src/learn/creating-html-tags.md
@@ -1,3 +0,0 @@
----
-title: Creating HTML Tags 🚧
----
diff --git a/docs/src/learn/creating-vdom-event-handlers.md b/docs/src/learn/creating-vdom-event-handlers.md
index f82b1f16d..e69de29bb 100644
--- a/docs/src/learn/creating-vdom-event-handlers.md
+++ b/docs/src/learn/creating-vdom-event-handlers.md
@@ -1,3 +0,0 @@
----
-title: Creating VDOM Event Handlers 🚧
----
diff --git a/docs/src/learn/editor-setup.md b/docs/src/learn/editor-setup.md
index 7bebda0e8..3154124fb 100644
--- a/docs/src/learn/editor-setup.md
+++ b/docs/src/learn/editor-setup.md
@@ -1,6 +1,3 @@
----
-title: Editor Setup 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/extracting-state-logic-into-a-reducer.md b/docs/src/learn/extracting-state-logic-into-a-reducer.md
index d3368f238..ad6a6f986 100644
--- a/docs/src/learn/extracting-state-logic-into-a-reducer.md
+++ b/docs/src/learn/extracting-state-logic-into-a-reducer.md
@@ -1,6 +1,3 @@
----
-title: Extracting State Logic into a Reducer 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/importing-and-exporting-components.md b/docs/src/learn/importing-and-exporting-components.md
index 6e677d51d..3fa6723db 100644
--- a/docs/src/learn/importing-and-exporting-components.md
+++ b/docs/src/learn/importing-and-exporting-components.md
@@ -1,6 +1,3 @@
----
-title: Importing and Exporting Components 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/keeping-components-pure.md b/docs/src/learn/keeping-components-pure.md
index c1a9bc92d..c71267f2b 100644
--- a/docs/src/learn/keeping-components-pure.md
+++ b/docs/src/learn/keeping-components-pure.md
@@ -1,6 +1,3 @@
----
-title: Keeping Components Pure 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/lifecycle-of-reactive-effects.md b/docs/src/learn/lifecycle-of-reactive-effects.md
index 705158615..3d75b698b 100644
--- a/docs/src/learn/lifecycle-of-reactive-effects.md
+++ b/docs/src/learn/lifecycle-of-reactive-effects.md
@@ -1,6 +1,3 @@
----
-title: "Lifecycle of Reactive Effects 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/manipulating-the-dom-with-refs.md b/docs/src/learn/manipulating-the-dom-with-refs.md
index 5fcff0f42..6546b032d 100644
--- a/docs/src/learn/manipulating-the-dom-with-refs.md
+++ b/docs/src/learn/manipulating-the-dom-with-refs.md
@@ -1,6 +1,3 @@
----
-title: "Manipulating the DOM with Refs 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/manually-register-a-client.md b/docs/src/learn/manually-register-a-client.md
index 9ee55b31d..e69de29bb 100644
--- a/docs/src/learn/manually-register-a-client.md
+++ b/docs/src/learn/manually-register-a-client.md
@@ -1,3 +0,0 @@
----
-title: Manually Register a Client 🚧
----
diff --git a/docs/src/learn/passing-data-deeply-with-context.md b/docs/src/learn/passing-data-deeply-with-context.md
index 84d2c0c73..eb86d3be3 100644
--- a/docs/src/learn/passing-data-deeply-with-context.md
+++ b/docs/src/learn/passing-data-deeply-with-context.md
@@ -1,6 +1,3 @@
----
-title: Passing Data Deeply with Context 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/passing-props-to-a-component.md b/docs/src/learn/passing-props-to-a-component.md
index a73f09ed2..7baf53498 100644
--- a/docs/src/learn/passing-props-to-a-component.md
+++ b/docs/src/learn/passing-props-to-a-component.md
@@ -1,6 +1,3 @@
----
-title: Passing Props to a Component 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/preserving-and-resetting-state.md b/docs/src/learn/preserving-and-resetting-state.md
index 23e5f64ca..bdb130dcd 100644
--- a/docs/src/learn/preserving-and-resetting-state.md
+++ b/docs/src/learn/preserving-and-resetting-state.md
@@ -1,6 +1,3 @@
----
-title: Preserving and Resetting State 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/python-in-psx-with-curly-braces.md b/docs/src/learn/python-in-psx-with-curly-braces.md
index 87be20beb..5c93883c1 100644
--- a/docs/src/learn/python-in-psx-with-curly-braces.md
+++ b/docs/src/learn/python-in-psx-with-curly-braces.md
@@ -1,6 +1,3 @@
----
-title: Python in PSX with Curly Braces 🚫
----
 
 !!! warning "In Progress"
 
diff --git a/docs/src/learn/queueing-a-series-of-state-updates.md b/docs/src/learn/queueing-a-series-of-state-updates.md
index c2704d046..cd387a663 100644
--- a/docs/src/learn/queueing-a-series-of-state-updates.md
+++ b/docs/src/learn/queueing-a-series-of-state-updates.md
@@ -1,6 +1,3 @@
----
-title: Queueing a Series of State Updates 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/get-started.md b/docs/src/learn/quick-start.md
similarity index 99%
rename from docs/src/learn/get-started.md
rename to docs/src/learn/quick-start.md
index 0e501bd96..a825d6b56 100644
--- a/docs/src/learn/get-started.md
+++ b/docs/src/learn/quick-start.md
@@ -1,7 +1,3 @@
----
-title: "Get Started"
----
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
index 464083ec8..a10caf229 100644
--- a/docs/src/learn/react-developer-tools.md
+++ b/docs/src/learn/react-developer-tools.md
@@ -1,6 +1,3 @@
----
-title: React Developer Tools 🚫
----
 
 !!! warning "In Progress"
 
diff --git a/docs/src/learn/reacting-to-input-with-state.md b/docs/src/learn/reacting-to-input-with-state.md
index 2ad1390f9..6cb2f701c 100644
--- a/docs/src/learn/reacting-to-input-with-state.md
+++ b/docs/src/learn/reacting-to-input-with-state.md
@@ -1,6 +1,3 @@
----
-title: Reacting to Input with State 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/referencing-values-with-refs.md b/docs/src/learn/referencing-values-with-refs.md
index 3d1fd7d42..9b19c46be 100644
--- a/docs/src/learn/referencing-values-with-refs.md
+++ b/docs/src/learn/referencing-values-with-refs.md
@@ -1,6 +1,3 @@
----
-title: "Referencing Values with Refs 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/removing-effect-dependencies.md b/docs/src/learn/removing-effect-dependencies.md
index 55a983a27..161c1276b 100644
--- a/docs/src/learn/removing-effect-dependencies.md
+++ b/docs/src/learn/removing-effect-dependencies.md
@@ -1,6 +1,3 @@
----
-title: "Removing Effect Dependencies 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/render-and-commit.md b/docs/src/learn/render-and-commit.md
index 94238ca65..f64da2e29 100644
--- a/docs/src/learn/render-and-commit.md
+++ b/docs/src/learn/render-and-commit.md
@@ -1,6 +1,3 @@
----
-title: Render and Commit 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/rendering-lists.md b/docs/src/learn/rendering-lists.md
index d0b74c85b..a4072a188 100644
--- a/docs/src/learn/rendering-lists.md
+++ b/docs/src/learn/rendering-lists.md
@@ -1,6 +1,3 @@
----
-title: Rendering Lists 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/responding-to-events.md b/docs/src/learn/responding-to-events.md
index 76d6402aa..4c12bfbbc 100644
--- a/docs/src/learn/responding-to-events.md
+++ b/docs/src/learn/responding-to-events.md
@@ -1,6 +1,3 @@
----
-title: Responding to Events 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/reusing-logic-with-custom-hooks.md b/docs/src/learn/reusing-logic-with-custom-hooks.md
index a9c16248f..89b997add 100644
--- a/docs/src/learn/reusing-logic-with-custom-hooks.md
+++ b/docs/src/learn/reusing-logic-with-custom-hooks.md
@@ -1,6 +1,3 @@
----
-title: "Reusing Logic with Custom Hooks 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/scaling-up-with-reducer-and-context.md b/docs/src/learn/scaling-up-with-reducer-and-context.md
index 755a27e29..a8b137a58 100644
--- a/docs/src/learn/scaling-up-with-reducer-and-context.md
+++ b/docs/src/learn/scaling-up-with-reducer-and-context.md
@@ -1,6 +1,3 @@
----
-title: Scaling Up with Reducer and Context 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/separating-events-from-effects.md b/docs/src/learn/separating-events-from-effects.md
index aaeb9c30a..615043240 100644
--- a/docs/src/learn/separating-events-from-effects.md
+++ b/docs/src/learn/separating-events-from-effects.md
@@ -1,6 +1,3 @@
----
-title: "Separating Events from Effects 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/sharing-state-between-components.md b/docs/src/learn/sharing-state-between-components.md
index 543a56110..21cf532d5 100644
--- a/docs/src/learn/sharing-state-between-components.md
+++ b/docs/src/learn/sharing-state-between-components.md
@@ -1,6 +1,3 @@
----
-title: Sharing State Between Components 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/start-a-new-react-project.md b/docs/src/learn/start-a-new-react-project.md
index 0196b1943..99cd7a9e6 100644
--- a/docs/src/learn/start-a-new-react-project.md
+++ b/docs/src/learn/start-a-new-react-project.md
@@ -1,6 +1,3 @@
----
-title: Start a New React Project
----
 
 ## Overview
 
diff --git a/docs/src/learn/state-a-components-memory.md b/docs/src/learn/state-a-components-memory.md
index ce350c1f7..47f266d9e 100644
--- a/docs/src/learn/state-a-components-memory.md
+++ b/docs/src/learn/state-a-components-memory.md
@@ -1,6 +1,3 @@
----
-title: "State: A Component's Memory 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/state-as-a-snapshot.md b/docs/src/learn/state-as-a-snapshot.md
index 0fe725ed7..57561bcb6 100644
--- a/docs/src/learn/state-as-a-snapshot.md
+++ b/docs/src/learn/state-as-a-snapshot.md
@@ -1,6 +1,3 @@
----
-title: State as a Snapshot 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/synchronizing-with-effects.md b/docs/src/learn/synchronizing-with-effects.md
index 7ebfeb240..ef95da4cd 100644
--- a/docs/src/learn/synchronizing-with-effects.md
+++ b/docs/src/learn/synchronizing-with-effects.md
@@ -1,6 +1,3 @@
----
-title: "Synchronizing with Effects 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index d66531517..fed0ec5e9 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -1,6 +1,3 @@
----
-title: Thinking in React
----
 
 ## Overview
 
@@ -86,7 +83,7 @@ You can either build "top down" by starting with building the components higher
     # TODO
     ```
 
-(If this code looks intimidating, go through the [Quick Start](../learn/get-started.md) first!)
+(If this code looks intimidating, go through the [Quick Start](../learn/quick-start.md) first!)
 
 After building your components, you'll have a library of reusable components that render your data model. Because this is a static app, the components will only return non-interactive HTML. The component at the top of the hierarchy (`filterable_product_table`) will take your data model as a prop. This is called _one-way data flow_ because the data flows down from the top-level component to the ones at the bottom of the tree.
 
diff --git a/docs/src/learn/tutorial-material-ui.md b/docs/src/learn/tutorial-material-ui.md
index b57bba07f..044fce7aa 100644
--- a/docs/src/learn/tutorial-material-ui.md
+++ b/docs/src/learn/tutorial-material-ui.md
@@ -1,6 +1,3 @@
----
-title: "Tutorial: Material UI 🚫"
----
 
 
 !!! warning "In Progress"
diff --git a/docs/src/learn/tutorial-react-bootstrap.md b/docs/src/learn/tutorial-react-bootstrap.md
index 8d77dbe1d..3da9db181 100644
--- a/docs/src/learn/tutorial-react-bootstrap.md
+++ b/docs/src/learn/tutorial-react-bootstrap.md
@@ -1,6 +1,3 @@
----
-title: "Tutorial: React Bootstrap 🚫"
----
 
 !!! warning "In Progress"
 
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 317ca0c8c..8c41fd0d8 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -1,6 +1,3 @@
----
-title: "Tutorial: Tic-Tac-Toe 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/updating-arrays-in-state.md b/docs/src/learn/updating-arrays-in-state.md
index ee031175d..abc1efc90 100644
--- a/docs/src/learn/updating-arrays-in-state.md
+++ b/docs/src/learn/updating-arrays-in-state.md
@@ -1,6 +1,3 @@
----
-title: Updating Arrays in State 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/updating-objects-in-state.md b/docs/src/learn/updating-objects-in-state.md
index ec6459955..631f2f137 100644
--- a/docs/src/learn/updating-objects-in-state.md
+++ b/docs/src/learn/updating-objects-in-state.md
@@ -1,6 +1,3 @@
----
-title: Updating Objects in State 🚧
----
 
 ## Overview
 
diff --git a/docs/src/learn/vdom-mutations.md b/docs/src/learn/vdom-mutations.md
index 6015f6905..e69de29bb 100644
--- a/docs/src/learn/vdom-mutations.md
+++ b/docs/src/learn/vdom-mutations.md
@@ -1,3 +0,0 @@
----
-title: VDOM Mutations 🚧
----
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
index b4b9396e7..788630ff1 100644
--- a/docs/src/learn/writing-markup-with-psx.md
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -1,6 +1,3 @@
----
-title: Writing Markup with PSX 🚫
----
 
 !!! warning "In Progress"
 
diff --git a/docs/src/learn/you-might-not-need-an-effect.md b/docs/src/learn/you-might-not-need-an-effect.md
index 712c5e946..18996927e 100644
--- a/docs/src/learn/you-might-not-need-an-effect.md
+++ b/docs/src/learn/you-might-not-need-an-effect.md
@@ -1,6 +1,3 @@
----
-title: "You Might Not Need an Effect 🚧"
----
 
 ## Overview
 
diff --git a/docs/src/learn/your-first-component.md b/docs/src/learn/your-first-component.md
index a22d43f9b..eb44b0f52 100644
--- a/docs/src/learn/your-first-component.md
+++ b/docs/src/learn/your-first-component.md
@@ -1,6 +1,3 @@
----
-title: Your First Component 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/client-api.md b/docs/src/reference/client-api.md
index 777830f09..e69de29bb 100644
--- a/docs/src/reference/client-api.md
+++ b/docs/src/reference/client-api.md
@@ -1,3 +0,0 @@
----
-title: Client API 🚧
----
diff --git a/docs/src/reference/common-props.md b/docs/src/reference/common-props.md
index 4fd73bf9d..32bde6e5b 100644
--- a/docs/src/reference/common-props.md
+++ b/docs/src/reference/common-props.md
@@ -1,6 +1,3 @@
----
-title: Common Props 🚧
----
 
 #### Props
 
diff --git a/docs/src/reference/django.md b/docs/src/reference/django.md
index 3cc86a05e..e69de29bb 100644
--- a/docs/src/reference/django.md
+++ b/docs/src/reference/django.md
@@ -1,3 +0,0 @@
----
-title: Django 🚧
----
diff --git a/docs/src/reference/fastapi.md b/docs/src/reference/fastapi.md
index e62f39fd3..e69de29bb 100644
--- a/docs/src/reference/fastapi.md
+++ b/docs/src/reference/fastapi.md
@@ -1,3 +0,0 @@
----
-title: FastAPI 🚧
----
diff --git a/docs/src/reference/flask.md b/docs/src/reference/flask.md
index a5fc59a07..e69de29bb 100644
--- a/docs/src/reference/flask.md
+++ b/docs/src/reference/flask.md
@@ -1,3 +0,0 @@
----
-title: Flask 🚧
----
diff --git a/docs/src/reference/jupyter.md b/docs/src/reference/jupyter.md
index 5d0149420..e69de29bb 100644
--- a/docs/src/reference/jupyter.md
+++ b/docs/src/reference/jupyter.md
@@ -1,3 +0,0 @@
----
-title: Jupyter 🚧
----
diff --git a/docs/src/reference/plotly-dash.md b/docs/src/reference/plotly-dash.md
index c050957e8..e69de29bb 100644
--- a/docs/src/reference/plotly-dash.md
+++ b/docs/src/reference/plotly-dash.md
@@ -1,3 +0,0 @@
----
-title: Plotly Dash 🚧
----
diff --git a/docs/src/reference/protocol-structure.md b/docs/src/reference/protocol-structure.md
index cc48c47dc..e69de29bb 100644
--- a/docs/src/reference/protocol-structure.md
+++ b/docs/src/reference/protocol-structure.md
@@ -1,3 +0,0 @@
----
-title: Protocol Structure 🚧
----
diff --git a/docs/src/reference/sanic.md b/docs/src/reference/sanic.md
index 4b941c71c..e69de29bb 100644
--- a/docs/src/reference/sanic.md
+++ b/docs/src/reference/sanic.md
@@ -1,3 +0,0 @@
----
-title: Sanic 🚧
----
diff --git a/docs/src/reference/starlette.md b/docs/src/reference/starlette.md
index 1414d1327..e69de29bb 100644
--- a/docs/src/reference/starlette.md
+++ b/docs/src/reference/starlette.md
@@ -1,3 +0,0 @@
----
-title: Starlette 🚧
----
diff --git a/docs/src/reference/tornado.md b/docs/src/reference/tornado.md
index 6f09d1bb8..e69de29bb 100644
--- a/docs/src/reference/tornado.md
+++ b/docs/src/reference/tornado.md
@@ -1,3 +0,0 @@
----
-title: Tornado 🚧
----
diff --git a/docs/src/reference/usage.md b/docs/src/reference/usage.md
index 32d698308..e69de29bb 100644
--- a/docs/src/reference/usage.md
+++ b/docs/src/reference/usage.md
@@ -1,3 +0,0 @@
----
-title: Usage 🚧
----
diff --git a/docs/src/reference/use-callback.md b/docs/src/reference/use-callback.md
index c4978fb23..ff4e6661b 100644
--- a/docs/src/reference/use-callback.md
+++ b/docs/src/reference/use-callback.md
@@ -1,6 +1,3 @@
----
-title: Use Callback 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-connection.md b/docs/src/reference/use-connection.md
index 582dd88c4..e69de29bb 100644
--- a/docs/src/reference/use-connection.md
+++ b/docs/src/reference/use-connection.md
@@ -1,3 +0,0 @@
----
-title: Use Connection 🚧
----
diff --git a/docs/src/reference/use-context.md b/docs/src/reference/use-context.md
index 165e8e4bf..6a9e34827 100644
--- a/docs/src/reference/use-context.md
+++ b/docs/src/reference/use-context.md
@@ -1,6 +1,3 @@
----
-title: Use Context 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-debug-value.md b/docs/src/reference/use-debug-value.md
index 5bbdacf42..5b3335091 100644
--- a/docs/src/reference/use-debug-value.md
+++ b/docs/src/reference/use-debug-value.md
@@ -1,6 +1,3 @@
----
-title: Use Debug Value 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-deferred-value.md b/docs/src/reference/use-deferred-value.md
index d7058b899..82000489b 100644
--- a/docs/src/reference/use-deferred-value.md
+++ b/docs/src/reference/use-deferred-value.md
@@ -1,6 +1,3 @@
----
-title: Use Deferred Value 🚫
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-effect.md b/docs/src/reference/use-effect.md
index 7a73905bb..1a6802a40 100644
--- a/docs/src/reference/use-effect.md
+++ b/docs/src/reference/use-effect.md
@@ -1,6 +1,3 @@
----
-title: Use Effect 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-id.md b/docs/src/reference/use-id.md
index 2802254e8..f70cd7e55 100644
--- a/docs/src/reference/use-id.md
+++ b/docs/src/reference/use-id.md
@@ -1,6 +1,3 @@
----
-title: Use ID 🚫
----
 
 
 !!! warning "In Progress"
diff --git a/docs/src/reference/use-imperative-handle.md b/docs/src/reference/use-imperative-handle.md
index 8d5ca5994..edfa59d83 100644
--- a/docs/src/reference/use-imperative-handle.md
+++ b/docs/src/reference/use-imperative-handle.md
@@ -1,6 +1,3 @@
----
-title: Use Imperative Handle 🚫
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-insertion-effect.md b/docs/src/reference/use-insertion-effect.md
index 495959069..373a7bf7b 100644
--- a/docs/src/reference/use-insertion-effect.md
+++ b/docs/src/reference/use-insertion-effect.md
@@ -1,6 +1,3 @@
----
-title: Use Insertion Effect 🚫
----
 
 <Pitfall>
 
diff --git a/docs/src/reference/use-layout-effect.md b/docs/src/reference/use-layout-effect.md
index 8ea42d8bc..fde92f88f 100644
--- a/docs/src/reference/use-layout-effect.md
+++ b/docs/src/reference/use-layout-effect.md
@@ -1,6 +1,3 @@
----
-title: Use Layout Effect 🚫
----
 
 <Pitfall>
 
diff --git a/docs/src/reference/use-location.md b/docs/src/reference/use-location.md
index 0d7ff700f..e69de29bb 100644
--- a/docs/src/reference/use-location.md
+++ b/docs/src/reference/use-location.md
@@ -1,3 +0,0 @@
----
-title: Use Location 🚧
----
diff --git a/docs/src/reference/use-memo.md b/docs/src/reference/use-memo.md
index 4a9f3143a..7fd524555 100644
--- a/docs/src/reference/use-memo.md
+++ b/docs/src/reference/use-memo.md
@@ -1,6 +1,3 @@
----
-title: Use Memo 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-reducer.md b/docs/src/reference/use-reducer.md
index c397b41c7..b9739f497 100644
--- a/docs/src/reference/use-reducer.md
+++ b/docs/src/reference/use-reducer.md
@@ -1,6 +1,3 @@
----
-title: Use Reducer 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-ref.md b/docs/src/reference/use-ref.md
index 1554ffc7e..931cc21a3 100644
--- a/docs/src/reference/use-ref.md
+++ b/docs/src/reference/use-ref.md
@@ -1,6 +1,3 @@
----
-title: Use Ref 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-scope.md b/docs/src/reference/use-scope.md
index 080875017..e69de29bb 100644
--- a/docs/src/reference/use-scope.md
+++ b/docs/src/reference/use-scope.md
@@ -1,3 +0,0 @@
----
-title: Use Scope 🚧
----
diff --git a/docs/src/reference/use-state.md b/docs/src/reference/use-state.md
index c624bbd9e..c66538623 100644
--- a/docs/src/reference/use-state.md
+++ b/docs/src/reference/use-state.md
@@ -1,6 +1,3 @@
----
-title: Use State 🚧
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-sync-external-store.md b/docs/src/reference/use-sync-external-store.md
index 9d5425fd2..bfcfbd0ae 100644
--- a/docs/src/reference/use-sync-external-store.md
+++ b/docs/src/reference/use-sync-external-store.md
@@ -1,6 +1,3 @@
----
-title: Use Sync External Store 🚫
----
 
 ## Overview
 
diff --git a/docs/src/reference/use-transition.md b/docs/src/reference/use-transition.md
index 8279f7afe..a1faa0bcb 100644
--- a/docs/src/reference/use-transition.md
+++ b/docs/src/reference/use-transition.md
@@ -1,6 +1,3 @@
----
-title: Use Transition 🚫
----
 
 ## Overview
 
diff --git a/mkdocs.yml b/mkdocs.yml
index e64f52371..f87293536 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -3,99 +3,99 @@ nav:
     - Home: index.md
     - Get Started:
           - Quick Start:
-                - learn/get-started.md
-                - learn/tutorial-tic-tac-toe.md
-                - learn/thinking-in-react.md
+                - learn/quick-start.md
+                - "Tutorial: Tic-Tac-Toe 🚧" : learn/tutorial-tic-tac-toe.md
+                - Thinking in React : learn/thinking-in-react.md
           - Installation:
-                - learn/start-a-new-react-project.md
-                - learn/add-react-to-an-existing-project.md
-                - learn/editor-setup.md
-                - learn/react-developer-tools.md
+                - Start a New React Project : learn/start-a-new-react-project.md
+                - Add React to an Existing Project 🚫 : learn/add-react-to-an-existing-project.md
+                - Editor Setup 🚧 : learn/editor-setup.md
+                - React Developer Tools 🚫 : learn/react-developer-tools.md
           - More Tutorials:
-                - learn/tutorial-react-bootstrap.md
-                - learn/tutorial-material-ui.md
+                - "Tutorial: React Bootstrap 🚫" : learn/tutorial-react-bootstrap.md
+                - "Tutorial: Material UI 🚫" : learn/tutorial-material-ui.md
     - Learn React:
           - Describing the UI:
-                - learn/your-first-component.md
-                - learn/importing-and-exporting-components.md
-                - learn/writing-markup-with-psx.md
-                - learn/python-in-psx-with-curly-braces.md
-                - learn/passing-props-to-a-component.md
-                - learn/conditional-rendering.md
-                - learn/rendering-lists.md
-                - learn/keeping-components-pure.md
+                - Your First Component 🚧 : learn/your-first-component.md
+                - Importing and Exporting Components 🚧 : learn/importing-and-exporting-components.md
+                - Writing Markup with PSX 🚫 : learn/writing-markup-with-psx.md
+                - Python in PSX with Curly Braces 🚫 : learn/python-in-psx-with-curly-braces.md
+                - Passing Props to a Component 🚧 : learn/passing-props-to-a-component.md
+                - Conditional Rendering 🚧 : learn/conditional-rendering.md
+                - Rendering Lists 🚧 : learn/rendering-lists.md
+                - Keeping Components Pure 🚧 : learn/keeping-components-pure.md
           - Adding Interactivity:
-                - learn/responding-to-events.md
-                - learn/state-a-components-memory.md
-                - learn/render-and-commit.md
-                - learn/state-as-a-snapshot.md
-                - learn/queueing-a-series-of-state-updates.md
-                - learn/updating-objects-in-state.md
-                - learn/updating-arrays-in-state.md
+                - Responding to Events 🚧 : learn/responding-to-events.md
+                - "State: A Component's Memory 🚧" : learn/state-a-components-memory.md
+                - Render and Commit 🚧 : learn/render-and-commit.md
+                - State as a Snapshot 🚧 : learn/state-as-a-snapshot.md
+                - Queueing a Series of State Updates 🚧 : learn/queueing-a-series-of-state-updates.md
+                - Updating Objects in State 🚧 : learn/updating-objects-in-state.md
+                - Updating Arrays in State 🚧 : learn/updating-arrays-in-state.md
           - Managing State:
-                - learn/reacting-to-input-with-state.md
-                - learn/choosing-the-state-structure.md
-                - learn/sharing-state-between-components.md
-                - learn/preserving-and-resetting-state.md
-                - learn/extracting-state-logic-into-a-reducer.md
-                - learn/passing-data-deeply-with-context.md
-                - learn/scaling-up-with-reducer-and-context.md
+                - Reacting to Input with State 🚧 : learn/reacting-to-input-with-state.md
+                - Choosing the State Structure 🚧 : learn/choosing-the-state-structure.md
+                - Sharing State Between Components 🚧 : learn/sharing-state-between-components.md
+                - Preserving and Resetting State 🚧 : learn/preserving-and-resetting-state.md
+                - Extracting State Logic into a Reducer 🚧 : learn/extracting-state-logic-into-a-reducer.md
+                - Passing Data Deeply with Context 🚧 : learn/passing-data-deeply-with-context.md
+                - Scaling Up with Reducer and Context 🚧 : learn/scaling-up-with-reducer-and-context.md
           - Escape Hatches:
-                - learn/referencing-values-with-refs.md
-                - learn/manipulating-the-dom-with-refs.md
-                - learn/synchronizing-with-effects.md
-                - learn/you-might-not-need-an-effect.md
-                - learn/lifecycle-of-reactive-effects.md
-                - learn/separating-events-from-effects.md
-                - learn/removing-effect-dependencies.md
-                - learn/reusing-logic-with-custom-hooks.md
-                - learn/communicate-data-between-server-and-client.md
-                - learn/convert-between-vdom-and-html.md
-                - learn/vdom-mutations.md
-                - learn/creating-vdom-event-handlers.md
-                - learn/creating-html-tags.md
-                - learn/creating-backends.md
-                - learn/manually-register-a-client.md
+                - Referencing Values with Refs 🚧 : learn/referencing-values-with-refs.md
+                - Manipulating the DOM with Refs 🚧 : learn/manipulating-the-dom-with-refs.md
+                - Synchronizing with Effects 🚧 : learn/synchronizing-with-effects.md
+                - You Might Not Need an Effect 🚧 : learn/you-might-not-need-an-effect.md
+                - Lifecycle of Reactive Effects 🚧 : learn/lifecycle-of-reactive-effects.md
+                - Separating Events from Effects 🚧 : learn/separating-events-from-effects.md
+                - Removing Effect Dependencies 🚧 : learn/removing-effect-dependencies.md
+                - Reusing Logic with Custom Hooks 🚧 : learn/reusing-logic-with-custom-hooks.md
+                - Communicating Data Between Server and Client 🚧 : learn/communicate-data-between-server-and-client.md
+                - Convert Between VDOM and HTML 🚧 : learn/convert-between-vdom-and-html.md
+                - VDOM Mutations 🚧 : learn/vdom-mutations.md
+                - Creating VDOM Event Handlers 🚧 : learn/creating-vdom-event-handlers.md
+                - Creating HTML Tags 🚧 : learn/creating-html-tags.md
+                - Creating Backends 🚧 : learn/creating-backends.md
+                - Manually Register a Client 🚧 : learn/manually-register-a-client.md
     - Reference:
           - Hooks:
-                - reference/use-state.md
-                - reference/use-effect.md
-                - reference/use-context.md
-                - reference/use-reducer.md
-                - reference/use-callback.md
-                - reference/use-memo.md
-                - reference/use-ref.md
-                - reference/use-debug-value.md
-                - reference/use-connection.md
-                - reference/use-scope.md
-                - reference/use-location.md
-                - reference/use-id.md
-                - reference/use-deferred-value.md
-                - reference/use-imperative-handle.md
-                - reference/use-insertion-effect.md
-                - reference/use-layout-effect.md
-                - reference/use-sync-external-store.md
-                - reference/use-transition.md
+                - Use State 🚧 : reference/use-state.md
+                - Use Effect 🚧 : reference/use-effect.md
+                - Use Context 🚧 : reference/use-context.md
+                - Use Reducer 🚧 : reference/use-reducer.md
+                - Use Callback 🚧 : reference/use-callback.md
+                - Use Memo 🚧 : reference/use-memo.md
+                - Use Ref 🚧 : reference/use-ref.md
+                - Use Debug Value 🚧 : reference/use-debug-value.md
+                - Use Connection 🚧 : reference/use-connection.md
+                - Use Scope 🚧 : reference/use-scope.md
+                - Use Location 🚧 : reference/use-location.md
+                - Use ID 🚫 : reference/use-id.md
+                - Use Deferred Value 🚫 : reference/use-deferred-value.md
+                - Use Imperative Handle 🚫 : reference/use-imperative-handle.md
+                - Use Insertion Effect 🚫 : reference/use-insertion-effect.md
+                - Use Layout Effect 🚫 : reference/use-layout-effect.md
+                - Use Sync External Store 🚫 : reference/use-sync-external-store.md
+                - Use Transition 🚫 : reference/use-transition.md
           - HTML Tags:
-                - reference/common-props.md
-                - reference/usage.md
+                - Common Props 🚧 : reference/common-props.md
+                - Usage 🚧 : reference/usage.md
           - Backends:
-                - reference/fastapi.md
-                - reference/flask.md
-                - reference/sanic.md
-                - reference/starlette.md
-                - reference/tornado.md
-                - reference/django.md
-                - reference/jupyter.md
-                - reference/plotly-dash.md
-          - reference/protocol-structure.md
-          - reference/client-api.md
+                - FastAPI 🚧 : reference/fastapi.md
+                - Flask 🚧 : reference/flask.md
+                - Sanic 🚧 : reference/sanic.md
+                - Starlette 🚧 : reference/starlette.md
+                - Tornado 🚧 : reference/tornado.md
+                - Django 🚧 : reference/django.md
+                - Jupyter 🚧 : reference/jupyter.md
+                - Plotly Dash 🚧 : reference/plotly-dash.md
+          - Protocol Structure 🚧 : reference/protocol-structure.md
+          - Client API 🚧 : reference/client-api.md
     - About ReactPy:
-          - about/changelog.md
-          - about/community.md
-          - about/running-tests.md
-          - about/code.md
-          - about/docs.md
+          - Changelog 🚧 : about/changelog.md
+          - Community 🚧 : about/community.md
+          - Running Tests 🚧 : about/running-tests.md
+          - Contributing Code 🚧 : about/code.md
+          - Contributing Documentation 🚧 : about/docs.md
 
 theme:
     name: material
@@ -144,6 +144,7 @@ markdown_extensions:
 plugins:
     - search
     - include-markdown
+    - section-index
     # - git-authors
     # - minify:
     #       minify_html: true

From c2c028186d22dc5c6d249ef07aa6eae581820e6c Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 20:10:42 -0700
Subject: [PATCH 32/49] verbiage on installation docs

---
 docs/src/learn/start-a-new-react-project.md | 30 ++++++++++++---------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/docs/src/learn/start-a-new-react-project.md b/docs/src/learn/start-a-new-react-project.md
index 99cd7a9e6..23f9cb1d5 100644
--- a/docs/src/learn/start-a-new-react-project.md
+++ b/docs/src/learn/start-a-new-react-project.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
@@ -7,22 +6,21 @@ If you want to build a new app or a new website fully with ReactPy, we recommend
 
 </p>
 
-
 ## Built-in Backends
 
 <!-- FIXME: This is reliant on https://github.com/reactive-python/reactpy/issues/1071 -->
 
 !!! note
 
-    Some of our frameworks are considered _built-in_, meaning that compatibility for these backends are contained within `reactpy.backend.*`.
+    Some of our backend frameworks are considered _built-in_, meaning that compatibility for these backends are contained within `reactpy.backend.*`.
 
-    In order to run ReactPy with these frameworks, you will need to run `reactpy.backend.*.configure(...)` on your ASGI application. This command will configure the necessary settings and routes for ReactPy to work properly.
+    In order to use ReactPy with _built-in_ backend, you will need to run `reactpy.backend.*.configure(...)` on your ASGI application. This command will configure the necessary settings and routes for ReactPy to work properly.
 
     For example, this is how you would configure ReactPy for FastAPI:
 
-	```python linenums="0"
-	{% include "../../examples/python/start_a_new_react_project/configure_example.py" %}
-	```
+    ```python linenums="0"
+    {% include "../../examples/python/start_a_new_react_project/configure_example.py" %}
+    ```
 
 ### FastAPI
 
@@ -96,6 +94,12 @@ You will need to [configure Tornado](#built-in-backends) in order to use it with
 
 ## External Backends
 
+!!! warning "Pitfall"
+
+    _External_ backends have ReactPy support, but have significantly different installation and configuration instructions than _built-in_ backends.
+
+    Make sure to follow the configuration guide for your chosen _external_ backend.
+
 ### Django
 
 [Django](https://www.djangoproject.com/) is a full-featured web framework that provides a batteries-included approach to web development. It includes features such as ORM, templating, authentication, and authorization. Django is a good choice for large and complex web applications.
@@ -108,7 +112,7 @@ You will need to [configure Tornado](#built-in-backends) in order to use it with
 
 If you're new to Django, check out the [Django tutorial](https://docs.djangoproject.com/en/dev/intro/tutorial01/).
 
-You will need to [configure Django](https://reactive-python.github.io/reactpy-django/get-started/installation/) in order to use it with ReactPy.
+ReactPy has unique [configuration instructions](https://reactive-python.github.io/reactpy-django/get-started/installation/) to use Django.
 
 ### Jupyter
 
@@ -122,7 +126,7 @@ Jupyter is an interactive computing environment that is used for data science an
 
 If you're new to Jupyter, check out the [Jupyter tutorial](https://jupyter.org/try).
 
-You will need to [configure Jupyter](https://github.com/reactive-python/reactpy-jupyter#readme) in order to use it with ReactPy.
+ReactPy has unique [configuration instructions](https://github.com/reactive-python/reactpy-jupyter#readme) to use Jupyter.
 
 ### Plotly Dash
 
@@ -136,16 +140,16 @@ Plotly Dash is a web application framework that is used to create interactive da
 
 If you're new to Plotly Dash, check out the [Plotly Dash tutorial](https://dash.plotly.com/installation).
 
-You will need to [configure Plotly Dash](https://github.com/reactive-python/reactpy-dash#readme) in order to use it with ReactPy.
+ReactPy has unique [configuration instructions](https://github.com/reactive-python/reactpy-dash#readme) to use Plotly Dash.
 
 !!! info "Deep Dive"
 
     <font size="4">**Can I use ReactPy without a backend framework?**</font>
 
-    You can not ReactPy without a backend—this project was designed to be built on-top of existing web frameworks. 
+    You can not ReactPy without a backend—this project was designed to be built on-top of existing web frameworks.
 
     Here's why.
 
     You can think of ReactPy as ReactJS server side rendering, but with a Python server. We rely on Python web frameworks and webservers in order to process ReactPy traffic. **This means that you can [use any Python web framework](../learn/creating-backends.md) as a ReactPy backend, as long as it supports the ASGI standard.** As your project grows with every new feature, you may want to switch backends in the future. As a result, we recommend keeping all backend-related logic within hook functions in order to make the "points of integration" between ReactPy and your backend as small as possible.
-	
-	**If you're building a new app or a site fully with ReactPy, we recommend using your favorite backend combined with [`reactpy-router`](https://github.com/reactive-python/reactpy-router) to create a Single Page Application (SPA).**
+
+    **If you're building a new app or a site fully with ReactPy, we recommend using your favorite backend combined with [`reactpy-router`](https://github.com/reactive-python/reactpy-router) to create a Single Page Application (SPA).**

From aec77d40818cabb9ce3c9f760256477df8126ce7 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 20:59:23 -0700
Subject: [PATCH 33/49] add installation index page

---
 docs/src/learn/installation.md | 30 ++++++++++++++++++++++++++++++
 mkdocs.yml                     |  1 +
 2 files changed, 31 insertions(+)
 create mode 100644 docs/src/learn/installation.md

diff --git a/docs/src/learn/installation.md b/docs/src/learn/installation.md
new file mode 100644
index 000000000..53a403844
--- /dev/null
+++ b/docs/src/learn/installation.md
@@ -0,0 +1,30 @@
+## Overview
+
+<p class="intro" markdown>
+
+React has been designed from the start for gradual adoption. You can use as little or as much React as you need. Whether you want to get a taste of React, add some interactivity to an HTML page, or start a complex React-powered app, this section will help you get started.
+
+</p>
+
+!!! summary "You Will Learn"
+
+    * [How to start a new React project](../learn/start-a-new-react-project.md)
+    * [How to add React to an existing project](../learn/add-react-to-an-existing-project.md)
+    * [How to set up your editor](../learn/editor-setup.md)
+    * [How to install React Developer Tools](../learn/react-developer-tools.md)
+
+## Try React
+
+You don't need to install anything to play with React. [Try ReactPy within Jupyter Notebooks](https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb)!
+
+## Start a new React project
+
+If you want to build an app or a website fully with React, [start a new React project.](../learn/start-a-new-react-project.md)
+
+## Add React to an existing project
+
+If want to try using React in your existing app or a website, [add React to an existing project.](../learn/add-react-to-an-existing-project.md)
+
+## Next steps
+
+Head to the [Quick Start](../learn/quick-start.md) guide for a tour of the most important React concepts you will encounter every day.
diff --git a/mkdocs.yml b/mkdocs.yml
index f87293536..f6b763326 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -7,6 +7,7 @@ nav:
                 - "Tutorial: Tic-Tac-Toe 🚧" : learn/tutorial-tic-tac-toe.md
                 - Thinking in React : learn/thinking-in-react.md
           - Installation:
+                - learn/installation.md
                 - Start a New React Project : learn/start-a-new-react-project.md
                 - Add React to an Existing Project 🚫 : learn/add-react-to-an-existing-project.md
                 - Editor Setup 🚧 : learn/editor-setup.md

From 7c68a4785617b25525b222e224155f575a7d3650 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 21:20:24 -0700
Subject: [PATCH 34/49] editor setup

---
 docs/src/learn/editor-setup.md | 22 +++++++++++++++++-----
 mkdocs.yml                     |  3 ++-
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/docs/src/learn/editor-setup.md b/docs/src/learn/editor-setup.md
index 3154124fb..93f7139cd 100644
--- a/docs/src/learn/editor-setup.md
+++ b/docs/src/learn/editor-setup.md
@@ -26,9 +26,19 @@ Other popular text editors used in the React community include:
 
 Some editors come with these features built in, but others might require adding an extension. Check to see what support your editor of choice provides to be sure!
 
-### Linting
+### Python Linting
 
-Code linters find problems in your code as you write, helping you fix them early. [ESLint](https://eslint.org/) is a popular, open source linter for JavaScript.
+Linting is the process of running a program that will analyse code for potential errors. [Flake8](https://flake8.pycqa.org/en/latest/) is a popular, open source linter for Python.
+
+-   [Install Flake8](https://flake8.pycqa.org/en/latest/#installation) (be sure you have [Python installed!](https://www.python.org/downloads/))
+-   [Integrate Flake8 in VSCode with the official extension](https://marketplace.visualstudio.com/items?itemName=ms-python.flake8)
+-   [Install Reactpy-Flake8](https://pypi.org/project/reactpy-flake8/) to lint your ReactPy code
+
+### JavaScript Linting
+
+You typically won't use much JavaScript alongside ReactPy, but there are still some cases where you might. For example, you might want to use JavaScript to fetch data from an API or to add some interactivity to your app.
+
+In these cases, it's helpful to have a linter that can catch common mistakes in your code as you write it. [ESLint](https://eslint.org/) is a popular, open source linter for JavaScript.
 
 -   [Install ESLint with the recommended configuration for React](https://www.npmjs.com/package/eslint-config-react-app) (be sure you have [Node installed!](https://nodejs.org/en/download/current/))
 -   [Integrate ESLint in VSCode with the official extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
@@ -42,7 +52,7 @@ The last thing you want to do when sharing your code with another contributor is
 You can install the [Prettier extension in VSCode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) by following these steps:
 
 1. Launch VS Code
-2. Use Quick Open (press Ctrl/Cmd+P)
+2. Use Quick Open, press ++ctrl+p++
 3. Paste in `ext install esbenp.prettier-vscode`
 4. Press Enter
 
@@ -50,10 +60,12 @@ You can install the [Prettier extension in VSCode](https://marketplace.visualstu
 
 Ideally, you should format your code on every save. VS Code has settings for this!
 
-1. In VS Code, press `CTRL/CMD + SHIFT + P`.
+1. In VS Code, press ++ctrl+shift+p++
 2. Type "settings"
 3. Hit Enter
 4. In the search bar, type "format on save"
 5. Be sure the "format on save" option is ticked!
 
-> If your ESLint preset has formatting rules, they may conflict with Prettier. We recommend disabling all formatting rules in your ESLint preset using [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) so that ESLint is _only_ used for catching logical mistakes. If you want to enforce that files are formatted before a pull request is merged, use [`prettier --check`](https://prettier.io/docs/en/cli.html#--check) for your continuous integration.
+!!! note
+
+    If your ESLint preset has formatting rules, they may conflict with Prettier. We recommend disabling all formatting rules in your ESLint preset using [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) so that ESLint is _only_ used for catching logical mistakes. If you want to enforce that files are formatted before a pull request is merged, use [`prettier --check`](https://prettier.io/docs/en/cli.html#--check) for your continuous integration.
diff --git a/mkdocs.yml b/mkdocs.yml
index f6b763326..405b504a3 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -10,7 +10,7 @@ nav:
                 - learn/installation.md
                 - Start a New React Project : learn/start-a-new-react-project.md
                 - Add React to an Existing Project 🚫 : learn/add-react-to-an-existing-project.md
-                - Editor Setup 🚧 : learn/editor-setup.md
+                - Editor Setup : learn/editor-setup.md
                 - React Developer Tools 🚫 : learn/react-developer-tools.md
           - More Tutorials:
                 - "Tutorial: React Bootstrap 🚫" : learn/tutorial-react-bootstrap.md
@@ -141,6 +141,7 @@ markdown_extensions:
     - admonition
     - attr_list
     - md_in_html
+    - pymdownx.keys
 
 plugins:
     - search

From 302f1335ec4b216b534ed4a8c9036e19beb73b95 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 21:21:04 -0700
Subject: [PATCH 35/49] remove unneeded space

---
 mkdocs.yml | 160 ++++++++++++++++++++++++++---------------------------
 1 file changed, 80 insertions(+), 80 deletions(-)

diff --git a/mkdocs.yml b/mkdocs.yml
index 405b504a3..bce2c9b32 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -4,99 +4,99 @@ nav:
     - Get Started:
           - Quick Start:
                 - learn/quick-start.md
-                - "Tutorial: Tic-Tac-Toe 🚧" : learn/tutorial-tic-tac-toe.md
-                - Thinking in React : learn/thinking-in-react.md
+                - "Tutorial: Tic-Tac-Toe 🚧": learn/tutorial-tic-tac-toe.md
+                - Thinking in React: learn/thinking-in-react.md
           - Installation:
                 - learn/installation.md
-                - Start a New React Project : learn/start-a-new-react-project.md
-                - Add React to an Existing Project 🚫 : learn/add-react-to-an-existing-project.md
-                - Editor Setup : learn/editor-setup.md
-                - React Developer Tools 🚫 : learn/react-developer-tools.md
+                - Start a New React Project: learn/start-a-new-react-project.md
+                - Add React to an Existing Project 🚫: learn/add-react-to-an-existing-project.md
+                - Editor Setup: learn/editor-setup.md
+                - React Developer Tools 🚫: learn/react-developer-tools.md
           - More Tutorials:
-                - "Tutorial: React Bootstrap 🚫" : learn/tutorial-react-bootstrap.md
-                - "Tutorial: Material UI 🚫" : learn/tutorial-material-ui.md
+                - "Tutorial: React Bootstrap 🚫": learn/tutorial-react-bootstrap.md
+                - "Tutorial: Material UI 🚫": learn/tutorial-material-ui.md
     - Learn React:
           - Describing the UI:
-                - Your First Component 🚧 : learn/your-first-component.md
-                - Importing and Exporting Components 🚧 : learn/importing-and-exporting-components.md
-                - Writing Markup with PSX 🚫 : learn/writing-markup-with-psx.md
-                - Python in PSX with Curly Braces 🚫 : learn/python-in-psx-with-curly-braces.md
-                - Passing Props to a Component 🚧 : learn/passing-props-to-a-component.md
-                - Conditional Rendering 🚧 : learn/conditional-rendering.md
-                - Rendering Lists 🚧 : learn/rendering-lists.md
-                - Keeping Components Pure 🚧 : learn/keeping-components-pure.md
+                - Your First Component 🚧: learn/your-first-component.md
+                - Importing and Exporting Components 🚧: learn/importing-and-exporting-components.md
+                - Writing Markup with PSX 🚫: learn/writing-markup-with-psx.md
+                - Python in PSX with Curly Braces 🚫: learn/python-in-psx-with-curly-braces.md
+                - Passing Props to a Component 🚧: learn/passing-props-to-a-component.md
+                - Conditional Rendering 🚧: learn/conditional-rendering.md
+                - Rendering Lists 🚧: learn/rendering-lists.md
+                - Keeping Components Pure 🚧: learn/keeping-components-pure.md
           - Adding Interactivity:
-                - Responding to Events 🚧 : learn/responding-to-events.md
-                - "State: A Component's Memory 🚧" : learn/state-a-components-memory.md
-                - Render and Commit 🚧 : learn/render-and-commit.md
-                - State as a Snapshot 🚧 : learn/state-as-a-snapshot.md
-                - Queueing a Series of State Updates 🚧 : learn/queueing-a-series-of-state-updates.md
-                - Updating Objects in State 🚧 : learn/updating-objects-in-state.md
-                - Updating Arrays in State 🚧 : learn/updating-arrays-in-state.md
+                - Responding to Events 🚧: learn/responding-to-events.md
+                - "State: A Component's Memory 🚧": learn/state-a-components-memory.md
+                - Render and Commit 🚧: learn/render-and-commit.md
+                - State as a Snapshot 🚧: learn/state-as-a-snapshot.md
+                - Queueing a Series of State Updates 🚧: learn/queueing-a-series-of-state-updates.md
+                - Updating Objects in State 🚧: learn/updating-objects-in-state.md
+                - Updating Arrays in State 🚧: learn/updating-arrays-in-state.md
           - Managing State:
-                - Reacting to Input with State 🚧 : learn/reacting-to-input-with-state.md
-                - Choosing the State Structure 🚧 : learn/choosing-the-state-structure.md
-                - Sharing State Between Components 🚧 : learn/sharing-state-between-components.md
-                - Preserving and Resetting State 🚧 : learn/preserving-and-resetting-state.md
-                - Extracting State Logic into a Reducer 🚧 : learn/extracting-state-logic-into-a-reducer.md
-                - Passing Data Deeply with Context 🚧 : learn/passing-data-deeply-with-context.md
-                - Scaling Up with Reducer and Context 🚧 : learn/scaling-up-with-reducer-and-context.md
+                - Reacting to Input with State 🚧: learn/reacting-to-input-with-state.md
+                - Choosing the State Structure 🚧: learn/choosing-the-state-structure.md
+                - Sharing State Between Components 🚧: learn/sharing-state-between-components.md
+                - Preserving and Resetting State 🚧: learn/preserving-and-resetting-state.md
+                - Extracting State Logic into a Reducer 🚧: learn/extracting-state-logic-into-a-reducer.md
+                - Passing Data Deeply with Context 🚧: learn/passing-data-deeply-with-context.md
+                - Scaling Up with Reducer and Context 🚧: learn/scaling-up-with-reducer-and-context.md
           - Escape Hatches:
-                - Referencing Values with Refs 🚧 : learn/referencing-values-with-refs.md
-                - Manipulating the DOM with Refs 🚧 : learn/manipulating-the-dom-with-refs.md
-                - Synchronizing with Effects 🚧 : learn/synchronizing-with-effects.md
-                - You Might Not Need an Effect 🚧 : learn/you-might-not-need-an-effect.md
-                - Lifecycle of Reactive Effects 🚧 : learn/lifecycle-of-reactive-effects.md
-                - Separating Events from Effects 🚧 : learn/separating-events-from-effects.md
-                - Removing Effect Dependencies 🚧 : learn/removing-effect-dependencies.md
-                - Reusing Logic with Custom Hooks 🚧 : learn/reusing-logic-with-custom-hooks.md
-                - Communicating Data Between Server and Client 🚧 : learn/communicate-data-between-server-and-client.md
-                - Convert Between VDOM and HTML 🚧 : learn/convert-between-vdom-and-html.md
-                - VDOM Mutations 🚧 : learn/vdom-mutations.md
-                - Creating VDOM Event Handlers 🚧 : learn/creating-vdom-event-handlers.md
-                - Creating HTML Tags 🚧 : learn/creating-html-tags.md
-                - Creating Backends 🚧 : learn/creating-backends.md
-                - Manually Register a Client 🚧 : learn/manually-register-a-client.md
+                - Referencing Values with Refs 🚧: learn/referencing-values-with-refs.md
+                - Manipulating the DOM with Refs 🚧: learn/manipulating-the-dom-with-refs.md
+                - Synchronizing with Effects 🚧: learn/synchronizing-with-effects.md
+                - You Might Not Need an Effect 🚧: learn/you-might-not-need-an-effect.md
+                - Lifecycle of Reactive Effects 🚧: learn/lifecycle-of-reactive-effects.md
+                - Separating Events from Effects 🚧: learn/separating-events-from-effects.md
+                - Removing Effect Dependencies 🚧: learn/removing-effect-dependencies.md
+                - Reusing Logic with Custom Hooks 🚧: learn/reusing-logic-with-custom-hooks.md
+                - Communicating Data Between Server and Client 🚧: learn/communicate-data-between-server-and-client.md
+                - Convert Between VDOM and HTML 🚧: learn/convert-between-vdom-and-html.md
+                - VDOM Mutations 🚧: learn/vdom-mutations.md
+                - Creating VDOM Event Handlers 🚧: learn/creating-vdom-event-handlers.md
+                - Creating HTML Tags 🚧: learn/creating-html-tags.md
+                - Creating Backends 🚧: learn/creating-backends.md
+                - Manually Register a Client 🚧: learn/manually-register-a-client.md
     - Reference:
           - Hooks:
-                - Use State 🚧 : reference/use-state.md
-                - Use Effect 🚧 : reference/use-effect.md
-                - Use Context 🚧 : reference/use-context.md
-                - Use Reducer 🚧 : reference/use-reducer.md
-                - Use Callback 🚧 : reference/use-callback.md
-                - Use Memo 🚧 : reference/use-memo.md
-                - Use Ref 🚧 : reference/use-ref.md
-                - Use Debug Value 🚧 : reference/use-debug-value.md
-                - Use Connection 🚧 : reference/use-connection.md
-                - Use Scope 🚧 : reference/use-scope.md
-                - Use Location 🚧 : reference/use-location.md
-                - Use ID 🚫 : reference/use-id.md
-                - Use Deferred Value 🚫 : reference/use-deferred-value.md
-                - Use Imperative Handle 🚫 : reference/use-imperative-handle.md
-                - Use Insertion Effect 🚫 : reference/use-insertion-effect.md
-                - Use Layout Effect 🚫 : reference/use-layout-effect.md
-                - Use Sync External Store 🚫 : reference/use-sync-external-store.md
-                - Use Transition 🚫 : reference/use-transition.md
+                - Use State 🚧: reference/use-state.md
+                - Use Effect 🚧: reference/use-effect.md
+                - Use Context 🚧: reference/use-context.md
+                - Use Reducer 🚧: reference/use-reducer.md
+                - Use Callback 🚧: reference/use-callback.md
+                - Use Memo 🚧: reference/use-memo.md
+                - Use Ref 🚧: reference/use-ref.md
+                - Use Debug Value 🚧: reference/use-debug-value.md
+                - Use Connection 🚧: reference/use-connection.md
+                - Use Scope 🚧: reference/use-scope.md
+                - Use Location 🚧: reference/use-location.md
+                - Use ID 🚫: reference/use-id.md
+                - Use Deferred Value 🚫: reference/use-deferred-value.md
+                - Use Imperative Handle 🚫: reference/use-imperative-handle.md
+                - Use Insertion Effect 🚫: reference/use-insertion-effect.md
+                - Use Layout Effect 🚫: reference/use-layout-effect.md
+                - Use Sync External Store 🚫: reference/use-sync-external-store.md
+                - Use Transition 🚫: reference/use-transition.md
           - HTML Tags:
-                - Common Props 🚧 : reference/common-props.md
-                - Usage 🚧 : reference/usage.md
+                - Common Props 🚧: reference/common-props.md
+                - Usage 🚧: reference/usage.md
           - Backends:
-                - FastAPI 🚧 : reference/fastapi.md
-                - Flask 🚧 : reference/flask.md
-                - Sanic 🚧 : reference/sanic.md
-                - Starlette 🚧 : reference/starlette.md
-                - Tornado 🚧 : reference/tornado.md
-                - Django 🚧 : reference/django.md
-                - Jupyter 🚧 : reference/jupyter.md
-                - Plotly Dash 🚧 : reference/plotly-dash.md
-          - Protocol Structure 🚧 : reference/protocol-structure.md
-          - Client API 🚧 : reference/client-api.md
+                - FastAPI 🚧: reference/fastapi.md
+                - Flask 🚧: reference/flask.md
+                - Sanic 🚧: reference/sanic.md
+                - Starlette 🚧: reference/starlette.md
+                - Tornado 🚧: reference/tornado.md
+                - Django 🚧: reference/django.md
+                - Jupyter 🚧: reference/jupyter.md
+                - Plotly Dash 🚧: reference/plotly-dash.md
+          - Protocol Structure 🚧: reference/protocol-structure.md
+          - Client API 🚧: reference/client-api.md
     - About ReactPy:
-          - Changelog 🚧 : about/changelog.md
-          - Community 🚧 : about/community.md
-          - Running Tests 🚧 : about/running-tests.md
-          - Contributing Code 🚧 : about/code.md
-          - Contributing Documentation 🚧 : about/docs.md
+          - Changelog 🚧: about/changelog.md
+          - Community 🚧: about/community.md
+          - Running Tests 🚧: about/running-tests.md
+          - Contributing Code 🚧: about/code.md
+          - Contributing Documentation 🚧: about/docs.md
 
 theme:
     name: material

From 11aa58a5852ba84c1033073f1764cfc99634265a Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 20 Jun 2023 22:37:58 -0700
Subject: [PATCH 36/49] format everything

---
 docs/src/learn/add-react-to-an-existing-project.md      | 1 -
 docs/src/learn/choosing-the-state-structure.md          | 1 -
 docs/src/learn/conditional-rendering.md                 | 1 -
 docs/src/learn/editor-setup.md                          | 1 -
 docs/src/learn/extracting-state-logic-into-a-reducer.md | 1 -
 docs/src/learn/importing-and-exporting-components.md    | 1 -
 docs/src/learn/keeping-components-pure.md               | 1 -
 docs/src/learn/lifecycle-of-reactive-effects.md         | 1 -
 docs/src/learn/manipulating-the-dom-with-refs.md        | 1 -
 docs/src/learn/passing-data-deeply-with-context.md      | 1 -
 docs/src/learn/passing-props-to-a-component.md          | 1 -
 docs/src/learn/preserving-and-resetting-state.md        | 1 -
 docs/src/learn/python-in-psx-with-curly-braces.md       | 1 -
 docs/src/learn/queueing-a-series-of-state-updates.md    | 1 -
 docs/src/learn/react-developer-tools.md                 | 1 -
 docs/src/learn/reacting-to-input-with-state.md          | 1 -
 docs/src/learn/referencing-values-with-refs.md          | 1 -
 docs/src/learn/removing-effect-dependencies.md          | 1 -
 docs/src/learn/render-and-commit.md                     | 1 -
 docs/src/learn/rendering-lists.md                       | 1 -
 docs/src/learn/responding-to-events.md                  | 1 -
 docs/src/learn/reusing-logic-with-custom-hooks.md       | 1 -
 docs/src/learn/scaling-up-with-reducer-and-context.md   | 1 -
 docs/src/learn/separating-events-from-effects.md        | 1 -
 docs/src/learn/sharing-state-between-components.md      | 1 -
 docs/src/learn/state-a-components-memory.md             | 1 -
 docs/src/learn/state-as-a-snapshot.md                   | 1 -
 docs/src/learn/synchronizing-with-effects.md            | 1 -
 docs/src/learn/thinking-in-react.md                     | 1 -
 docs/src/learn/tutorial-material-ui.md                  | 2 --
 docs/src/learn/tutorial-react-bootstrap.md              | 1 -
 docs/src/learn/tutorial-tic-tac-toe.md                  | 1 -
 docs/src/learn/updating-arrays-in-state.md              | 1 -
 docs/src/learn/updating-objects-in-state.md             | 1 -
 docs/src/learn/writing-markup-with-psx.md               | 1 -
 docs/src/learn/you-might-not-need-an-effect.md          | 1 -
 docs/src/learn/your-first-component.md                  | 1 -
 docs/src/reference/common-props.md                      | 1 -
 docs/src/reference/use-callback.md                      | 1 -
 docs/src/reference/use-context.md                       | 1 -
 docs/src/reference/use-debug-value.md                   | 1 -
 docs/src/reference/use-deferred-value.md                | 1 -
 docs/src/reference/use-effect.md                        | 1 -
 docs/src/reference/use-id.md                            | 2 --
 docs/src/reference/use-imperative-handle.md             | 1 -
 docs/src/reference/use-insertion-effect.md              | 1 -
 docs/src/reference/use-layout-effect.md                 | 1 -
 docs/src/reference/use-memo.md                          | 1 -
 docs/src/reference/use-reducer.md                       | 1 -
 docs/src/reference/use-ref.md                           | 1 -
 docs/src/reference/use-state.md                         | 1 -
 docs/src/reference/use-sync-external-store.md           | 1 -
 docs/src/reference/use-transition.md                    | 1 -
 docs/src/static/css/extra.css                           | 2 +-
 54 files changed, 1 insertion(+), 56 deletions(-)

diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index 0a2c0c9c4..39b8791ad 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -1,4 +1,3 @@
-
 !!! warning "In Progress"
 
     This feature is planned, but not yet developed.
diff --git a/docs/src/learn/choosing-the-state-structure.md b/docs/src/learn/choosing-the-state-structure.md
index 61205cd7d..dc0395c25 100644
--- a/docs/src/learn/choosing-the-state-structure.md
+++ b/docs/src/learn/choosing-the-state-structure.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/conditional-rendering.md b/docs/src/learn/conditional-rendering.md
index 46a07a4bf..f30951715 100644
--- a/docs/src/learn/conditional-rendering.md
+++ b/docs/src/learn/conditional-rendering.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/editor-setup.md b/docs/src/learn/editor-setup.md
index 93f7139cd..b02723431 100644
--- a/docs/src/learn/editor-setup.md
+++ b/docs/src/learn/editor-setup.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/extracting-state-logic-into-a-reducer.md b/docs/src/learn/extracting-state-logic-into-a-reducer.md
index ad6a6f986..7e07d6c82 100644
--- a/docs/src/learn/extracting-state-logic-into-a-reducer.md
+++ b/docs/src/learn/extracting-state-logic-into-a-reducer.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/importing-and-exporting-components.md b/docs/src/learn/importing-and-exporting-components.md
index 3fa6723db..ce43d8fb7 100644
--- a/docs/src/learn/importing-and-exporting-components.md
+++ b/docs/src/learn/importing-and-exporting-components.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/keeping-components-pure.md b/docs/src/learn/keeping-components-pure.md
index c71267f2b..2d0a7388e 100644
--- a/docs/src/learn/keeping-components-pure.md
+++ b/docs/src/learn/keeping-components-pure.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/lifecycle-of-reactive-effects.md b/docs/src/learn/lifecycle-of-reactive-effects.md
index 3d75b698b..3f7a171e2 100644
--- a/docs/src/learn/lifecycle-of-reactive-effects.md
+++ b/docs/src/learn/lifecycle-of-reactive-effects.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/manipulating-the-dom-with-refs.md b/docs/src/learn/manipulating-the-dom-with-refs.md
index 6546b032d..681a6d91e 100644
--- a/docs/src/learn/manipulating-the-dom-with-refs.md
+++ b/docs/src/learn/manipulating-the-dom-with-refs.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/passing-data-deeply-with-context.md b/docs/src/learn/passing-data-deeply-with-context.md
index eb86d3be3..d68be8040 100644
--- a/docs/src/learn/passing-data-deeply-with-context.md
+++ b/docs/src/learn/passing-data-deeply-with-context.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/passing-props-to-a-component.md b/docs/src/learn/passing-props-to-a-component.md
index 7baf53498..322d589fe 100644
--- a/docs/src/learn/passing-props-to-a-component.md
+++ b/docs/src/learn/passing-props-to-a-component.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/preserving-and-resetting-state.md b/docs/src/learn/preserving-and-resetting-state.md
index bdb130dcd..985dd5cfe 100644
--- a/docs/src/learn/preserving-and-resetting-state.md
+++ b/docs/src/learn/preserving-and-resetting-state.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/python-in-psx-with-curly-braces.md b/docs/src/learn/python-in-psx-with-curly-braces.md
index 5c93883c1..364a40404 100644
--- a/docs/src/learn/python-in-psx-with-curly-braces.md
+++ b/docs/src/learn/python-in-psx-with-curly-braces.md
@@ -1,4 +1,3 @@
-
 !!! warning "In Progress"
 
     This feature is planned, but not yet developed.
diff --git a/docs/src/learn/queueing-a-series-of-state-updates.md b/docs/src/learn/queueing-a-series-of-state-updates.md
index cd387a663..495695787 100644
--- a/docs/src/learn/queueing-a-series-of-state-updates.md
+++ b/docs/src/learn/queueing-a-series-of-state-updates.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
index a10caf229..d6a1398af 100644
--- a/docs/src/learn/react-developer-tools.md
+++ b/docs/src/learn/react-developer-tools.md
@@ -1,4 +1,3 @@
-
 !!! warning "In Progress"
 
     This feature is planned, but not yet developed.
diff --git a/docs/src/learn/reacting-to-input-with-state.md b/docs/src/learn/reacting-to-input-with-state.md
index 6cb2f701c..ac04c1d98 100644
--- a/docs/src/learn/reacting-to-input-with-state.md
+++ b/docs/src/learn/reacting-to-input-with-state.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/referencing-values-with-refs.md b/docs/src/learn/referencing-values-with-refs.md
index 9b19c46be..260812d75 100644
--- a/docs/src/learn/referencing-values-with-refs.md
+++ b/docs/src/learn/referencing-values-with-refs.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/removing-effect-dependencies.md b/docs/src/learn/removing-effect-dependencies.md
index 161c1276b..e94ee1346 100644
--- a/docs/src/learn/removing-effect-dependencies.md
+++ b/docs/src/learn/removing-effect-dependencies.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/render-and-commit.md b/docs/src/learn/render-and-commit.md
index f64da2e29..1292c1251 100644
--- a/docs/src/learn/render-and-commit.md
+++ b/docs/src/learn/render-and-commit.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/rendering-lists.md b/docs/src/learn/rendering-lists.md
index a4072a188..e684f4ea3 100644
--- a/docs/src/learn/rendering-lists.md
+++ b/docs/src/learn/rendering-lists.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/responding-to-events.md b/docs/src/learn/responding-to-events.md
index 4c12bfbbc..38eb85d51 100644
--- a/docs/src/learn/responding-to-events.md
+++ b/docs/src/learn/responding-to-events.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/reusing-logic-with-custom-hooks.md b/docs/src/learn/reusing-logic-with-custom-hooks.md
index 89b997add..6931158ca 100644
--- a/docs/src/learn/reusing-logic-with-custom-hooks.md
+++ b/docs/src/learn/reusing-logic-with-custom-hooks.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/scaling-up-with-reducer-and-context.md b/docs/src/learn/scaling-up-with-reducer-and-context.md
index a8b137a58..21239a19f 100644
--- a/docs/src/learn/scaling-up-with-reducer-and-context.md
+++ b/docs/src/learn/scaling-up-with-reducer-and-context.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/separating-events-from-effects.md b/docs/src/learn/separating-events-from-effects.md
index 615043240..69e69bcb3 100644
--- a/docs/src/learn/separating-events-from-effects.md
+++ b/docs/src/learn/separating-events-from-effects.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/sharing-state-between-components.md b/docs/src/learn/sharing-state-between-components.md
index 21cf532d5..b252d7614 100644
--- a/docs/src/learn/sharing-state-between-components.md
+++ b/docs/src/learn/sharing-state-between-components.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/state-a-components-memory.md b/docs/src/learn/state-a-components-memory.md
index 47f266d9e..26810a449 100644
--- a/docs/src/learn/state-a-components-memory.md
+++ b/docs/src/learn/state-a-components-memory.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/state-as-a-snapshot.md b/docs/src/learn/state-as-a-snapshot.md
index 57561bcb6..30894c92b 100644
--- a/docs/src/learn/state-as-a-snapshot.md
+++ b/docs/src/learn/state-as-a-snapshot.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/synchronizing-with-effects.md b/docs/src/learn/synchronizing-with-effects.md
index ef95da4cd..0b0dd29fb 100644
--- a/docs/src/learn/synchronizing-with-effects.md
+++ b/docs/src/learn/synchronizing-with-effects.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index fed0ec5e9..0328ed5df 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/tutorial-material-ui.md b/docs/src/learn/tutorial-material-ui.md
index 044fce7aa..2cde1ff69 100644
--- a/docs/src/learn/tutorial-material-ui.md
+++ b/docs/src/learn/tutorial-material-ui.md
@@ -1,5 +1,3 @@
-
-
 !!! warning "In Progress"
 
     This tutorial is planned, but is missing a key feature before this page can be written.
diff --git a/docs/src/learn/tutorial-react-bootstrap.md b/docs/src/learn/tutorial-react-bootstrap.md
index 3da9db181..2cde1ff69 100644
--- a/docs/src/learn/tutorial-react-bootstrap.md
+++ b/docs/src/learn/tutorial-react-bootstrap.md
@@ -1,4 +1,3 @@
-
 !!! warning "In Progress"
 
     This tutorial is planned, but is missing a key feature before this page can be written.
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 8c41fd0d8..49495c08e 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/updating-arrays-in-state.md b/docs/src/learn/updating-arrays-in-state.md
index abc1efc90..fe76953a3 100644
--- a/docs/src/learn/updating-arrays-in-state.md
+++ b/docs/src/learn/updating-arrays-in-state.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/updating-objects-in-state.md b/docs/src/learn/updating-objects-in-state.md
index 631f2f137..48591a018 100644
--- a/docs/src/learn/updating-objects-in-state.md
+++ b/docs/src/learn/updating-objects-in-state.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
index 788630ff1..743e69f30 100644
--- a/docs/src/learn/writing-markup-with-psx.md
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -1,4 +1,3 @@
-
 !!! warning "In Progress"
 
     This feature is planned, but not yet developed.
diff --git a/docs/src/learn/you-might-not-need-an-effect.md b/docs/src/learn/you-might-not-need-an-effect.md
index 18996927e..60eccbffb 100644
--- a/docs/src/learn/you-might-not-need-an-effect.md
+++ b/docs/src/learn/you-might-not-need-an-effect.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/learn/your-first-component.md b/docs/src/learn/your-first-component.md
index eb44b0f52..9a06e6f1c 100644
--- a/docs/src/learn/your-first-component.md
+++ b/docs/src/learn/your-first-component.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/common-props.md b/docs/src/reference/common-props.md
index 32bde6e5b..41e9048d7 100644
--- a/docs/src/reference/common-props.md
+++ b/docs/src/reference/common-props.md
@@ -1,4 +1,3 @@
-
 #### Props
 
 These special React props are supported for all built-in components:
diff --git a/docs/src/reference/use-callback.md b/docs/src/reference/use-callback.md
index ff4e6661b..563a1089e 100644
--- a/docs/src/reference/use-callback.md
+++ b/docs/src/reference/use-callback.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-context.md b/docs/src/reference/use-context.md
index 6a9e34827..02c4294d1 100644
--- a/docs/src/reference/use-context.md
+++ b/docs/src/reference/use-context.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-debug-value.md b/docs/src/reference/use-debug-value.md
index 5b3335091..37adcc537 100644
--- a/docs/src/reference/use-debug-value.md
+++ b/docs/src/reference/use-debug-value.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-deferred-value.md b/docs/src/reference/use-deferred-value.md
index 82000489b..9026564ba 100644
--- a/docs/src/reference/use-deferred-value.md
+++ b/docs/src/reference/use-deferred-value.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-effect.md b/docs/src/reference/use-effect.md
index 1a6802a40..c11ea69cd 100644
--- a/docs/src/reference/use-effect.md
+++ b/docs/src/reference/use-effect.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-id.md b/docs/src/reference/use-id.md
index f70cd7e55..1568a8fc5 100644
--- a/docs/src/reference/use-id.md
+++ b/docs/src/reference/use-id.md
@@ -1,5 +1,3 @@
-
-
 !!! warning "In Progress"
 
     This feature is planned, but not yet developed.
diff --git a/docs/src/reference/use-imperative-handle.md b/docs/src/reference/use-imperative-handle.md
index edfa59d83..21ffdd5b0 100644
--- a/docs/src/reference/use-imperative-handle.md
+++ b/docs/src/reference/use-imperative-handle.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-insertion-effect.md b/docs/src/reference/use-insertion-effect.md
index 373a7bf7b..730408621 100644
--- a/docs/src/reference/use-insertion-effect.md
+++ b/docs/src/reference/use-insertion-effect.md
@@ -1,4 +1,3 @@
-
 <Pitfall>
 
 `useInsertionEffect` is for CSS-in-JS library authors. Unless you are working on a CSS-in-JS library and need a place to inject the styles, you probably want [`useEffect`](/reference/react/useEffect) or [`useLayoutEffect`](/reference/react/useLayoutEffect) instead.
diff --git a/docs/src/reference/use-layout-effect.md b/docs/src/reference/use-layout-effect.md
index fde92f88f..bfd0c6cad 100644
--- a/docs/src/reference/use-layout-effect.md
+++ b/docs/src/reference/use-layout-effect.md
@@ -1,4 +1,3 @@
-
 <Pitfall>
 
 `useLayoutEffect` can hurt performance. Prefer [`useEffect`](/reference/react/useEffect) when possible.
diff --git a/docs/src/reference/use-memo.md b/docs/src/reference/use-memo.md
index 7fd524555..6bbd12a10 100644
--- a/docs/src/reference/use-memo.md
+++ b/docs/src/reference/use-memo.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-reducer.md b/docs/src/reference/use-reducer.md
index b9739f497..00336376f 100644
--- a/docs/src/reference/use-reducer.md
+++ b/docs/src/reference/use-reducer.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-ref.md b/docs/src/reference/use-ref.md
index 931cc21a3..4cac76685 100644
--- a/docs/src/reference/use-ref.md
+++ b/docs/src/reference/use-ref.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-state.md b/docs/src/reference/use-state.md
index c66538623..adf75fb0c 100644
--- a/docs/src/reference/use-state.md
+++ b/docs/src/reference/use-state.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-sync-external-store.md b/docs/src/reference/use-sync-external-store.md
index bfcfbd0ae..4e23591d1 100644
--- a/docs/src/reference/use-sync-external-store.md
+++ b/docs/src/reference/use-sync-external-store.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/reference/use-transition.md b/docs/src/reference/use-transition.md
index a1faa0bcb..1165fe8d9 100644
--- a/docs/src/reference/use-transition.md
+++ b/docs/src/reference/use-transition.md
@@ -1,4 +1,3 @@
-
 ## Overview
 
 <p class="intro" markdown>
diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
index 4e060a39d..5378862b0 100644
--- a/docs/src/static/css/extra.css
+++ b/docs/src/static/css/extra.css
@@ -138,7 +138,7 @@
 
 [data-md-color-scheme="slate"] .md-typeset .admonition.example code {
 	background: transparent;
-	color: #FFF;
+	color: #fff;
 }
 
 /* Move the sidebars to the edges of the page */

From ab653c5e952be1a1d5ef768ca605b72d8d14e1cc Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Tue, 27 Jun 2023 03:46:09 -0700
Subject: [PATCH 37/49] Add extras section

---
 mkdocs.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mkdocs.yml b/mkdocs.yml
index bce2c9b32..7963e1842 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -12,6 +12,7 @@ nav:
                 - Add React to an Existing Project 🚫: learn/add-react-to-an-existing-project.md
                 - Editor Setup: learn/editor-setup.md
                 - React Developer Tools 🚫: learn/react-developer-tools.md
+                - Installable Extras: learn/installable-extras.md
           - More Tutorials:
                 - "Tutorial: React Bootstrap 🚫": learn/tutorial-react-bootstrap.md
                 - "Tutorial: Material UI 🚫": learn/tutorial-material-ui.md

From 64432b23c4b47803fdde4db679e0a6dd4cc384ae Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 30 Jun 2023 16:33:39 -0700
Subject: [PATCH 38/49] Cleanup blocked pages

---
 docs/src/learn/add-react-to-an-existing-project.md | 2 +-
 docs/src/learn/extra-tools-and-packages.md         | 2 ++
 docs/src/learn/python-in-psx-with-curly-braces.md  | 2 +-
 docs/src/learn/react-developer-tools.md            | 3 ++-
 docs/src/learn/writing-markup-with-psx.md          | 9 +++++----
 mkdocs.yml                                         | 2 +-
 6 files changed, 12 insertions(+), 8 deletions(-)
 create mode 100644 docs/src/learn/extra-tools-and-packages.md

diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index 39b8791ad..928a38c6f 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -4,6 +4,7 @@
 
     See [this issue](https://github.com/reactive-python/reactpy/issues/653) for more details.
 
+<!--
 ## Overview
 
 <p class="intro" markdown>
@@ -12,7 +13,6 @@ If you want to add some interactivity to your existing project, you don't have t
 
 </p>
 
-<!--
 <Note>
 
 **You need to install [Node.js](https://nodejs.org/en/) for local development.** Although you can [try React](/learn/installation#try-react) online or with a simple HTML page, realistically most JavaScript tooling you'll want to use for development requires Node.js.
diff --git a/docs/src/learn/extra-tools-and-packages.md b/docs/src/learn/extra-tools-and-packages.md
new file mode 100644
index 000000000..17a619944
--- /dev/null
+++ b/docs/src/learn/extra-tools-and-packages.md
@@ -0,0 +1,2 @@
+- ReactPy Router
+- ReactPy Flake8
diff --git a/docs/src/learn/python-in-psx-with-curly-braces.md b/docs/src/learn/python-in-psx-with-curly-braces.md
index 364a40404..cbdd65cee 100644
--- a/docs/src/learn/python-in-psx-with-curly-braces.md
+++ b/docs/src/learn/python-in-psx-with-curly-braces.md
@@ -4,6 +4,7 @@
 
     See [this issue](https://github.com/reactive-python/reactpy/issues/918) for more details.
 
+<!--
 ## Overview
 
 <p class="intro" markdown>
@@ -19,7 +20,6 @@ JSX lets you write HTML-like markup inside a JavaScript file, keeping rendering
     -   How to call a JavaScript function inside JSX with curly braces
     -   How to use a JavaScript object inside JSX with curly braces
 
-<!--
 ## Passing strings with quotes
 
 When you want to pass a string attribute to JSX, you put it in single or double quotes:
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
index d6a1398af..c2c47c495 100644
--- a/docs/src/learn/react-developer-tools.md
+++ b/docs/src/learn/react-developer-tools.md
@@ -4,6 +4,7 @@
 
     See [this issue](https://github.com/reactive-python/reactpy/issues/1072) for more details.
 
+<!--
 ## Overview
 
 <p class="intro" markdown>
@@ -16,7 +17,7 @@ Use React Developer Tools to inspect React [components](../learn/your-first-comp
 
     -   How to install ReactPy Developer Tools
 
-<!--
+
 ## Browser extension
 
 The easiest way to debug websites built with React is to install the React Developer Tools browser extension. It is available for several popular browsers:
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
index 743e69f30..7ab3f08e5 100644
--- a/docs/src/learn/writing-markup-with-psx.md
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -4,7 +4,7 @@
 
     See [this issue](https://github.com/reactive-python/reactpy/issues/918) for more details.
 
-## Overview
+<!-- ## Overview
 
 <p class="intro" markdown>
 
@@ -20,14 +20,15 @@ _PSX_ is a syntax extension for JavaScript that lets you write HTML-like markup
 
 ## PSX: Putting markup into Python
 
-The Web has been built on HTML, CSS, and JavaScript. For many years, web developers kept content in HTML, design in CSS, and logic in JavaScript—often in separate files! Content was marked up inside HTML while the page's logic lived separately in JavaScript:
+The Web has been built on HTML, CSS, and JavaScript. For many years, web developers kept content in HTML, design in CSS, and logic in JavaScript—often in separate files! Content was marked up inside HTML while the page's logic lived separately in JavaScript: -->
 
 <!-- TODO: Diagram -->
 
-But as the Web became more interactive, logic increasingly determined content. Scripting languages are now in charge of the HTML! This is why **in React, rendering logic and markup live together in the same place—components.**
+<!-- But as the Web became more interactive, logic increasingly determined content. Scripting languages are now in charge of the HTML! This is why **in React, rendering logic and markup live together in the same place—components.** -->
 
 <!-- TODO: Diagram -->
 
+<!--
 Keeping a button's rendering logic and markup together ensures that they stay in sync with each other on every edit. Conversely, details that are unrelated, such as the button's markup and a sidebar's markup, are isolated from each other, making it safer to change either of them on their own.
 
 Each React component is a JavaScript function that may contain some markup that React renders into the browser. React components use a syntax extension called PSX to represent that markup. PSX looks a lot like HTML, but it is a bit stricter and can display dynamic information. The best way to understand this is to convert some HTML markup to PSX markup.
@@ -36,7 +37,7 @@ Each React component is a JavaScript function that may contain some markup that
 
     PSX and ReactPy are two separate things. They're often used together, but you _can_ use them independently of each other. PSX is a syntax extension, while ReactPy is a Python library.
 
-<!-- ## Converting HTML to PSX
+ ## Converting HTML to PSX
 
 Suppose that you have some (perfectly valid) HTML:
 
diff --git a/mkdocs.yml b/mkdocs.yml
index 7963e1842..92e9ab831 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -12,7 +12,7 @@ nav:
                 - Add React to an Existing Project 🚫: learn/add-react-to-an-existing-project.md
                 - Editor Setup: learn/editor-setup.md
                 - React Developer Tools 🚫: learn/react-developer-tools.md
-                - Installable Extras: learn/installable-extras.md
+                - Extra Tools and Packages 🚧: learn/extra-tools-and-packages.md
           - More Tutorials:
                 - "Tutorial: React Bootstrap 🚫": learn/tutorial-react-bootstrap.md
                 - "Tutorial: Material UI 🚫": learn/tutorial-material-ui.md

From 260b5e5972b99773827f70bda4e77ea406f0f068 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 30 Jun 2023 16:40:11 -0700
Subject: [PATCH 39/49] change undeveloped warning text

---
 docs/src/learn/add-react-to-an-existing-project.md | 2 +-
 docs/src/learn/python-in-psx-with-curly-braces.md  | 2 +-
 docs/src/learn/react-developer-tools.md            | 2 +-
 docs/src/learn/tutorial-material-ui.md             | 2 +-
 docs/src/learn/tutorial-react-bootstrap.md         | 2 +-
 docs/src/learn/writing-markup-with-psx.md          | 2 +-
 docs/src/reference/use-deferred-value.md           | 6 +++++-
 docs/src/reference/use-id.md                       | 6 +++---
 docs/src/reference/use-imperative-handle.md        | 8 ++++++--
 docs/src/reference/use-insertion-effect.md         | 6 +++++-
 docs/src/reference/use-layout-effect.md            | 6 +++++-
 docs/src/reference/use-sync-external-store.md      | 6 +++++-
 docs/src/reference/use-transition.md               | 6 +++++-
 13 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index 928a38c6f..a2fdb0a3d 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -1,4 +1,4 @@
-!!! warning "In Progress"
+!!! warning "Planned / Undeveloped"
 
     This feature is planned, but not yet developed.
 
diff --git a/docs/src/learn/python-in-psx-with-curly-braces.md b/docs/src/learn/python-in-psx-with-curly-braces.md
index cbdd65cee..aa1e92529 100644
--- a/docs/src/learn/python-in-psx-with-curly-braces.md
+++ b/docs/src/learn/python-in-psx-with-curly-braces.md
@@ -1,4 +1,4 @@
-!!! warning "In Progress"
+!!! warning "Planned / Undeveloped"
 
     This feature is planned, but not yet developed.
 
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
index c2c47c495..d7b075705 100644
--- a/docs/src/learn/react-developer-tools.md
+++ b/docs/src/learn/react-developer-tools.md
@@ -1,4 +1,4 @@
-!!! warning "In Progress"
+!!! warning "Planned / Undeveloped"
 
     This feature is planned, but not yet developed.
 
diff --git a/docs/src/learn/tutorial-material-ui.md b/docs/src/learn/tutorial-material-ui.md
index 2cde1ff69..a1a5d86f9 100644
--- a/docs/src/learn/tutorial-material-ui.md
+++ b/docs/src/learn/tutorial-material-ui.md
@@ -1,4 +1,4 @@
-!!! warning "In Progress"
+!!! warning "Planned / Undeveloped"
 
     This tutorial is planned, but is missing a key feature before this page can be written.
 
diff --git a/docs/src/learn/tutorial-react-bootstrap.md b/docs/src/learn/tutorial-react-bootstrap.md
index 2cde1ff69..a1a5d86f9 100644
--- a/docs/src/learn/tutorial-react-bootstrap.md
+++ b/docs/src/learn/tutorial-react-bootstrap.md
@@ -1,4 +1,4 @@
-!!! warning "In Progress"
+!!! warning "Planned / Undeveloped"
 
     This tutorial is planned, but is missing a key feature before this page can be written.
 
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
index 7ab3f08e5..6a96023ee 100644
--- a/docs/src/learn/writing-markup-with-psx.md
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -1,4 +1,4 @@
-!!! warning "In Progress"
+!!! warning "Planned / Undeveloped"
 
     This feature is planned, but not yet developed.
 
diff --git a/docs/src/reference/use-deferred-value.md b/docs/src/reference/use-deferred-value.md
index 9026564ba..7110f7ddd 100644
--- a/docs/src/reference/use-deferred-value.md
+++ b/docs/src/reference/use-deferred-value.md
@@ -1,3 +1,7 @@
+!!! warning "Planned / Undeveloped"
+
+    This feature is planned, but not yet developed.
+<!-- 
 ## Overview
 
 <p class="intro" markdown>
@@ -988,4 +992,4 @@ Also, unlike with debouncing or throttling, deferred re-renders done by `useDefe
 
 If the work you're optimizing doesn't happen during rendering, debouncing and throttling are still useful. For example, they can let you fire fewer network requests. You can also use these techniques together.
 
-</DeepDive>
+</DeepDive> -->
diff --git a/docs/src/reference/use-id.md b/docs/src/reference/use-id.md
index 1568a8fc5..be721c721 100644
--- a/docs/src/reference/use-id.md
+++ b/docs/src/reference/use-id.md
@@ -1,9 +1,9 @@
-!!! warning "In Progress"
+!!! warning "Planned / Undeveloped"
 
     This feature is planned, but not yet developed.
 
     See [this issue](https://github.com/reactive-python/reactpy/issues/985) for more details.
-
+<!-- 
 ## Overview
 
 <p class="intro" markdown>
@@ -285,4 +285,4 @@ root2.render(<App />);
 input {
 	margin: 5px;
 }
-```
+``` -->
diff --git a/docs/src/reference/use-imperative-handle.md b/docs/src/reference/use-imperative-handle.md
index 21ffdd5b0..f6c227fc2 100644
--- a/docs/src/reference/use-imperative-handle.md
+++ b/docs/src/reference/use-imperative-handle.md
@@ -1,4 +1,8 @@
-## Overview
+!!! warning "Planned / Undeveloped"
+
+    This feature is planned, but not yet developed.
+
+<!-- ## Overview
 
 <p class="intro" markdown>
 
@@ -290,4 +294,4 @@ export default AddComment;
 
 **If you can express something as a prop, you should not use a ref.** For example, instead of exposing an imperative handle like `{ open, close }` from a `Modal` component, it is better to take `isOpen` as a prop like `<Modal isOpen={isOpen} />`. [Effects](/learn/synchronizing-with-effects) can help you expose imperative behaviors via props.
 
-</Pitfall>
+</Pitfall> -->
diff --git a/docs/src/reference/use-insertion-effect.md b/docs/src/reference/use-insertion-effect.md
index 730408621..edc9b2a93 100644
--- a/docs/src/reference/use-insertion-effect.md
+++ b/docs/src/reference/use-insertion-effect.md
@@ -1,3 +1,7 @@
+!!! warning "Planned / Undeveloped"
+
+    This feature is planned, but not yet developed.
+<!-- 
 <Pitfall>
 
 `useInsertionEffect` is for CSS-in-JS library authors. Unless you are working on a CSS-in-JS library and need a place to inject the styles, you probably want [`useEffect`](/reference/react/useEffect) or [`useLayoutEffect`](/reference/react/useLayoutEffect) instead.
@@ -132,4 +136,4 @@ If you insert styles during rendering and React is processing a [non-blocking up
 
 `useInsertionEffect` is better than inserting styles during [`useLayoutEffect`](/reference/react/useLayoutEffect) or [`useEffect`](/reference/react/useEffect) because it ensures that by the time other Effects run in your components, the `<style>` tags have already been inserted. Otherwise, layout calculations in regular Effects would be wrong due to outdated styles.
 
-</DeepDive>
+</DeepDive> -->
diff --git a/docs/src/reference/use-layout-effect.md b/docs/src/reference/use-layout-effect.md
index bfd0c6cad..ab6b44469 100644
--- a/docs/src/reference/use-layout-effect.md
+++ b/docs/src/reference/use-layout-effect.md
@@ -1,3 +1,7 @@
+!!! warning "Planned / Undeveloped"
+
+    This feature is planned, but not yet developed.
+<!-- 
 <Pitfall>
 
 `useLayoutEffect` can hurt performance. Prefer [`useEffect`](/reference/react/useEffect) when possible.
@@ -683,4 +687,4 @@ However, if you're running into this problem, you have a few different options:
 
 -   Alternatively, you can render a component with `useLayoutEffect` only after hydration. Keep a boolean `isMounted` state that's initialized to `false`, and set it to `true` inside a `useEffect` call. Your rendering logic can then be like `return isMounted ? <RealContent /> : <FallbackContent />`. On the server and during the hydration, the user will see `FallbackContent` which should not call `useLayoutEffect`. Then React will replace it with `RealContent` which runs on the client only and can include `useLayoutEffect` calls.
 
--   If you synchronize your component with an external data store and rely on `useLayoutEffect` for different reasons than measuring layout, consider [`useSyncExternalStore`](/reference/react/useSyncExternalStore) instead which [supports server rendering.](/reference/react/useSyncExternalStore#adding-support-for-server-rendering)
+-   If you synchronize your component with an external data store and rely on `useLayoutEffect` for different reasons than measuring layout, consider [`useSyncExternalStore`](/reference/react/useSyncExternalStore) instead which [supports server rendering.](/reference/react/useSyncExternalStore#adding-support-for-server-rendering) -->
diff --git a/docs/src/reference/use-sync-external-store.md b/docs/src/reference/use-sync-external-store.md
index 4e23591d1..3b24dbfe8 100644
--- a/docs/src/reference/use-sync-external-store.md
+++ b/docs/src/reference/use-sync-external-store.md
@@ -1,3 +1,7 @@
+!!! warning "Planned / Undeveloped"
+
+    This feature is planned, but not yet developed.
+<!-- 
 ## Overview
 
 <p class="intro" markdown>
@@ -422,4 +426,4 @@ function ChatIndicator({ userId }) {
 
 	// ...
 }
-```
+``` -->
diff --git a/docs/src/reference/use-transition.md b/docs/src/reference/use-transition.md
index 1165fe8d9..a0930af11 100644
--- a/docs/src/reference/use-transition.md
+++ b/docs/src/reference/use-transition.md
@@ -1,3 +1,7 @@
+!!! warning "Planned / Undeveloped"
+
+    This feature is planned, but not yet developed.
+<!-- 	
 ## Overview
 
 <p class="intro" markdown>
@@ -1580,4 +1584,4 @@ function setState() {
 		// ... schedule an urgent state update ...
 	}
 }
-```
+``` -->

From 1ffc0d91cbb45a4ff8511c24d78967bee79cb26d Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Wed, 12 Jul 2023 22:57:52 -0700
Subject: [PATCH 40/49] add pyscript backend

---
 mkdocs.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mkdocs.yml b/mkdocs.yml
index 92e9ab831..77faa37cd 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -90,6 +90,7 @@ nav:
                 - Django 🚧: reference/django.md
                 - Jupyter 🚧: reference/jupyter.md
                 - Plotly Dash 🚧: reference/plotly-dash.md
+                - PyScript 🚫: reference/pyscript.md
           - Protocol Structure 🚧: reference/protocol-structure.md
           - Client API 🚧: reference/client-api.md
     - About ReactPy:

From 106a128e47f61a10f0582d2066eaa6f6c1f3d97f Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 27 Aug 2023 04:17:20 -0700
Subject: [PATCH 41/49] add mike

---
 docs/requirements.txt | 1 +
 mkdocs.yml            | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/docs/requirements.txt b/docs/requirements.txt
index 612b7fe7a..0e7af6eb3 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -7,3 +7,4 @@ mkdocs-spellcheck[all]
 mkdocs-git-authors-plugin
 mkdocs-minify-plugin
 mkdocs-section-index
+mike
diff --git a/mkdocs.yml b/mkdocs.yml
index 77faa37cd..e7e36fc7b 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -164,6 +164,8 @@ plugins:
 
 extra:
     generator: false
+    version:
+        provider: mike
 
 extra_javascript:
     - static/js/extra.js

From b505d034552a131ee14de44c2f93eb75dbd1d734 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Sun, 27 Aug 2023 04:17:28 -0700
Subject: [PATCH 42/49] sync styles to django

---
 docs/src/static/css/extra.css | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
index 5378862b0..d39676668 100644
--- a/docs/src/static/css/extra.css
+++ b/docs/src/static/css/extra.css
@@ -24,6 +24,7 @@
 
 /* General admonition styling */
 /* TODO: Write this in a way that supports the light theme */
+[data-md-color-scheme="slate"] .md-typeset details,
 [data-md-color-scheme="slate"] .md-typeset .admonition {
 	border-color: transparent !important;
 }
@@ -36,6 +37,11 @@
 	font-size: 0.7rem;
 }
 
+.md-typeset .admonition:focus-within,
+.md-typeset details:focus-within {
+	box-shadow: var(--md-shadow-z1) !important;
+}
+
 /* Colors for "summary" admonition */
 [data-md-color-scheme="slate"] .md-typeset .admonition.summary {
 	background: #353a45;
@@ -227,6 +233,7 @@
 		margin: 0;
 		border-radius: 0 10px 10px 0;
 		font-weight: 600;
+		overflow: hidden;
 	}
 
 	.md-sidebar__scrollwrap {
@@ -341,15 +348,15 @@ h2#overview {
 }
 
 .md-typeset .tabbed-block {
-	border-bottom-left-radius: 16px;
-	border-bottom-right-radius: 16px;
-	border-bottom: 20px solid var(--tabbed-labels-color);
+	border-bottom-left-radius: 8px;
+	border-bottom-right-radius: 8px;
+	overflow: hidden;
 }
 
 .js .md-typeset .tabbed-labels {
 	background: var(--tabbed-labels-color);
-	border-top-left-radius: 16px;
-	border-top-right-radius: 16px;
+	border-top-left-radius: 8px;
+	border-top-right-radius: 8px;
 }
 
 .md-typeset .tabbed-labels > label {
@@ -362,3 +369,8 @@ h2#overview {
 .md-typeset pre > code {
 	max-height: var(--code-max-height);
 }
+
+/* Reduce height of outdated banner */
+.md-banner__inner {
+	margin: 0.45rem auto;
+}

From c9964f6c0c943293729a5c84ac3706850044c31c Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Mon, 28 Aug 2023 01:11:22 -0700
Subject: [PATCH 43/49] Change you will learn" capitalization

---
 docs/src/learn/choosing-the-state-structure.md          | 2 +-
 docs/src/learn/conditional-rendering.md                 | 2 +-
 docs/src/learn/editor-setup.md                          | 2 +-
 docs/src/learn/extracting-state-logic-into-a-reducer.md | 2 +-
 docs/src/learn/importing-and-exporting-components.md    | 2 +-
 docs/src/learn/installation.md                          | 2 +-
 docs/src/learn/keeping-components-pure.md               | 2 +-
 docs/src/learn/lifecycle-of-reactive-effects.md         | 2 +-
 docs/src/learn/manipulating-the-dom-with-refs.md        | 2 +-
 docs/src/learn/passing-data-deeply-with-context.md      | 2 +-
 docs/src/learn/passing-props-to-a-component.md          | 2 +-
 docs/src/learn/preserving-and-resetting-state.md        | 2 +-
 docs/src/learn/python-in-psx-with-curly-braces.md       | 2 +-
 docs/src/learn/queueing-a-series-of-state-updates.md    | 2 +-
 docs/src/learn/quick-start.md                           | 2 +-
 docs/src/learn/react-developer-tools.md                 | 2 +-
 docs/src/learn/reacting-to-input-with-state.md          | 2 +-
 docs/src/learn/referencing-values-with-refs.md          | 2 +-
 docs/src/learn/removing-effect-dependencies.md          | 2 +-
 docs/src/learn/render-and-commit.md                     | 2 +-
 docs/src/learn/rendering-lists.md                       | 2 +-
 docs/src/learn/responding-to-events.md                  | 2 +-
 docs/src/learn/reusing-logic-with-custom-hooks.md       | 2 +-
 docs/src/learn/scaling-up-with-reducer-and-context.md   | 2 +-
 docs/src/learn/separating-events-from-effects.md        | 2 +-
 docs/src/learn/sharing-state-between-components.md      | 2 +-
 docs/src/learn/state-a-components-memory.md             | 2 +-
 docs/src/learn/state-as-a-snapshot.md                   | 2 +-
 docs/src/learn/synchronizing-with-effects.md            | 2 +-
 docs/src/learn/updating-arrays-in-state.md              | 2 +-
 docs/src/learn/updating-objects-in-state.md             | 2 +-
 docs/src/learn/writing-markup-with-psx.md               | 2 +-
 docs/src/learn/you-might-not-need-an-effect.md          | 2 +-
 docs/src/learn/your-first-component.md                  | 2 +-
 34 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/docs/src/learn/choosing-the-state-structure.md b/docs/src/learn/choosing-the-state-structure.md
index dc0395c25..c582becee 100644
--- a/docs/src/learn/choosing-the-state-structure.md
+++ b/docs/src/learn/choosing-the-state-structure.md
@@ -6,7 +6,7 @@ Structuring state well can make a difference between a component that is pleasan
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   When to use a single vs multiple state variables
     -   What to avoid when organizing state
diff --git a/docs/src/learn/conditional-rendering.md b/docs/src/learn/conditional-rendering.md
index f30951715..47ac5b3ef 100644
--- a/docs/src/learn/conditional-rendering.md
+++ b/docs/src/learn/conditional-rendering.md
@@ -6,7 +6,7 @@ Your components will often need to display different things depending on differe
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to return different JSX depending on a condition
     -   How to conditionally include or exclude a piece of JSX
diff --git a/docs/src/learn/editor-setup.md b/docs/src/learn/editor-setup.md
index b02723431..e7fe53731 100644
--- a/docs/src/learn/editor-setup.md
+++ b/docs/src/learn/editor-setup.md
@@ -6,7 +6,7 @@ A properly configured editor can make code clearer to read and faster to write.
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What the most popular editors are
     -   How to format your code automatically
diff --git a/docs/src/learn/extracting-state-logic-into-a-reducer.md b/docs/src/learn/extracting-state-logic-into-a-reducer.md
index 7e07d6c82..bf871ac88 100644
--- a/docs/src/learn/extracting-state-logic-into-a-reducer.md
+++ b/docs/src/learn/extracting-state-logic-into-a-reducer.md
@@ -6,7 +6,7 @@ Components with many state updates spread across many event handlers can get ove
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What a reducer function is
     -   How to refactor `useState` to `useReducer`
diff --git a/docs/src/learn/importing-and-exporting-components.md b/docs/src/learn/importing-and-exporting-components.md
index ce43d8fb7..e69853c7b 100644
--- a/docs/src/learn/importing-and-exporting-components.md
+++ b/docs/src/learn/importing-and-exporting-components.md
@@ -6,7 +6,7 @@ The magic of components lies in their reusability: you can create components tha
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What a root component file is
     -   How to import and export a component
diff --git a/docs/src/learn/installation.md b/docs/src/learn/installation.md
index 53a403844..7da6f960e 100644
--- a/docs/src/learn/installation.md
+++ b/docs/src/learn/installation.md
@@ -6,7 +6,7 @@ React has been designed from the start for gradual adoption. You can use as litt
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     * [How to start a new React project](../learn/start-a-new-react-project.md)
     * [How to add React to an existing project](../learn/add-react-to-an-existing-project.md)
diff --git a/docs/src/learn/keeping-components-pure.md b/docs/src/learn/keeping-components-pure.md
index 2d0a7388e..833527bdd 100644
--- a/docs/src/learn/keeping-components-pure.md
+++ b/docs/src/learn/keeping-components-pure.md
@@ -6,7 +6,7 @@ Some JavaScript functions are _pure._ Pure functions only perform a calculation
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What purity is and how it helps you avoid bugs
     -   How to keep components pure by keeping changes out of the render phase
diff --git a/docs/src/learn/lifecycle-of-reactive-effects.md b/docs/src/learn/lifecycle-of-reactive-effects.md
index 3f7a171e2..9192d6ad0 100644
--- a/docs/src/learn/lifecycle-of-reactive-effects.md
+++ b/docs/src/learn/lifecycle-of-reactive-effects.md
@@ -6,7 +6,7 @@ Effects have a different lifecycle from components. Components may mount, update
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How an Effect's lifecycle is different from a component's lifecycle
     -   How to think about each individual Effect in isolation
diff --git a/docs/src/learn/manipulating-the-dom-with-refs.md b/docs/src/learn/manipulating-the-dom-with-refs.md
index 681a6d91e..a836cae1e 100644
--- a/docs/src/learn/manipulating-the-dom-with-refs.md
+++ b/docs/src/learn/manipulating-the-dom-with-refs.md
@@ -6,7 +6,7 @@ React automatically updates the [DOM](https://developer.mozilla.org/docs/Web/API
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to access a DOM node managed by React with the `ref` attribute
     -   How the `ref` JSX attribute relates to the `useRef` Hook
diff --git a/docs/src/learn/passing-data-deeply-with-context.md b/docs/src/learn/passing-data-deeply-with-context.md
index d68be8040..202326622 100644
--- a/docs/src/learn/passing-data-deeply-with-context.md
+++ b/docs/src/learn/passing-data-deeply-with-context.md
@@ -6,7 +6,7 @@ Usually, you will pass information from a parent component to a child component
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What "prop drilling" is
     -   How to replace repetitive prop passing with context
diff --git a/docs/src/learn/passing-props-to-a-component.md b/docs/src/learn/passing-props-to-a-component.md
index 322d589fe..f9f633de2 100644
--- a/docs/src/learn/passing-props-to-a-component.md
+++ b/docs/src/learn/passing-props-to-a-component.md
@@ -6,7 +6,7 @@ React components use _props_ to communicate with each other. Every parent compon
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to pass props to a component
     -   How to read props from a component
diff --git a/docs/src/learn/preserving-and-resetting-state.md b/docs/src/learn/preserving-and-resetting-state.md
index 985dd5cfe..4a85e980a 100644
--- a/docs/src/learn/preserving-and-resetting-state.md
+++ b/docs/src/learn/preserving-and-resetting-state.md
@@ -6,7 +6,7 @@ State is isolated between components. React keeps track of which state belongs t
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How React "sees" component structures
     -   When React chooses to preserve or reset the state
diff --git a/docs/src/learn/python-in-psx-with-curly-braces.md b/docs/src/learn/python-in-psx-with-curly-braces.md
index aa1e92529..22ab27331 100644
--- a/docs/src/learn/python-in-psx-with-curly-braces.md
+++ b/docs/src/learn/python-in-psx-with-curly-braces.md
@@ -13,7 +13,7 @@ JSX lets you write HTML-like markup inside a JavaScript file, keeping rendering
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to pass strings with quotes
     -   How to reference a JavaScript variable inside JSX with curly braces
diff --git a/docs/src/learn/queueing-a-series-of-state-updates.md b/docs/src/learn/queueing-a-series-of-state-updates.md
index 495695787..021429428 100644
--- a/docs/src/learn/queueing-a-series-of-state-updates.md
+++ b/docs/src/learn/queueing-a-series-of-state-updates.md
@@ -6,7 +6,7 @@ Setting a state variable will queue another render. But sometimes you might want
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What "batching" is and how React uses it to process multiple state updates
     -   How to apply several updates to the same state variable in a row
diff --git a/docs/src/learn/quick-start.md b/docs/src/learn/quick-start.md
index a825d6b56..91e4bcf3a 100644
--- a/docs/src/learn/quick-start.md
+++ b/docs/src/learn/quick-start.md
@@ -6,7 +6,7 @@ Welcome to the ReactPy documentation! This page will give you an introduction to
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to create and nest components
     -   How to add markup and styles
diff --git a/docs/src/learn/react-developer-tools.md b/docs/src/learn/react-developer-tools.md
index d7b075705..9d1506b12 100644
--- a/docs/src/learn/react-developer-tools.md
+++ b/docs/src/learn/react-developer-tools.md
@@ -13,7 +13,7 @@ Use React Developer Tools to inspect React [components](../learn/your-first-comp
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to install ReactPy Developer Tools
 
diff --git a/docs/src/learn/reacting-to-input-with-state.md b/docs/src/learn/reacting-to-input-with-state.md
index ac04c1d98..4247a88d1 100644
--- a/docs/src/learn/reacting-to-input-with-state.md
+++ b/docs/src/learn/reacting-to-input-with-state.md
@@ -6,7 +6,7 @@ React provides a declarative way to manipulate the UI. Instead of manipulating i
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How declarative UI programming differs from imperative UI programming
     -   How to enumerate the different visual states your component can be in
diff --git a/docs/src/learn/referencing-values-with-refs.md b/docs/src/learn/referencing-values-with-refs.md
index 260812d75..d51acd757 100644
--- a/docs/src/learn/referencing-values-with-refs.md
+++ b/docs/src/learn/referencing-values-with-refs.md
@@ -6,7 +6,7 @@ When you want a component to "remember" some information, but you don't want tha
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to add a ref to your component
     -   How to update a ref's value
diff --git a/docs/src/learn/removing-effect-dependencies.md b/docs/src/learn/removing-effect-dependencies.md
index e94ee1346..4c3a6fcc3 100644
--- a/docs/src/learn/removing-effect-dependencies.md
+++ b/docs/src/learn/removing-effect-dependencies.md
@@ -6,7 +6,7 @@ When you write an Effect, the linter will verify that you've included every reac
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to fix infinite Effect dependency loops
     -   What to do when you want to remove a dependency
diff --git a/docs/src/learn/render-and-commit.md b/docs/src/learn/render-and-commit.md
index 1292c1251..a4bedb8e4 100644
--- a/docs/src/learn/render-and-commit.md
+++ b/docs/src/learn/render-and-commit.md
@@ -6,7 +6,7 @@ Before your components are displayed on screen, they must be rendered by React.
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What rendering means in React
     -   When and why React renders a component
diff --git a/docs/src/learn/rendering-lists.md b/docs/src/learn/rendering-lists.md
index e684f4ea3..115c55fe3 100644
--- a/docs/src/learn/rendering-lists.md
+++ b/docs/src/learn/rendering-lists.md
@@ -6,7 +6,7 @@ You will often want to display multiple similar components from a collection of
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to render components from an array using JavaScript's `map()`
     -   How to render only specific components using JavaScript's `filter()`
diff --git a/docs/src/learn/responding-to-events.md b/docs/src/learn/responding-to-events.md
index 38eb85d51..c9fcb24ae 100644
--- a/docs/src/learn/responding-to-events.md
+++ b/docs/src/learn/responding-to-events.md
@@ -6,7 +6,7 @@ React lets you add _event handlers_ to your PSX. Event handlers are your own fun
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   Different ways to write an event handler
     -   How to pass event handling logic from a parent component
diff --git a/docs/src/learn/reusing-logic-with-custom-hooks.md b/docs/src/learn/reusing-logic-with-custom-hooks.md
index 6931158ca..068398d75 100644
--- a/docs/src/learn/reusing-logic-with-custom-hooks.md
+++ b/docs/src/learn/reusing-logic-with-custom-hooks.md
@@ -6,7 +6,7 @@ React comes with several built-in Hooks like `useState`, `useContext`, and `useE
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What custom Hooks are, and how to write your own
     -   How to reuse logic between components
diff --git a/docs/src/learn/scaling-up-with-reducer-and-context.md b/docs/src/learn/scaling-up-with-reducer-and-context.md
index 21239a19f..805ac7f12 100644
--- a/docs/src/learn/scaling-up-with-reducer-and-context.md
+++ b/docs/src/learn/scaling-up-with-reducer-and-context.md
@@ -6,7 +6,7 @@ Reducers let you consolidate a component's state update logic. Context lets you
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to combine a reducer with context
     -   How to avoid passing state and dispatch through props
diff --git a/docs/src/learn/separating-events-from-effects.md b/docs/src/learn/separating-events-from-effects.md
index 69e69bcb3..c17fd5dbb 100644
--- a/docs/src/learn/separating-events-from-effects.md
+++ b/docs/src/learn/separating-events-from-effects.md
@@ -6,7 +6,7 @@ Event handlers only re-run when you perform the same interaction again. Unlike e
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to choose between an event handler and an Effect
     -   Why Effects are reactive, and event handlers are not
diff --git a/docs/src/learn/sharing-state-between-components.md b/docs/src/learn/sharing-state-between-components.md
index b252d7614..c72320935 100644
--- a/docs/src/learn/sharing-state-between-components.md
+++ b/docs/src/learn/sharing-state-between-components.md
@@ -6,7 +6,7 @@ Sometimes, you want the state of two components to always change together. To do
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to share state between components by lifting it up
     -   What are controlled and uncontrolled components
diff --git a/docs/src/learn/state-a-components-memory.md b/docs/src/learn/state-a-components-memory.md
index 26810a449..beafe6673 100644
--- a/docs/src/learn/state-a-components-memory.md
+++ b/docs/src/learn/state-a-components-memory.md
@@ -6,7 +6,7 @@ Components often need to change what's on the screen as a result of an interacti
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to add a state variable with the [`useState`](/reference/react/useState) Hook
     -   What pair of values the `useState` Hook returns
diff --git a/docs/src/learn/state-as-a-snapshot.md b/docs/src/learn/state-as-a-snapshot.md
index 30894c92b..9cc8f7e63 100644
--- a/docs/src/learn/state-as-a-snapshot.md
+++ b/docs/src/learn/state-as-a-snapshot.md
@@ -6,7 +6,7 @@ State variables might look like regular JavaScript variables that you can read a
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How setting state triggers re-renders
     -   When and how state updates
diff --git a/docs/src/learn/synchronizing-with-effects.md b/docs/src/learn/synchronizing-with-effects.md
index 0b0dd29fb..96f19f6c9 100644
--- a/docs/src/learn/synchronizing-with-effects.md
+++ b/docs/src/learn/synchronizing-with-effects.md
@@ -6,7 +6,7 @@ Some components need to synchronize with external systems. For example, you migh
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What Effects are
     -   How Effects are different from events
diff --git a/docs/src/learn/updating-arrays-in-state.md b/docs/src/learn/updating-arrays-in-state.md
index fe76953a3..234b8b879 100644
--- a/docs/src/learn/updating-arrays-in-state.md
+++ b/docs/src/learn/updating-arrays-in-state.md
@@ -6,7 +6,7 @@ Arrays are mutable in JavaScript, but you should treat them as immutable when yo
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to add, remove, or change items in an array in React state
     -   How to update an object inside of an array
diff --git a/docs/src/learn/updating-objects-in-state.md b/docs/src/learn/updating-objects-in-state.md
index 48591a018..5603b50fa 100644
--- a/docs/src/learn/updating-objects-in-state.md
+++ b/docs/src/learn/updating-objects-in-state.md
@@ -6,7 +6,7 @@ State can hold any kind of JavaScript value, including objects. But you shouldn'
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   How to correctly update an object in React state
     -   How to update a nested object without mutating it
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
index 6a96023ee..92e4d4b9c 100644
--- a/docs/src/learn/writing-markup-with-psx.md
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -12,7 +12,7 @@ _PSX_ is a syntax extension for JavaScript that lets you write HTML-like markup
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   Why React mixes markup with rendering logic
     -   How PSX is different from HTML
diff --git a/docs/src/learn/you-might-not-need-an-effect.md b/docs/src/learn/you-might-not-need-an-effect.md
index 60eccbffb..4652076d8 100644
--- a/docs/src/learn/you-might-not-need-an-effect.md
+++ b/docs/src/learn/you-might-not-need-an-effect.md
@@ -6,7 +6,7 @@ Effects are an escape hatch from the React paradigm. They let you "step outside"
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   Why and how to remove unnecessary Effects from your components
     -   How to cache expensive computations without Effects
diff --git a/docs/src/learn/your-first-component.md b/docs/src/learn/your-first-component.md
index 9a06e6f1c..1ad627d16 100644
--- a/docs/src/learn/your-first-component.md
+++ b/docs/src/learn/your-first-component.md
@@ -6,7 +6,7 @@ _Components_ are one of the core concepts of React. They are the foundation upon
 
 </p>
 
-!!! summary "You Will Learn"
+!!! summary "You will learn"
 
     -   What a component is
     -   What role components play in a React application

From 5ed1300fd05d81d9df650f77713a7aefce004b40 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 5 Jan 2024 01:55:55 -0800
Subject: [PATCH 44/49] Change note to abstract

---
 docs/src/learn/editor-setup.md              | 2 +-
 docs/src/learn/start-a-new-react-project.md | 2 +-
 docs/src/learn/tutorial-tic-tac-toe.md      | 4 ++--
 docs/src/learn/writing-markup-with-psx.md   | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/src/learn/editor-setup.md b/docs/src/learn/editor-setup.md
index e7fe53731..052f16663 100644
--- a/docs/src/learn/editor-setup.md
+++ b/docs/src/learn/editor-setup.md
@@ -65,6 +65,6 @@ Ideally, you should format your code on every save. VS Code has settings for thi
 4. In the search bar, type "format on save"
 5. Be sure the "format on save" option is ticked!
 
-!!! note
+!!! abstract "Note"
 
     If your ESLint preset has formatting rules, they may conflict with Prettier. We recommend disabling all formatting rules in your ESLint preset using [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) so that ESLint is _only_ used for catching logical mistakes. If you want to enforce that files are formatted before a pull request is merged, use [`prettier --check`](https://prettier.io/docs/en/cli.html#--check) for your continuous integration.
diff --git a/docs/src/learn/start-a-new-react-project.md b/docs/src/learn/start-a-new-react-project.md
index 23f9cb1d5..490698fab 100644
--- a/docs/src/learn/start-a-new-react-project.md
+++ b/docs/src/learn/start-a-new-react-project.md
@@ -10,7 +10,7 @@ If you want to build a new app or a new website fully with ReactPy, we recommend
 
 <!-- FIXME: This is reliant on https://github.com/reactive-python/reactpy/issues/1071 -->
 
-!!! note
+!!! abstract "Note"
 
     Some of our backend frameworks are considered _built-in_, meaning that compatibility for these backends are contained within `reactpy.backend.*`.
 
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 49495c08e..218fec5de 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -6,7 +6,7 @@ You will build a small tic-tac-toe game during this tutorial. This tutorial does
 
 </p>
 
-!!! note
+!!! abstract "Note"
 
     This tutorial is designed for people who prefer to **learn by doing** and want to quickly try making something tangible. If you prefer learning each concept step by step, start with [Describing the UI.](./your-first-component.md)
 
@@ -71,7 +71,7 @@ In the code example below, click **Run** to open the editor in a new tab using t
     # TODO
     ```
 
-!!! note
+!!! abstract "Note"
 
     You can also follow this tutorial using your local development environment. To do this, you need to:
 
diff --git a/docs/src/learn/writing-markup-with-psx.md b/docs/src/learn/writing-markup-with-psx.md
index 92e4d4b9c..292ba4c6c 100644
--- a/docs/src/learn/writing-markup-with-psx.md
+++ b/docs/src/learn/writing-markup-with-psx.md
@@ -33,7 +33,7 @@ Keeping a button's rendering logic and markup together ensures that they stay in
 
 Each React component is a JavaScript function that may contain some markup that React renders into the browser. React components use a syntax extension called PSX to represent that markup. PSX looks a lot like HTML, but it is a bit stricter and can display dynamic information. The best way to understand this is to convert some HTML markup to PSX markup.
 
-!!! note
+!!! abstract "Note"
 
     PSX and ReactPy are two separate things. They're often used together, but you _can_ use them independently of each other. PSX is a syntax extension, while ReactPy is a Python library.
 

From 0a36534ee575214f91af5a72c52e6680d645b2f2 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 5 Jan 2024 01:56:33 -0800
Subject: [PATCH 45/49] html can now return none

---
 docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py b/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
index 29781a321..eef970924 100644
--- a/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
+++ b/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
@@ -7,18 +7,19 @@
 def square(value, on_square_click):
     return html.button(
         {"className": "square", "on_click": on_square_click},
-        value or "",
+        value,
     )
 
 
 @component
 def board(x_is_next, squares, on_play):
-
     def handle_click(i):
         def handle_click_event(_event):
-            """Due to a quirk of Python, if your event handler needs args other than
+            """
+            Due to a quirk of Python, if your event handler needs args other than
             `event`, you will need to create a wrapper function as seen above.
-            Ref: https://pylint.readthedocs.io/en/stable/user_guide/messages/warning/cell-var-from-loop.html"""
+            Ref: https://pylint.readthedocs.io/en/stable/user_guide/messages/warning/cell-var-from-loop.html
+            """
             if calculate_winner(squares) or squares[i]:
                 return
 

From 2bef10db81e4080c985784bc3d9f26682abc56a5 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 14 Mar 2025 01:39:33 -0700
Subject: [PATCH 46/49] unbork large portions of the theme

---
 .editorconfig                                 |  35 ++
 .github/workflows/publish-docs.yml            |   2 +-
 .gitignore                                    |  12 +-
 CHANGELOG.md                                  | 174 +-------
 LICENSE                                       |  21 -
 LICENSE.md                                    |   9 +
 mkdocs.yml => docs/mkdocs.yml                 |  87 ++--
 docs/overrides/home.html                      | 135 +++++++
 .../homepage_examples/add_interactivity.py    |  29 ++
 .../add_interactivity_demo.html               | 172 ++++++++
 .../homepage_examples/code_block.html         |   7 +
 .../create_user_interfaces.py                 |  21 +
 .../create_user_interfaces_demo.html          |  24 ++
 .../write_components_with_python.py           |  19 +
 .../write_components_with_python_demo.html    |  65 +++
 docs/overrides/main.html                      |   7 +
 docs/requirements.txt                         |   8 +-
 docs/src/about/changelog.md                   |   7 +-
 docs/src/assets/css/admonition.css            | 160 ++++++++
 docs/src/assets/css/banner.css                |  15 +
 docs/src/assets/css/button.css                |  41 ++
 docs/src/assets/css/code.css                  | 111 ++++++
 docs/src/assets/css/footer.css                |  33 ++
 docs/src/assets/css/home.css                  | 335 ++++++++++++++++
 docs/src/assets/css/main.css                  |  85 ++++
 docs/src/assets/css/navbar.css                | 185 +++++++++
 docs/src/assets/css/sidebar.css               | 104 +++++
 docs/src/assets/css/table-of-contents.css     |  48 +++
 docs/src/assets/images/add-interactivity.png  | Bin 0 -> 22900 bytes
 .../assets/images/create-user-interfaces.png  | Bin 0 -> 12427 bytes
 .../images/s_thinking-in-react_ui.png         | Bin
 .../images/s_thinking-in-react_ui_outline.png | Bin
 .../images/write-components-with-python.png   | Bin 0 -> 16519 bytes
 .../{static/js/extra.js => assets/js/main.js} |   0
 docs/src/index.md                             |  53 +--
 docs/src/static/css/extra.css                 | 376 ------------------
 36 files changed, 1723 insertions(+), 657 deletions(-)
 create mode 100644 .editorconfig
 delete mode 100644 LICENSE
 create mode 100644 LICENSE.md
 rename mkdocs.yml => docs/mkdocs.yml (77%)
 create mode 100644 docs/overrides/home.html
 create mode 100644 docs/overrides/homepage_examples/add_interactivity.py
 create mode 100644 docs/overrides/homepage_examples/add_interactivity_demo.html
 create mode 100644 docs/overrides/homepage_examples/code_block.html
 create mode 100644 docs/overrides/homepage_examples/create_user_interfaces.py
 create mode 100644 docs/overrides/homepage_examples/create_user_interfaces_demo.html
 create mode 100644 docs/overrides/homepage_examples/write_components_with_python.py
 create mode 100644 docs/overrides/homepage_examples/write_components_with_python_demo.html
 create mode 100644 docs/src/assets/css/admonition.css
 create mode 100644 docs/src/assets/css/banner.css
 create mode 100644 docs/src/assets/css/button.css
 create mode 100644 docs/src/assets/css/code.css
 create mode 100644 docs/src/assets/css/footer.css
 create mode 100644 docs/src/assets/css/home.css
 create mode 100644 docs/src/assets/css/main.css
 create mode 100644 docs/src/assets/css/navbar.css
 create mode 100644 docs/src/assets/css/sidebar.css
 create mode 100644 docs/src/assets/css/table-of-contents.css
 create mode 100644 docs/src/assets/images/add-interactivity.png
 create mode 100644 docs/src/assets/images/create-user-interfaces.png
 rename docs/src/{static => assets}/images/s_thinking-in-react_ui.png (100%)
 rename docs/src/{static => assets}/images/s_thinking-in-react_ui_outline.png (100%)
 create mode 100644 docs/src/assets/images/write-components-with-python.png
 rename docs/src/{static/js/extra.js => assets/js/main.js} (100%)
 delete mode 100644 docs/src/static/css/extra.css

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..094c32693
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,35 @@
+# http://editorconfig.org
+
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+charset = utf-8
+end_of_line = lf
+
+[*.py]
+indent_size = 4
+max_line_length = 120
+
+[*.md]
+indent_size = 4
+
+[*.yml]
+indent_size = 4
+
+[*.html]
+max_line_length = off
+
+[*.js]
+max_line_length = off
+
+[*.css]
+indent_size = 4
+max_line_length = off
+
+# Tests can violate line width restrictions in the interest of clarity.
+[**/test_*.py]
+max_line_length = off
diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
index 69342c994..199bc1766 100644
--- a/.github/workflows/publish-docs.yml
+++ b/.github/workflows/publish-docs.yml
@@ -14,4 +14,4 @@ jobs:
               with:
                   python-version: 3.x
             - run: pip install -r docs/requirements.txt
-            - run: mkdocs gh-deploy --force
+            - run: cd docs && mkdocs gh-deploy --force
diff --git a/.gitignore b/.gitignore
index 20c041e11..788d5a329 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,8 @@
+# --- Build Artifacts ---
+src/reactpy/static/index.js*
+src/reactpy/static/morphdom/
+src/reactpy/static/pyscript/
+
 # --- Jupyter ---
 *.ipynb_checkpoints
 *Untitled*.ipynb
@@ -11,8 +16,9 @@
 .jupyter
 
 # --- Python ---
-.venv
-venv
+.hatch
+.venv*
+venv*
 MANIFEST
 build
 dist
@@ -28,6 +34,7 @@ pip-wheel-metadata
 .python-version
 
 # -- Python Tests ---
+.coverage.*
 *.coverage
 *.pytest_cache
 *.mypy_cache
@@ -38,4 +45,3 @@ pip-wheel-metadata
 
 # --- JS ---
 node_modules
-
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5ae0eb0af..d7bd784cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,176 +24,4 @@ Using the following categories, list your changes in this order:
 
 -   Nothing (yet)
 
-## [2.2.0] - 2022-12-28
-
-### Added
-
--   Add `options: QueryOptions` parameter to `use_query` to allow for configuration of this hook.
-
-### Changed
-
--   By default, `use_query` will recursively prefetch all many-to-many or many-to-one relationships to prevent `SynchronousOnlyOperation` exceptions.
-
-### Removed
-
--   `django_idom.hooks._fetch_lazy_fields` has been deleted. The equivalent replacement is `django_idom.utils.django_query_postprocessor`.
-
-## [2.1.0] - 2022-11-01
-
-### Changed
-
--   Minimum `channels` version is now `4.0.0`.
-
-### Fixed
-
--   Change type hint on `view_to_component` callable to have `request` argument be optional.
--   Change type hint on `view_to_component` to represent it as a decorator with parenthesis (such as `@view_to_component(compatibility=True)`)
-
-### Security
-
--   Add note to docs about potential information exposure via `view_to_component` when using `compatibility=True`.
-
-## [2.0.1] - 2022-10-18
-
-### Fixed
-
--   Ability to use `key=...` parameter on all prefabricated components.
-
-## [2.0.0] - 2022-10-17
-
-### Added
-
--   `use_origin` hook for returning the browser's `location.origin`.
-
-### Changed
-
--   `view_to_component` now returns a `Callable`, instead of directly returning a `Component`. Check the docs for new usage info.
--   `use_mutation` and `use_query` will now log any query failures.
-
-### Fixed
-
--   Allow `use_mutation` to have `refetch=None`, as the docs suggest is possible.
--   `use_query` will now prefetch all fields to prevent `SynchronousOnlyOperation` exceptions.
--   `view_to_component`, `django_css`, and `django_js` type hints will now display like normal functions.
--   IDOM preloader no longer attempts to parse commented out IDOM components.
--   Tests are now fully functional on Windows
-
-## [1.2.0] - 2022-09-19
-
-### Added
-
--   `auth_required` decorator to prevent your components from rendering to unauthenticated users.
--   `use_query` hook for fetching database values.
--   `use_mutation` hook for modifying database values.
--   `view_to_component` utility to convert legacy Django views to IDOM components.
-
-### Changed
-
--   Bumped the minimum IDOM version to 0.40.2
--   Testing suite now uses `playwright` instead of `selenium`
-
-### Fixed
-
--   IDOM preloader is no longer sensitive to whitespace within template tags.
-
-## [1.1.0] - 2022-07-01
-
-### Added
-
--   `django_css` and `django_js` components to defer loading CSS & JS files until needed.
-
-### Changed
-
--   Bumped the minimum IDOM version to 0.39.0
-
-## [1.0.0] - 2022-05-22
-
-### Added
-
--   Django-specific hooks! `use_websocket`, `use_scope`, and `use_location` are now available within the `django_idom.hooks` module.
--   Documentation has been placed into a formal docs webpage.
--   Logging for when a component fails to import, or if no components were found within Django.
-
-### Changed
-
--   `idom_component` template tag has been renamed to `component`
--   Bumped the minimum IDOM version to 0.38.0
-
-### Removed
-
--   `websocket` parameter for components has been removed. Functionally, it is replaced with `django_idom.hooks.use_websocket`.
-
-## [0.0.5] - 2022-04-04
-
-### Changed
-
--   Bumped the minimum IDOM version to 0.37.2
-
-### Fixed
-
--   ModuleNotFoundError: No module named `idom.core.proto` caused by IDOM 0.37.2
-
-## [0.0.4] - 2022-03-05
-
-### Changed
-
--   Bumped the minimum IDOM version to 0.37.1
-
-## [0.0.3] - 2022-02-19
-
-### Changed
-
--   Bumped the minimum IDOM version to 0.36.3
-
-## [0.0.2] - 2022-01-30
-
-### Added
-
--   Ability to declare the HTML class of the top-level component `div`
--   `name = ...` parameter to IDOM HTTP paths for use with `django.urls.reverse()`
--   Cache versioning to automatically invalidate old web module files from the cache back-end
--   Automatic pre-population of the IDOM component registry
--   Type hinting for `IdomWebsocket`
-
-### Changed
-
--   Fetching web modules from disk and/or cache is now fully async
--   Static files are now contained within a `django_idom/` parent folder
--   Upgraded IDOM to version `0.36.0`
--   Minimum Django version required is now `4.0`
--   Minimum Python version required is now `3.8`
-
-### Removed
-
--   `IDOM_WEB_MODULES_PATH` has been replaced with Django `include(...)`
--   `IDOM_WS_MAX_RECONNECT_DELAY` has been renamed to `IDOM_WS_MAX_RECONNECT_TIMEOUT`
--   `idom_web_modules` cache back-end has been renamed to `idom`
-
-### Fixed
-
--   Increase test timeout values to prevent false positives
--   Windows compatibility for building Django-IDOM
-
-### Security
-
--   Fixed potential directory traversal attack on the IDOM web modules URL
-
-## [0.0.1] - 2021-08-18
-
-### Added
-
--   Support for IDOM within the Django
-
-[unreleased]: https://github.com/idom-team/django-idom/compare/2.2.0...HEAD
-[2.2.0]: https://github.com/idom-team/django-idom/compare/2.1.0...2.2.0
-[2.1.0]: https://github.com/idom-team/django-idom/compare/2.0.1...2.1.0
-[2.0.1]: https://github.com/idom-team/django-idom/compare/2.0.0...2.0.1
-[2.0.0]: https://github.com/idom-team/django-idom/compare/1.2.0...2.0.0
-[1.2.0]: https://github.com/idom-team/django-idom/compare/1.1.0...1.2.0
-[1.1.0]: https://github.com/idom-team/django-idom/compare/1.0.0...1.1.0
-[1.0.0]: https://github.com/idom-team/django-idom/compare/0.0.5...1.0.0
-[0.0.5]: https://github.com/idom-team/django-idom/compare/0.0.4...0.0.5
-[0.0.4]: https://github.com/idom-team/django-idom/compare/0.0.3...0.0.4
-[0.0.3]: https://github.com/idom-team/django-idom/compare/0.0.2...0.0.3
-[0.0.2]: https://github.com/idom-team/django-idom/compare/0.0.1...0.0.2
-[0.0.1]: https://github.com/idom-team/django-idom/releases/tag/0.0.1
+[unreleased]: https://github.com/reactive-python/reactpy/compare/1.0.0...HEAD
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 5caf76c93..000000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2019-2022 Ryan S. Morshead
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 000000000..f5423c3d3
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,9 @@
+## The MIT License (MIT)
+
+#### Copyright (c) Reactive Python and affiliates.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/mkdocs.yml b/docs/mkdocs.yml
similarity index 77%
rename from mkdocs.yml
rename to docs/mkdocs.yml
index e7e36fc7b..082b77b01 100644
--- a/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -102,28 +102,33 @@ nav:
 
 theme:
     name: material
-    custom_dir: docs/overrides
+    custom_dir: overrides
     palette:
         - media: "(prefers-color-scheme: dark)"
           scheme: slate
           toggle:
               icon: material/white-balance-sunny
               name: Switch to light mode
-          primary: light blue
-          accent: light blue
+          primary: red # We use red to indicate that something is unthemed
+          accent: red
         - media: "(prefers-color-scheme: light)"
           scheme: default
           toggle:
               icon: material/weather-night
               name: Switch to dark mode
-          primary: black
+          primary: white
+          accent: red
     features:
         - navigation.instant
         - navigation.tabs
+        - navigation.tabs.sticky
         - navigation.top
         - content.code.copy
+        - search.highlight
     icon:
         repo: fontawesome/brands/github
+        admonition:
+            note: fontawesome/solid/note-sticky
     logo: https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg
     favicon: https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg
 
@@ -131,8 +136,8 @@ markdown_extensions:
     - toc:
           permalink: true
     - pymdownx.emoji:
-          emoji_index: !!python/name:materialx.emoji.twemoji
-          emoji_generator: !!python/name:materialx.emoji.to_svg
+          emoji_index: !!python/name:material.extensions.emoji.twemoji
+          emoji_generator: !!python/name:material.extensions.emoji.to_svg
     - pymdownx.tabbed:
           alternate_style: true
     - pymdownx.highlight:
@@ -148,19 +153,41 @@ markdown_extensions:
 plugins:
     - search
     - include-markdown
-    - section-index
-    # - git-authors
-    # - minify:
-    #       minify_html: true
-    #       minify_js: true
-    #       minify_css: true
-    #       cache_safe: true
-    # - git-revision-date-localized:
-    #       fallback_to_build_date: true
+    - git-authors
+    # - section-index
+    - minify:
+          minify_html: true
+          minify_js: true
+          minify_css: true
+          cache_safe: true
+    - git-revision-date-localized:
+          fallback_to_build_date: true
     # - spellcheck:
     #       known_words: dictionary.txt
     #       allow_unicode: no
-    #       ignore_code: yes
+    - mkdocstrings:
+          default_handler: python
+          handlers:
+              python:
+                  paths: ["../"]
+                  import:
+                      - https://installer.readthedocs.io/en/stable/objects.inv
+                  options:
+                      signature_crossrefs: true
+                      scoped_crossrefs: true
+                      relative_crossrefs: true
+                      modernize_annotations: true
+                      unwrap_annotated: true
+                      find_stubs_package: true
+                      show_root_members_full_path: true
+                      show_bases: false
+                      show_source: false
+                      show_root_toc_entry: false
+                      show_labels: false
+                      show_symbol_type_toc: true
+                      show_symbol_type_heading: true
+                      show_object_full_path: true
+                      heading_level: 3
 
 extra:
     generator: false
@@ -168,23 +195,33 @@ extra:
         provider: mike
 
 extra_javascript:
-    - static/js/extra.js
+    - assets/js/main.js
 
 extra_css:
-    - static/css/extra.css
+    - assets/css/main.css
+    - assets/css/button.css
+    - assets/css/admonition.css
+    - assets/css/banner.css
+    - assets/css/sidebar.css
+    - assets/css/navbar.css
+    - assets/css/table-of-contents.css
+    - assets/css/code.css
+    - assets/css/footer.css
+    - assets/css/home.css
 
 watch:
-    - docs
-    - mkdocs.yml
-    - README.md
-    - CHANGELOG.md
+    - "../docs"
+    - ../README.md
+    - ../CHANGELOG.md
+    - ../LICENSE.md
+    - "../src"
 
 site_name: ReactPy
 site_author: Archmonger
 site_description: It's React, but in Python.
-copyright: Copyright &copy; 2023 Reactive Python
+copyright: '&copy;<div id="year"> </div> <script> document.getElementById("year").innerHTML = new Date().getFullYear(); </script>Reactive Python and affiliates.<div class="legal-footer-right">This project has no affiliation to ReactJS or Meta Platforms, Inc.</div>'
 repo_url: https://github.com/reactive-python/reactpy
 site_url: https://reactive-python.github.io/reactpy
-repo_name: reactive-python/reactpy
+repo_name: ReactPy
 edit_uri: edit/main/docs/src
-docs_dir: docs/src
+docs_dir: src
diff --git a/docs/overrides/home.html b/docs/overrides/home.html
new file mode 100644
index 000000000..1357184f1
--- /dev/null
+++ b/docs/overrides/home.html
@@ -0,0 +1,135 @@
+<!-- TODO: Use markdown code blocks whenever mkdocs starts supported markdown embeds -->
+{% extends "main.html" %}
+
+<!-- Set the content block to empty -->
+{% block content %}{% endblock %}
+
+<!-- Override the tabs block to create the homepage -->
+{% block tabs %}
+<style>
+  /* Variables */
+  [data-md-color-scheme="slate"] {
+    --row-stripe-bg-color: conic-gradient(from 90deg at -10% 100%,
+        #2b303b 0deg,
+        #2b303b 90deg,
+        #16181d 1turn);
+    --row-bg-color: conic-gradient(from -90deg at 110% 100%, #2b303b 0deg, #16181d 90deg, #16181d 1turn);
+    --stripe-border-color: rgba(246, 247, 249, 0.1);
+    --code-block-filter: none;
+    --home-tabbed-set-bg-color: #1f1f1f;
+  }
+
+  [data-md-color-scheme="default"] {
+    --row-stripe-bg-color: conic-gradient(from 90deg at -10% 100%,
+        #bcc1cd 0deg,
+        #bcc1cd 90deg,
+        #fff 1turn);
+    --row-bg-color: var(--row-stripe-bg-color);
+    --stripe-border-color: rgba(35, 39, 47, 0.1);
+    --code-block-filter: invert(1) contrast(1.3) hue-rotate(180deg) saturate(2);
+    --code-tab-color: rgb(246 247 249);
+    --home-tabbed-set-bg-color: #fff;
+  }
+
+  /* Application header should be static for the landing page */
+  .md-header {
+    position: initial;
+  }
+
+  /* Hide markdown area */
+  .md-main__inner {
+    margin: 0;
+  }
+
+  .md-content {
+    display: none;
+  }
+</style>
+<section class="home md-typeset">
+  <div class="row first">
+    <img src="https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg"
+      alt="ReactPy Logo" class="home-logo">
+    <h1>{{ config.site_name }}</h1>
+    <p>{{ config.site_description }}</p>
+    <div class="home-btns">
+      <a href="{{ page.next_page.url | url }}" class="md-button md-button--primary">
+        Get Started
+      </a>
+      <a href="{{ 'reference/components/' | url }}" class="md-button">
+        API Reference
+      </a>
+      <a href="{{ 'about/changelog/' | url }}" class="md-button">
+        Changelog
+      </a>
+    </div>
+  </div>
+
+  <div class="row stripe">
+    <h1>Create user interfaces from components</h1>
+    <p class="md-grid">
+      ReactPy lets you build user interfaces out of individual pieces called components. Create your own ReactPy
+      components like <code>thumbnail</code>, <code>like_button</code>, and <code>video</code>. Then combine
+      them into entire screens, pages, and apps.
+    </p>
+    <div class="example-container">
+      {% with image="create-user-interfaces.png", class="pop-left" %}
+      {% include "homepage_examples/code_block.html" %}
+      {% endwith %}
+      {% include "homepage_examples/create_user_interfaces_demo.html" %}
+    </div>
+    <p>
+      Whether you work on your own or with thousands of other developers, using React feels the same. It is
+      designed to let you seamlessly combine components written by independent people, teams, and
+      organizations.
+    </p>
+  </div>
+
+  <div class="row">
+    <h1>Write components with pure Python code</h1>
+    <p>
+      ReactPy components are Python functions. Want to show some content conditionally? Use an
+      <code>if</code> statement. Displaying a list? Try using
+      <a href="https://www.w3schools.com/python/python_lists_comprehension.asp">list comprehension</a>.
+      Learning ReactPy is learning programming.
+    </p>
+    <div class="example-container">
+      {% with image="write-components-with-python.png", class="pop-left" %}
+      {% include "homepage_examples/code_block.html" %}
+      {% endwith %}
+      {% include "homepage_examples/write_components_with_python_demo.html" %}
+
+    </div>
+  </div>
+
+  <div class="row stripe">
+    <h1>Add interactivity wherever you need it</h1>
+    <p>
+      ReactPy components receive data and return what should appear on the screen. You can pass them new data in
+      response to an interaction, like when the user types into an input. ReactPy will then update the screen to
+      match the new data.
+    </p>
+    <div class="example-container">
+      {% with image="add-interactivity.png" %}
+      {% include "homepage_examples/code_block.html" %}
+      {% endwith %}
+      {% include "homepage_examples/add_interactivity_demo.html" %}
+    </div>
+    <p>
+      You don't have to build your whole page in ReactPy. Add React to your existing HTML page, and render
+      interactive ReactPy components anywhere on it.
+    </p>
+  </div>
+
+  <div class="row">
+    <h1>Go full-stack with a framework</h1>
+    <p>
+      ReactPy is a library. It lets you put components together, but it doesn't prescribe how to do routing and
+      data fetching. To build an entire app with ReactPy, we recommend a backend framework like
+      <a href="https://www.djangoproject.com/">Django</a> or <a href="https://fastapi.tiangolo.com/">FastAPI</a>.
+    </p>
+    <a href="{{ page.next_page.url | url }}" class="md-button md-button--primary">
+      Get Started
+    </a>
+  </div>
+</section>
+{% endblock %}
diff --git a/docs/overrides/homepage_examples/add_interactivity.py b/docs/overrides/homepage_examples/add_interactivity.py
new file mode 100644
index 000000000..9a7bf76f1
--- /dev/null
+++ b/docs/overrides/homepage_examples/add_interactivity.py
@@ -0,0 +1,29 @@
+# ruff: noqa: INP001
+from reactpy import component, html, use_state
+
+
+def filter_videos(*_, **__):
+    return []
+
+
+def search_input(*_, **__): ...
+
+
+def video_list(*_, **__): ...
+
+
+@component
+def searchable_video_list(videos):
+    search_text, set_search_text = use_state("")
+    found_videos = filter_videos(videos, search_text)
+
+    return html._(
+        search_input(
+            {"onChange": lambda event: set_search_text(event["target"]["value"])},
+            value=search_text,
+        ),
+        video_list(
+            videos=found_videos,
+            empty_heading=f"No matches for “{search_text}”",
+        ),
+    )
diff --git a/docs/overrides/homepage_examples/add_interactivity_demo.html b/docs/overrides/homepage_examples/add_interactivity_demo.html
new file mode 100644
index 000000000..ec8c1e4db
--- /dev/null
+++ b/docs/overrides/homepage_examples/add_interactivity_demo.html
@@ -0,0 +1,172 @@
+<div class="demo pop-right">
+  <div class="white-bg">
+
+    <div class="browser-navbar">
+      <div class="browser-nav-url">
+        <svg class="text-tertiary me-1 opacity-60" width="12" height="12" viewBox="0 0 44 44" fill="none"
+          xmlns="http://www.w3.org/2000/svg">
+          <path fill-rule="evenodd" clip-rule="evenodd"
+            d="M22 4C17.0294 4 13 8.0294 13 13V16H12.3103C10.5296 16 8.8601 16.8343 8.2855 18.5198C7.6489 20.387 7 23.4148 7 28C7 32.5852 7.6489 35.613 8.2855 37.4802C8.8601 39.1657 10.5296 40 12.3102 40H31.6897C33.4704 40 35.1399 39.1657 35.7145 37.4802C36.3511 35.613 37 32.5852 37 28C37 23.4148 36.3511 20.387 35.7145 18.5198C35.1399 16.8343 33.4704 16 31.6897 16H31V13C31 8.0294 26.9706 4 22 4ZM25 16V13C25 11.3431 23.6569 10 22 10C20.3431 10 19 11.3431 19 13V16H25Z"
+            fill="currentColor"></path>
+        </svg>
+        example.com/videos.html
+      </div>
+    </div>
+
+    <div class="browser-viewport">
+      <div class="search-header">
+        <h1>Searchable Videos</h1>
+        <p>Type a search query below.</p>
+        <div class="search-bar">
+          <svg width="1em" height="1em" viewBox="0 0 20 20" class="text-gray-30 w-4">
+            <path
+              d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z"
+              stroke="currentColor" fill="none" stroke-width="2" fill-rule="evenodd" stroke-linecap="round"
+              stroke-linejoin="round"></path>
+          </svg>
+          <input type="text" placeholder="Search">
+        </div>
+      </div>
+
+      <h2>5 Videos</h2>
+
+      <div class="vid-row">
+        <div class="vid-thumbnail">
+          <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+              fill="rgb(123 123 123 / 50%)"></path>
+          </svg>
+        </div>
+        <div class="vid-text">
+          <h3>ReactPy: The Documentary</h3>
+          <p>From web library to taco delivery service</p>
+        </div>
+        <button class="like-btn">
+          <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path
+              d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+              fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+          </svg>
+        </button>
+      </div>
+
+      <div class="vid-row">
+        <div class="vid-thumbnail">
+          <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+              fill="rgb(123 123 123 / 50%)"></path>
+          </svg>
+        </div>
+        <div class="vid-text">
+          <h3>Code using Worst Practices</h3>
+          <p>Harriet Potter (2013)</p>
+        </div>
+        <button class="like-btn">
+          <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path
+              d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+              fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+          </svg>
+        </button>
+      </div>
+
+      <div class="vid-row">
+        <div class="vid-thumbnail">
+          <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+              fill="rgb(123 123 123 / 50%)"></path>
+          </svg>
+        </div>
+        <div class="vid-text">
+          <h3>Introducing ReactPy Foriegn</h3>
+          <p>Tim Cooker (2015)</p>
+        </div>
+        <button class="like-btn">
+          <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path
+              d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+              fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+          </svg>
+        </button>
+      </div>
+
+      <div class="vid-row">
+        <div class="vid-thumbnail">
+          <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+              fill="rgb(123 123 123 / 50%)"></path>
+          </svg>
+        </div>
+        <div class="vid-text">
+          <h3>Introducing ReactPy Cooks</h3>
+          <p>Soap Boat and Dinosaur Dan (2018)</p>
+        </div>
+        <button class="like-btn">
+          <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path
+              d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+              fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+          </svg>
+        </button>
+      </div>
+
+      <div class="vid-row">
+        <div class="vid-thumbnail">
+          <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+              fill="rgb(123 123 123 / 50%)"></path>
+          </svg>
+        </div>
+        <div class="vid-text">
+          <h3>Introducing Quantum Components</h3>
+          <p>Isaac Asimov and Lauren-kun (2020)</p>
+        </div>
+        <button class="like-btn">
+          <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path
+              d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+              fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+          </svg>
+        </button>
+      </div>
+      <p class="no-match"></p>
+    </div>
+
+    <script>
+      document
+        .querySelector(".search-bar input")
+        .addEventListener("keyup", function () {
+          let titles = document.querySelectorAll(".browser-viewport .vid-text");
+          let search = this.value.toLowerCase();
+          let numVids = 0;
+          for (let i = 0; i < titles.length; i++) {
+            let title =
+              titles[i].querySelector("h3").innerText.toLowerCase() +
+              titles[i].querySelector("p").innerText.toLowerCase();
+            if (search.length == 0) {
+              titles[i].parentElement.style.display = "";
+              numVids++;
+            } else if (title.indexOf(search) > -1) {
+              titles[i].parentElement.style.display = "";
+              numVids++;
+            } else {
+              titles[i].parentElement.style.display = "none";
+            }
+          }
+          document.querySelector(".browser-viewport h2").innerText =
+            numVids + " Videos";
+
+          if (search && numVids == 0) {
+            document.querySelector(".browser-viewport .no-match").innerText = `No matches for “${search}”`;
+          } else {
+            document.querySelector(".browser-viewport .no-match").innerText = "";
+          }
+        });
+    </script>
+  </div>
+</div>
diff --git a/docs/overrides/homepage_examples/code_block.html b/docs/overrides/homepage_examples/code_block.html
new file mode 100644
index 000000000..27b362046
--- /dev/null
+++ b/docs/overrides/homepage_examples/code_block.html
@@ -0,0 +1,7 @@
+<div class="tabbed-set tabbed-alternate {{ class }}">
+  <input checked="checked" type="radio" />
+  <div class="tabbed-labels"><label>app.py</label></div>
+  <div class="tabbed-content">
+    <img src="assets/images/{{ image }}">
+  </div>
+</div>
diff --git a/docs/overrides/homepage_examples/create_user_interfaces.py b/docs/overrides/homepage_examples/create_user_interfaces.py
new file mode 100644
index 000000000..7878aa6b5
--- /dev/null
+++ b/docs/overrides/homepage_examples/create_user_interfaces.py
@@ -0,0 +1,21 @@
+# ruff: noqa: INP001
+from reactpy import component, html
+
+
+def thumbnail(*_, **__): ...
+
+
+def like_button(*_, **__): ...
+
+
+@component
+def video(data):
+    return html.div(
+        thumbnail(data),
+        html.a(
+            {"href": data.url},
+            html.h3(data.title),
+            html.p(data.description),
+        ),
+        like_button(data),
+    )
diff --git a/docs/overrides/homepage_examples/create_user_interfaces_demo.html b/docs/overrides/homepage_examples/create_user_interfaces_demo.html
new file mode 100644
index 000000000..9ec25437e
--- /dev/null
+++ b/docs/overrides/homepage_examples/create_user_interfaces_demo.html
@@ -0,0 +1,24 @@
+<div class="demo">
+  <div class="white-bg">
+    <div class="vid-row">
+      <div class="vid-thumbnail">
+        <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path fill-rule="evenodd" clip-rule="evenodd"
+            d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+            fill="rgb(123 123 123 / 50%)"></path>
+        </svg>
+      </div>
+      <div class="vid-text">
+        <h3>My video</h3>
+        <p>Video description</p>
+      </div>
+      <button class="like-btn">
+        <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path
+            d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+            fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
diff --git a/docs/overrides/homepage_examples/write_components_with_python.py b/docs/overrides/homepage_examples/write_components_with_python.py
new file mode 100644
index 000000000..5993046c9
--- /dev/null
+++ b/docs/overrides/homepage_examples/write_components_with_python.py
@@ -0,0 +1,19 @@
+# ruff: noqa: INP001
+from reactpy import component, html
+
+
+def video(*_, **__): ...
+
+
+@component
+def video_list(videos, empty_heading):
+    count = len(videos)
+    heading = empty_heading
+    if count > 0:
+        noun = "Videos" if count > 1 else "Video"
+        heading = f"{count} {noun}"
+
+    return html.section(
+        html.h2(heading),
+        [video(x, key=x.id) for x in videos],
+    )
diff --git a/docs/overrides/homepage_examples/write_components_with_python_demo.html b/docs/overrides/homepage_examples/write_components_with_python_demo.html
new file mode 100644
index 000000000..779f7abbe
--- /dev/null
+++ b/docs/overrides/homepage_examples/write_components_with_python_demo.html
@@ -0,0 +1,65 @@
+<div class="demo pop-right">
+  <div class="white-bg">
+    <h2>3 Videos</h2>
+    <div class="vid-row">
+      <div class="vid-thumbnail">
+        <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path fill-rule="evenodd" clip-rule="evenodd"
+            d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+            fill="rgb(123 123 123 / 50%)"></path>
+        </svg>
+      </div>
+      <div class="vid-text">
+        <h3>First video</h3>
+        <p>Video description</p>
+      </div>
+      <button class="like-btn">
+        <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path
+            d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+            fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+        </svg>
+      </button>
+    </div>
+    <div class="vid-row">
+      <div class="vid-thumbnail">
+        <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path fill-rule="evenodd" clip-rule="evenodd"
+            d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+            fill="rgb(123 123 123 / 50%)"></path>
+        </svg>
+      </div>
+      <div class="vid-text">
+        <h3>Second video</h3>
+        <p>Video description</p>
+      </div>
+      <button class="like-btn">
+        <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path
+            d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+            fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+        </svg>
+      </button>
+    </div>
+    <div class="vid-row">
+      <div class="vid-thumbnail">
+        <svg width="36" height="36" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path fill-rule="evenodd" clip-rule="evenodd"
+            d="M36 69C54.2254 69 69 54.2254 69 36C69 17.7746 54.2254 3 36 3C17.7746 3 3 17.7746 3 36C3 54.2254 17.7746 69 36 69ZM52.1716 38.6337L28.4366 51.5801C26.4374 52.6705 24 51.2235 24 48.9464V23.0536C24 20.7764 26.4374 19.3295 28.4366 20.4199L52.1716 33.3663C54.2562 34.5034 54.2562 37.4966 52.1716 38.6337Z"
+            fill="rgb(123 123 123 / 50%)"></path>
+        </svg>
+      </div>
+      <div class="vid-text">
+        <h3>Third video</h3>
+        <p>Video description</p>
+      </div>
+      <button class="like-btn">
+        <svg width="34" height="34" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path
+            d="m12 5.184-.808-.771-.004-.004C11.065 4.299 8.522 2.003 6 2.003c-3.736 0-6 2.558-6 6.677 0 4.47 5.471 9.848 10 13.079.602.43 1.187.82 1.74 1.167A.497.497 0 0 0 12 23v-.003c.09 0 .182-.026.26-.074C16.977 19.97 24 13.737 24 8.677 24 4.557 21.743 2 18 2c-2.569 0-5.166 2.387-5.192 2.413L12 5.184zm-.002 15.525c2.071-1.388 4.477-3.342 6.427-5.47C20.72 12.733 22 10.401 22 8.677c0-1.708-.466-2.855-1.087-3.55C20.316 4.459 19.392 4 18 4c-.726 0-1.63.364-2.5.9-.67.412-1.148.82-1.266.92-.03.025-.037.031-.019.014l-.013.013L12 7.949 9.832 5.88a10.08 10.08 0 0 0-1.33-.977C7.633 4.367 6.728 4.003 6 4.003c-1.388 0-2.312.459-2.91 1.128C2.466 5.826 2 6.974 2 8.68c0 1.726 1.28 4.058 3.575 6.563 1.948 2.127 4.352 4.078 6.423 5.466z"
+            fill="black" fill-rule="evenodd" clip-rule="evenodd" onclick="t"></path>
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
diff --git a/docs/overrides/main.html b/docs/overrides/main.html
index e70aa10c8..c63ca9e71 100644
--- a/docs/overrides/main.html
+++ b/docs/overrides/main.html
@@ -11,3 +11,10 @@
 </div>
 {% endif %}
 {% endblock %}
+
+{% block outdated %}
+You're not viewing the latest release.
+<a href="{{ '../' ~ base_url }}">
+    <strong>Click here to go to latest.</strong>
+</a>
+{% endblock %}
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 0e7af6eb3..28f64bf4d 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,10 +1,12 @@
 mkdocs
 mkdocs-git-revision-date-localized-plugin
-mkdocs-material
+mkdocs-material==9.4.0
 mkdocs-include-markdown-plugin
-linkcheckmd
 mkdocs-spellcheck[all]
 mkdocs-git-authors-plugin
 mkdocs-minify-plugin
-mkdocs-section-index
 mike
+mkdocstrings[python]
+black
+linkcheckmd
+mkdocs-section-index
diff --git a/docs/src/about/changelog.md b/docs/src/about/changelog.md
index 40c649d3e..e62f7dbe1 100644
--- a/docs/src/about/changelog.md
+++ b/docs/src/about/changelog.md
@@ -1,11 +1,12 @@
 ---
-title: Changelog
 hide:
     - toc
 ---
 
-!!! note "Attribution"
+<p class="intro" markdown>
 
-        {% include-markdown "../../../CHANGELOG.md" start="<!--attr-start-->" end="<!--attr-end-->" %}
+{% include-markdown "../../../CHANGELOG.md" start="<!--attr-start-->" end="<!--attr-end-->" %}
+
+</p>
 
 {% include-markdown "../../../CHANGELOG.md" start="<!--changelog-start-->" %}
diff --git a/docs/src/assets/css/admonition.css b/docs/src/assets/css/admonition.css
new file mode 100644
index 000000000..8b3f06ef6
--- /dev/null
+++ b/docs/src/assets/css/admonition.css
@@ -0,0 +1,160 @@
+[data-md-color-scheme="slate"] {
+	--admonition-border-color: transparent;
+	--admonition-expanded-border-color: rgba(255, 255, 255, 0.1);
+	--note-bg-color: rgba(43, 110, 98, 0.2);
+	--terminal-bg-color: #0c0c0c;
+	--terminal-title-bg-color: #000;
+	--deep-dive-bg-color: rgba(43, 52, 145, 0.2);
+	--you-will-learn-bg-color: #353a45;
+	--pitfall-bg-color: rgba(182, 87, 0, 0.2);
+}
+[data-md-color-scheme="default"] {
+	--admonition-border-color: rgba(0, 0, 0, 0.08);
+	--admonition-expanded-border-color: var(--admonition-border-color);
+	--note-bg-color: rgb(244, 251, 249);
+	--terminal-bg-color: rgb(64, 71, 86);
+	--terminal-title-bg-color: rgb(35, 39, 47);
+	--deep-dive-bg-color: rgb(243, 244, 253);
+	--you-will-learn-bg-color: rgb(246, 247, 249);
+	--pitfall-bg-color: rgb(254, 245, 231);
+}
+
+.md-typeset details,
+.md-typeset .admonition {
+	border-color: var(--admonition-border-color) !important;
+	box-shadow: none;
+}
+
+.md-typeset :is(.admonition, details) {
+	margin: 0.55em 0;
+}
+
+.md-typeset .admonition {
+	font-size: 0.7rem;
+}
+
+.md-typeset .admonition:focus-within,
+.md-typeset details:focus-within {
+	box-shadow: none !important;
+}
+
+.md-typeset details[open] {
+	border-color: var(--admonition-expanded-border-color) !important;
+}
+
+/* 
+Admonition: "summary" 
+React Name: "You will learn"
+*/
+.md-typeset .admonition.summary {
+	background: var(--you-will-learn-bg-color);
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+.md-typeset .summary .admonition-title {
+	font-size: 1rem;
+	background: transparent;
+	padding-left: 0.6rem;
+	padding-bottom: 0;
+}
+
+.md-typeset .summary .admonition-title:before {
+	display: none;
+}
+
+.md-typeset .admonition.summary {
+	border-color: #ffffff17 !important;
+}
+
+/* 
+Admonition: "abstract" 
+React Name: "Note"
+*/
+.md-typeset .admonition.abstract {
+	background: var(--note-bg-color);
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+.md-typeset .abstract .admonition-title {
+	font-size: 1rem;
+	background: transparent;
+	padding-bottom: 0;
+	color: rgb(68, 172, 153);
+}
+
+.md-typeset .abstract .admonition-title:before {
+	font-size: 1.1rem;
+	background: rgb(68, 172, 153);
+}
+
+/* 
+Admonition: "warning" 
+React Name: "Pitfall"
+*/
+.md-typeset .admonition.warning {
+	background: var(--pitfall-bg-color);
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+.md-typeset .warning .admonition-title {
+	font-size: 1rem;
+	background: transparent;
+	padding-bottom: 0;
+	color: rgb(219, 125, 39);
+}
+
+.md-typeset .warning .admonition-title:before {
+	font-size: 1.1rem;
+	background: rgb(219, 125, 39);
+}
+
+/* 
+Admonition: "info" 
+React Name: "Deep Dive"
+*/
+.md-typeset .admonition.info {
+	background: var(--deep-dive-bg-color);
+	padding: 0.8rem 1.4rem;
+	border-radius: 0.8rem;
+}
+
+.md-typeset .info .admonition-title {
+	font-size: 1rem;
+	background: transparent;
+	padding-bottom: 0;
+	color: rgb(136, 145, 236);
+}
+
+.md-typeset .info .admonition-title:before {
+	font-size: 1.1rem;
+	background: rgb(136, 145, 236);
+}
+
+/* 
+Admonition: "example" 
+React Name: "Terminal"
+*/
+.md-typeset .admonition.example {
+	background: var(--terminal-bg-color);
+	border-radius: 0.4rem;
+	overflow: hidden;
+	border: none;
+}
+
+.md-typeset .example .admonition-title {
+	background: var(--terminal-title-bg-color);
+	color: rgb(246, 247, 249);
+}
+
+.md-typeset .example .admonition-title:before {
+	background: rgb(246, 247, 249);
+}
+
+.md-typeset .admonition.example code {
+	background: transparent;
+	color: #fff;
+	box-shadow: none;
+}
diff --git a/docs/src/assets/css/banner.css b/docs/src/assets/css/banner.css
new file mode 100644
index 000000000..3739a73c1
--- /dev/null
+++ b/docs/src/assets/css/banner.css
@@ -0,0 +1,15 @@
+body[data-md-color-scheme="slate"] {
+	--md-banner-bg-color: rgb(55, 81, 78);
+	--md-banner-font-color: #fff;
+}
+
+body[data-md-color-scheme="default"] {
+	--md-banner-bg-color: #ff9;
+	--md-banner-font-color: #000;
+}
+
+.md-banner--warning {
+	background-color: var(--md-banner-bg-color);
+	color: var(--md-banner-font-color);
+	text-align: center;
+}
diff --git a/docs/src/assets/css/button.css b/docs/src/assets/css/button.css
new file mode 100644
index 000000000..8f71391aa
--- /dev/null
+++ b/docs/src/assets/css/button.css
@@ -0,0 +1,41 @@
+[data-md-color-scheme="slate"] {
+	--md-button-font-color: #fff;
+	--md-button-border-color: #404756;
+}
+
+[data-md-color-scheme="default"] {
+	--md-button-font-color: #000;
+	--md-button-border-color: #8d8d8d;
+}
+
+.md-typeset .md-button {
+	border-width: 1px;
+	border-color: var(--md-button-border-color);
+	border-radius: 9999px;
+	color: var(--md-button-font-color);
+	transition: color 125ms, background 125ms, border-color 125ms,
+		transform 125ms;
+}
+
+.md-typeset .md-button:focus,
+.md-typeset .md-button:hover {
+	border-color: var(--md-button-border-color);
+	color: var(--md-button-font-color);
+	background: rgba(78, 87, 105, 0.05);
+}
+
+.md-typeset .md-button.md-button--primary {
+	color: #fff;
+	border-color: transparent;
+	background: var(--reactpy-color-dark);
+}
+
+.md-typeset .md-button.md-button--primary:focus,
+.md-typeset .md-button.md-button--primary:hover {
+	border-color: transparent;
+	background: var(--reactpy-color-darker);
+}
+
+.md-typeset .md-button:focus {
+	transform: scale(0.98);
+}
diff --git a/docs/src/assets/css/code.css b/docs/src/assets/css/code.css
new file mode 100644
index 000000000..c54654980
--- /dev/null
+++ b/docs/src/assets/css/code.css
@@ -0,0 +1,111 @@
+:root {
+	--code-max-height: 17.25rem;
+	--md-code-backdrop: rgba(0, 0, 0, 0) 0px 0px 0px 0px,
+		rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.03) 0px 0.8px 2px 0px,
+		rgba(0, 0, 0, 0.047) 0px 2.7px 6.7px 0px,
+		rgba(0, 0, 0, 0.08) 0px 12px 30px 0px;
+}
+[data-md-color-scheme="slate"] {
+	--md-code-hl-color: #ffffcf1c;
+	--md-code-bg-color: #16181d;
+	--md-code-hl-comment-color: hsla(var(--md-hue), 75%, 90%, 0.43);
+	--code-tab-color: rgb(52, 58, 70);
+	--md-code-hl-name-color: #aadafc;
+	--md-code-hl-string-color: hsl(21 49% 63% / 1);
+	--md-code-hl-keyword-color: hsl(289.67deg 35% 60%);
+	--md-code-hl-constant-color: hsl(213.91deg 68% 61%);
+	--md-code-hl-number-color: #bfd9ab;
+	--func-and-decorator-color: #dcdcae;
+	--module-import-color: #60c4ac;
+}
+[data-md-color-scheme="default"] {
+	--md-code-hl-color: #ffffcf1c;
+	--md-code-bg-color: rgba(208, 211, 220, 0.4);
+	--md-code-fg-color: rgb(64, 71, 86);
+	--code-tab-color: #fff;
+	--func-and-decorator-color: var(--md-code-hl-function-color);
+	--module-import-color: #e153e5;
+}
+[data-md-color-scheme="default"] .md-typeset .highlight > pre > code,
+[data-md-color-scheme="default"] .md-typeset .highlight > table.highlighttable {
+	--md-code-bg-color: #fff;
+}
+
+/* All code blocks */
+.md-typeset pre > code {
+	max-height: var(--code-max-height);
+}
+
+/* Code blocks with no line number */
+.md-typeset .highlight > pre > code {
+	border-radius: 16px;
+	max-height: var(--code-max-height);
+	box-shadow: var(--md-code-backdrop);
+}
+
+/* Code blocks with line numbers */
+.md-typeset .highlighttable .linenos {
+	max-height: var(--code-max-height);
+	overflow: hidden;
+}
+.md-typeset .highlighttable {
+	box-shadow: var(--md-code-backdrop);
+	border-radius: 8px;
+	overflow: hidden;
+}
+
+/* Tabbed code blocks */
+.md-typeset .tabbed-set {
+	box-shadow: var(--md-code-backdrop);
+	border-radius: 8px;
+	overflow: hidden;
+	border: 1px solid var(--md-default-fg-color--lightest);
+}
+.md-typeset .tabbed-set .tabbed-block {
+	overflow: hidden;
+}
+.js .md-typeset .tabbed-set .tabbed-labels {
+	background: var(--code-tab-color);
+	margin: 0;
+	padding-left: 0.8rem;
+}
+.md-typeset .tabbed-set .tabbed-labels > label {
+	font-weight: 400;
+	font-size: 0.7rem;
+	padding-top: 0.55em;
+	padding-bottom: 0.35em;
+}
+.md-typeset .tabbed-set .highlighttable {
+	border-radius: 0;
+}
+
+/* Code hightlighting colors */
+
+/* Module imports */
+.highlight .nc,
+.highlight .ne,
+.highlight .nn,
+.highlight .nv {
+	color: var(--module-import-color);
+}
+
+/* Function def name and decorator */
+.highlight .nd,
+.highlight .nf {
+	color: var(--func-and-decorator-color);
+}
+
+/* None type */
+.highlight .kc {
+	color: var(--md-code-hl-constant-color);
+}
+
+/* Keywords such as def and return */
+.highlight .k {
+	color: var(--md-code-hl-constant-color);
+}
+
+/* HTML tags */
+.highlight .nt {
+	color: var(--md-code-hl-constant-color);
+}
diff --git a/docs/src/assets/css/footer.css b/docs/src/assets/css/footer.css
new file mode 100644
index 000000000..b3408286e
--- /dev/null
+++ b/docs/src/assets/css/footer.css
@@ -0,0 +1,33 @@
+[data-md-color-scheme="slate"] {
+	--md-footer-bg-color: var(--md-default-bg-color);
+	--md-footer-bg-color--dark: var(--md-default-bg-color);
+	--md-footer-border-color: var(--md-header-border-color);
+}
+
+[data-md-color-scheme="default"] {
+	--md-footer-fg-color: var(--md-typeset-color);
+	--md-footer-fg-color--light: var(--md-typeset-color);
+	--md-footer-bg-color: var(--md-default-bg-color);
+	--md-footer-bg-color--dark: var(--md-default-bg-color);
+	--md-footer-border-color: var(--md-header-border-color);
+}
+
+.md-footer {
+	border-top: 1px solid var(--md-footer-border-color);
+}
+
+.md-copyright {
+	width: 100%;
+}
+
+.md-copyright__highlight {
+	width: 100%;
+}
+
+.legal-footer-right {
+	float: right;
+}
+
+.md-copyright__highlight div {
+	display: inline;
+}
diff --git a/docs/src/assets/css/home.css b/docs/src/assets/css/home.css
new file mode 100644
index 000000000..c72e7093a
--- /dev/null
+++ b/docs/src/assets/css/home.css
@@ -0,0 +1,335 @@
+img.home-logo {
+	height: 120px;
+}
+
+.home .row {
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	flex-direction: column;
+	padding: 6rem 0.8rem;
+}
+
+.home .row:not(.first, .stripe) {
+	background: var(--row-bg-color);
+}
+
+.home .row.stripe {
+	background: var(--row-stripe-bg-color);
+	border: 0 solid var(--stripe-border-color);
+	border-top-width: 1px;
+	border-bottom-width: 1px;
+}
+
+.home .row.first {
+	text-align: center;
+}
+
+.home .row h1 {
+	max-width: 28rem;
+	line-height: 1.15;
+	font-weight: 500;
+	margin-bottom: 0.55rem;
+	margin-top: -1rem;
+}
+
+.home .row.first h1 {
+	margin-top: 0.55rem;
+	margin-bottom: -0.75rem;
+}
+
+.home .row > p {
+	max-width: 35rem;
+	line-height: 1.5;
+	font-weight: 400;
+}
+
+.home .row.first > p {
+	font-size: 32px;
+	font-weight: 500;
+}
+
+/* Code blocks */
+.home .row .tabbed-set {
+	background: var(--home-tabbed-set-bg-color);
+	margin: 0;
+}
+
+.home .row .tabbed-content {
+	padding: 20px 18px;
+	overflow-x: auto;
+}
+
+.home .row .tabbed-content img {
+	user-select: none;
+	-moz-user-select: none;
+	-webkit-user-drag: none;
+	-webkit-user-select: none;
+	-ms-user-select: none;
+	max-width: 580px;
+}
+
+.home .row .tabbed-content {
+	-webkit-filter: var(--code-block-filter);
+	filter: var(--code-block-filter);
+}
+
+/* Code examples */
+.home .example-container {
+	background: radial-gradient(
+			circle at 0% 100%,
+			rgb(41 84 147 / 11%) 0%,
+			rgb(22 89 189 / 4%) 70%,
+			rgb(48 99 175 / 0%) 80%
+		),
+		radial-gradient(
+			circle at 100% 100%,
+			rgb(24 87 45 / 55%) 0%,
+			rgb(29 61 12 / 4%) 70%,
+			rgb(94 116 93 / 0%) 80%
+		),
+		radial-gradient(
+			circle at 100% 0%,
+			rgba(54, 66, 84, 0.55) 0%,
+			rgb(102 111 125 / 4%) 70%,
+			rgba(54, 66, 84, 0) 80%
+		),
+		radial-gradient(
+			circle at 0% 0%,
+			rgba(91, 114, 135, 0.55) 0%,
+			rgb(45 111 171 / 4%) 70%,
+			rgb(5 82 153 / 0%) 80%
+		),
+		rgb(0, 0, 0) center center/cover no-repeat fixed;
+	display: grid;
+	grid-template-columns: repeat(2, minmax(0, 1fr));
+	align-items: center;
+	border-radius: 16px;
+	margin: 30px 0;
+	max-width: 100%;
+	grid-column-gap: 20px;
+	padding-left: 20px;
+	padding-right: 20px;
+}
+
+.home .demo .white-bg {
+	background: #fff;
+	border-radius: 16px;
+	display: flex;
+	flex-direction: column;
+	max-width: 590px;
+	min-width: -webkit-min-content;
+	min-width: -moz-min-content;
+	min-width: min-content;
+	row-gap: 1rem;
+	padding: 1rem;
+}
+
+.home .demo .vid-row {
+	display: flex;
+	flex-direction: row;
+	-moz-column-gap: 12px;
+	column-gap: 12px;
+}
+
+.home .demo {
+	color: #000;
+}
+
+.home .demo .vid-thumbnail {
+	background: radial-gradient(
+			circle at 0% 100%,
+			rgb(41 84 147 / 55%) 0%,
+			rgb(22 89 189 / 4%) 70%,
+			rgb(48 99 175 / 0%) 80%
+		),
+		radial-gradient(
+			circle at 100% 100%,
+			rgb(24 63 87 / 55%) 0%,
+			rgb(29 61 12 / 4%) 70%,
+			rgb(94 116 93 / 0%) 80%
+		),
+		radial-gradient(
+			circle at 100% 0%,
+			rgba(54, 66, 84, 0.55) 0%,
+			rgb(102 111 125 / 4%) 70%,
+			rgba(54, 66, 84, 0) 80%
+		),
+		radial-gradient(
+			circle at 0% 0%,
+			rgba(91, 114, 135, 0.55) 0%,
+			rgb(45 111 171 / 4%) 70%,
+			rgb(5 82 153 / 0%) 80%
+		),
+		rgb(0, 0, 0) center center/cover no-repeat fixed;
+	width: 9rem;
+	aspect-ratio: 16 / 9;
+	border-radius: 8px;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+}
+
+.home .demo .vid-text {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: flex-start;
+	width: 100%;
+}
+
+.home .demo h2 {
+	font-size: 18px;
+	line-height: 1.375;
+	margin: 0;
+	text-align: left;
+	font-weight: 700;
+}
+
+.home .demo h3 {
+	font-size: 16px;
+	line-height: 1.25;
+	margin: 0;
+}
+
+.home .demo p {
+	font-size: 14px;
+	line-height: 1.375;
+	margin: 0;
+}
+
+.home .demo .browser-nav-url {
+	background: rgba(153, 161, 179, 0.2);
+	border-radius: 9999px;
+	font-size: 14px;
+	color: grey;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	-moz-column-gap: 5px;
+	column-gap: 5px;
+}
+
+.home .demo .browser-navbar {
+	margin: -1rem;
+	margin-bottom: 0;
+	padding: 0.75rem 1rem;
+	border-bottom: 1px solid darkgrey;
+}
+
+.home .demo .browser-viewport {
+	background: #fff;
+	border-radius: 16px;
+	display: flex;
+	flex-direction: column;
+	row-gap: 1rem;
+	height: 400px;
+	overflow-y: scroll;
+	margin: -1rem;
+	padding: 1rem;
+}
+
+.home .demo .browser-viewport .search-header > h1 {
+	color: #000;
+	text-align: left;
+	font-size: 24px;
+	margin: 0;
+}
+
+.home .demo .browser-viewport .search-header > p {
+	text-align: left;
+	font-size: 16px;
+	margin: 10px 0;
+}
+
+.home .demo .search-bar input {
+	width: 100%;
+	background: rgba(153, 161, 179, 0.2);
+	border-radius: 9999px;
+	padding-left: 40px;
+	padding-right: 40px;
+	height: 40px;
+	color: #000;
+}
+
+.home .demo .search-bar svg {
+	height: 40px;
+	position: absolute;
+	transform: translateX(75%);
+}
+
+.home .demo .search-bar {
+	position: relative;
+}
+
+/* Desktop Styling */
+@media screen and (min-width: 60em) {
+	.home .row {
+		text-align: center;
+	}
+	.home .row > p {
+		font-size: 21px;
+	}
+	.home .row > h1 {
+		font-size: 52px;
+	}
+	.home .row .pop-left {
+		margin-left: -20px;
+		margin-right: 0;
+		margin-top: -20px;
+		margin-bottom: -20px;
+	}
+	.home .row .pop-right {
+		margin-left: 0px;
+		margin-right: 0px;
+		margin-top: -20px;
+		margin-bottom: -20px;
+	}
+}
+
+/* Mobile Styling */
+@media screen and (max-width: 60em) {
+	.home .row {
+		padding: 4rem 0.8rem;
+	}
+	.home .row > h1,
+	.home .row > p {
+		padding-left: 1rem;
+		padding-right: 1rem;
+	}
+	.home .row.first {
+		padding-top: 2rem;
+	}
+	.home-btns {
+		width: 100%;
+		display: grid;
+		grid-gap: 0.5rem;
+		gap: 0.5rem;
+	}
+	.home .example-container {
+		display: flex;
+		flex-direction: column;
+		row-gap: 20px;
+		width: 100%;
+		justify-content: center;
+		border-radius: 0;
+		padding: 1rem 0;
+	}
+	.home .row {
+		padding-left: 0;
+		padding-right: 0;
+	}
+	.home .tabbed-set {
+		width: 100%;
+		border-radius: 0;
+	}
+	.home .demo {
+		width: 100%;
+		display: flex;
+		justify-content: center;
+	}
+	.home .demo > .white-bg {
+		width: 80%;
+		max-width: 80%;
+	}
+}
diff --git a/docs/src/assets/css/main.css b/docs/src/assets/css/main.css
new file mode 100644
index 000000000..6eefdf2f4
--- /dev/null
+++ b/docs/src/assets/css/main.css
@@ -0,0 +1,85 @@
+/* Variable overrides */
+:root {
+	--reactpy-color: #58b962;
+	--reactpy-color-dark: #42914a;
+	--reactpy-color-darker: #34743b;
+	--reactpy-color-opacity-10: rgba(88, 185, 98, 0.1);
+}
+
+[data-md-color-accent="red"] {
+	--md-primary-fg-color--light: var(--reactpy-color);
+	--md-primary-fg-color--dark: var(--reactpy-color-dark);
+}
+
+[data-md-color-scheme="slate"] {
+	--md-default-bg-color: rgb(35, 39, 47);
+	--md-default-bg-color--light: hsla(var(--md-hue), 15%, 16%, 0.54);
+	--md-default-bg-color--lighter: hsla(var(--md-hue), 15%, 16%, 0.26);
+	--md-default-bg-color--lightest: hsla(var(--md-hue), 15%, 16%, 0.07);
+	--md-primary-fg-color: var(--md-default-bg-color);
+	--md-default-fg-color: hsla(var(--md-hue), 75%, 95%, 1);
+	--md-default-fg-color--light: #fff;
+	--md-typeset-a-color: var(--reactpy-color);
+	--md-accent-fg-color: var(--reactpy-color-dark);
+}
+
+[data-md-color-scheme="default"] {
+	--md-primary-fg-color: var(--md-default-bg-color);
+	--md-default-fg-color--light: #000;
+	--md-default-fg-color--lighter: #0000007e;
+	--md-default-fg-color--lightest: #00000029;
+	--md-typeset-color: rgb(35, 39, 47);
+	--md-typeset-a-color: var(--reactpy-color);
+	--md-accent-fg-color: var(--reactpy-color-dark);
+}
+
+/* Font changes */
+.md-typeset {
+	font-weight: 300;
+}
+
+.md-typeset h1 {
+	font-weight: 600;
+	margin: 0;
+	font-size: 2.5em;
+}
+
+.md-typeset h2 {
+	font-weight: 500;
+}
+
+.md-typeset h3 {
+	font-weight: 400;
+}
+
+/* Intro section styling */
+p.intro {
+	font-size: 0.9rem;
+	font-weight: 500;
+}
+
+/* Hide "Overview" jump selector */
+h2#overview {
+	visibility: hidden;
+	height: 0;
+	margin: 0;
+	padding: 0;
+}
+
+/* Reduce size of the outdated banner */
+.md-banner__inner {
+	margin: 0.45rem auto;
+}
+
+/* Desktop Styles */
+@media screen and (min-width: 60em) {
+	/* Remove max width on desktop */
+	.md-grid {
+		max-width: none;
+	}
+}
+
+/* Max size of page content */
+.md-content {
+	max-width: 56rem;
+}
diff --git a/docs/src/assets/css/navbar.css b/docs/src/assets/css/navbar.css
new file mode 100644
index 000000000..33e8b14fd
--- /dev/null
+++ b/docs/src/assets/css/navbar.css
@@ -0,0 +1,185 @@
+[data-md-color-scheme="slate"] {
+	--md-header-border-color: rgb(255 255 255 / 5%);
+	--md-version-bg-color: #ffffff0d;
+}
+
+[data-md-color-scheme="default"] {
+	--md-header-border-color: rgb(0 0 0 / 7%);
+	--md-version-bg-color: #ae58ee2e;
+}
+
+.md-header {
+	border: 0 solid transparent;
+	border-bottom-width: 1px;
+}
+
+.md-header--shadow {
+	box-shadow: none;
+	border-color: var(--md-header-border-color);
+	transition: border-color 0.35s cubic-bezier(0.1, 0.7, 0.1, 1);
+}
+
+/* Version selector */
+.md-header__topic .md-ellipsis,
+.md-header__title [data-md-component="header-topic"] {
+	display: none;
+}
+
+[dir="ltr"] .md-version__current {
+	margin: 0;
+}
+
+.md-version__list {
+	margin: 0;
+	left: 0;
+	right: 0;
+	top: 2.5rem;
+}
+
+.md-version {
+	background: var(--md-version-bg-color);
+	border-radius: 999px;
+	padding: 0 0.8rem;
+	margin: 0.3rem 0;
+	height: 1.8rem;
+	display: flex;
+	font-size: 0.7rem;
+}
+
+/* Mobile Styling */
+@media screen and (max-width: 60em) {
+	label.md-header__button.md-icon[for="__drawer"] {
+		order: 1;
+	}
+	.md-header__button.md-logo {
+		display: initial;
+		order: 2;
+		margin-right: auto;
+	}
+	.md-header__title {
+		order: 3;
+	}
+	.md-header__button[for="__search"] {
+		order: 4;
+	}
+	.md-header__option[data-md-component="palette"] {
+		order: 5;
+	}
+	.md-header__source {
+		display: initial;
+		order: 6;
+	}
+	.md-header__source .md-source__repository {
+		display: none;
+	}
+}
+
+/* Desktop Styling */
+@media screen and (min-width: 60em) {
+	/* Nav container */
+	nav.md-header__inner {
+		display: contents;
+	}
+	header.md-header {
+		display: flex;
+		align-items: center;
+	}
+
+	/* Logo */
+	.md-header__button.md-logo {
+		order: 1;
+		padding-right: 0.4rem;
+		padding-top: 0;
+		padding-bottom: 0;
+	}
+	.md-header__button.md-logo img {
+		height: 2rem;
+	}
+
+	/* Version selector */
+	[dir="ltr"] .md-header__title {
+		order: 2;
+		margin: 0;
+		margin-right: 0.8rem;
+		margin-left: 0.2rem;
+		flex-grow: 0;
+	}
+	.md-header__topic {
+		position: relative;
+	}
+	.md-header__title--active .md-header__topic {
+		transform: none;
+		opacity: 1;
+		pointer-events: auto;
+		z-index: 4;
+	}
+
+	/* Search */
+	.md-search {
+		order: 3;
+		width: 100%;
+		margin-right: 0.6rem;
+	}
+	.md-search__inner {
+		width: 100%;
+		float: unset !important;
+	}
+	.md-search__form {
+		border-radius: 9999px;
+	}
+	[data-md-toggle="search"]:checked ~ .md-header .md-header__option {
+		max-width: unset;
+		opacity: unset;
+		transition: unset;
+	}
+
+	/* Tabs */
+	.md-tabs {
+		order: 4;
+		min-width: -webkit-fit-content;
+		min-width: -moz-fit-content;
+		min-width: fit-content;
+		width: -webkit-fit-content;
+		width: -moz-fit-content;
+		width: fit-content;
+		z-index: -1;
+		overflow: visible;
+		border: none !important;
+	}
+	li.md-tabs__item.md-tabs__item--active {
+		background: var(--reactpy-color-opacity-10);
+		border-radius: 9999px;
+		color: var(--md-typeset-a-color);
+	}
+	.md-tabs__link {
+		margin: 0;
+	}
+	.md-tabs__item {
+		height: 1.8rem;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		flex-direction: column;
+	}
+
+	/* Dark/Light Selector */
+	.md-header__option[data-md-component="palette"] {
+		order: 5;
+	}
+
+	/* GitHub info */
+	.md-header__source {
+		order: 6;
+		margin-left: 0 !important;
+	}
+}
+
+/* Ultrawide Desktop Styles */
+@media screen and (min-width: 1919px) {
+	.md-search {
+		order: 2;
+		width: 100%;
+		max-width: 34.4rem;
+		margin: 0 auto;
+	}
+}
diff --git a/docs/src/assets/css/sidebar.css b/docs/src/assets/css/sidebar.css
new file mode 100644
index 000000000..b6507d963
--- /dev/null
+++ b/docs/src/assets/css/sidebar.css
@@ -0,0 +1,104 @@
+:root {
+	--sizebar-font-size: 0.62rem;
+}
+
+.md-nav__link {
+	word-break: break-word;
+}
+
+/* Desktop Styling */
+@media screen and (min-width: 76.1875em) {
+	/* Move the sidebar and TOC to the edge of the page */
+	.md-main__inner.md-grid {
+		margin-left: 0;
+		margin-right: 0;
+		max-width: unset;
+		display: grid;
+		grid-template-columns: auto 1fr auto;
+	}
+
+	.md-content {
+		justify-self: center;
+		width: 100%;
+	}
+	/* Made the sidebar buttons look React-like */
+	.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link {
+		text-transform: uppercase;
+	}
+
+	.md-nav__title[for="__toc"] {
+		text-transform: uppercase;
+		margin: 0.5rem;
+	}
+
+	.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link {
+		color: rgb(133, 142, 159);
+		margin: 0.5rem;
+	}
+
+	.md-nav__item .md-nav__link {
+		position: relative;
+	}
+
+	.md-nav__link:is(:focus, :hover):not(.md-nav__link--active) {
+		color: unset;
+	}
+
+	.md-nav__item
+		.md-nav__link:is(:focus, :hover):not(.md-nav__link--active):before {
+		content: "";
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		opacity: 0.2;
+		z-index: -1;
+		background: grey;
+	}
+
+	.md-nav__item .md-nav__link--active:before {
+		content: "";
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		z-index: -1;
+		background: var(--reactpy-color-opacity-10);
+	}
+
+	.md-nav__link {
+		padding: 0.5rem 0.5rem 0.5rem 1rem;
+		margin: 0;
+		border-radius: 0 10px 10px 0;
+		font-weight: 500;
+		overflow: hidden;
+		font-size: var(--sizebar-font-size);
+	}
+
+	.md-sidebar__scrollwrap {
+		margin: 0;
+	}
+
+	[dir="ltr"]
+		.md-nav--lifted
+		.md-nav[data-md-level="1"]
+		> .md-nav__list
+		> .md-nav__item {
+		padding: 0;
+	}
+
+	.md-nav__item--nested .md-nav__item .md-nav__item {
+		padding: 0;
+	}
+
+	.md-nav__item--nested .md-nav__item .md-nav__item .md-nav__link {
+		font-weight: 300;
+	}
+
+	.md-nav__item--nested .md-nav__item .md-nav__item .md-nav__link {
+		font-weight: 400;
+		padding-left: 1.25rem;
+	}
+}
diff --git a/docs/src/assets/css/table-of-contents.css b/docs/src/assets/css/table-of-contents.css
new file mode 100644
index 000000000..6c94f06ef
--- /dev/null
+++ b/docs/src/assets/css/table-of-contents.css
@@ -0,0 +1,48 @@
+/* Table of Contents styling */
+@media screen and (min-width: 60em) {
+	[data-md-component="sidebar"] .md-nav__title[for="__toc"] {
+		text-transform: uppercase;
+		margin: 0.5rem;
+		margin-left: 0;
+		font-size: var(--sizebar-font-size);
+	}
+
+	[data-md-component="toc"] .md-nav__item .md-nav__link--active {
+		position: relative;
+	}
+
+	[data-md-component="toc"] .md-nav__item .md-nav__link--active:before {
+		content: "";
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		opacity: 0.15;
+		z-index: -1;
+		background: var(--md-typeset-a-color);
+	}
+
+	[data-md-component="toc"] .md-nav__link {
+		padding: 0.5rem 0.5rem;
+		margin: 0;
+		border-radius: 10px 0 0 10px;
+		font-weight: 400;
+	}
+
+	[data-md-component="toc"]
+		.md-nav__item
+		.md-nav__list
+		.md-nav__item
+		.md-nav__link {
+		padding-left: 1.25rem;
+	}
+
+	[dir="ltr"] .md-sidebar__inner {
+		padding: 0;
+	}
+
+	.md-nav__item {
+		padding: 0;
+	}
+}
diff --git a/docs/src/assets/images/add-interactivity.png b/docs/src/assets/images/add-interactivity.png
new file mode 100644
index 0000000000000000000000000000000000000000..c32431905252537a5387e25c4ec58a3f90f87f6c
GIT binary patch
literal 22900
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
LmSPFiBJ_U%+FQ}0

literal 0
HcmV?d00001

diff --git a/docs/src/assets/images/create-user-interfaces.png b/docs/src/assets/images/create-user-interfaces.png
new file mode 100644
index 0000000000000000000000000000000000000000..06f6ea0cb6fdd4e17a6af5e374ced578cc0728f3
GIT binary patch
literal 12427
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
CCnIM7

literal 0
HcmV?d00001

diff --git a/docs/src/static/images/s_thinking-in-react_ui.png b/docs/src/assets/images/s_thinking-in-react_ui.png
similarity index 100%
rename from docs/src/static/images/s_thinking-in-react_ui.png
rename to docs/src/assets/images/s_thinking-in-react_ui.png
diff --git a/docs/src/static/images/s_thinking-in-react_ui_outline.png b/docs/src/assets/images/s_thinking-in-react_ui_outline.png
similarity index 100%
rename from docs/src/static/images/s_thinking-in-react_ui_outline.png
rename to docs/src/assets/images/s_thinking-in-react_ui_outline.png
diff --git a/docs/src/assets/images/write-components-with-python.png b/docs/src/assets/images/write-components-with-python.png
new file mode 100644
index 0000000000000000000000000000000000000000..380d2c3ada56fa9b6059df8f30d5e734749858a4
GIT binary patch
literal 16519
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

literal 0
HcmV?d00001

diff --git a/docs/src/static/js/extra.js b/docs/src/assets/js/main.js
similarity index 100%
rename from docs/src/static/js/extra.js
rename to docs/src/assets/js/main.js
diff --git a/docs/src/index.md b/docs/src/index.md
index ae43c6a82..384ec5b6d 100644
--- a/docs/src/index.md
+++ b/docs/src/index.md
@@ -1,57 +1,6 @@
 ---
+template: home.html
 hide:
     - navigation
     - toc
 ---
-
-[ReactPy](https://reactpy.dev/) is a library for building user interfaces in Python without Javascript. ReactPy interfaces are made from components that look and behave similar to those found in [ReactJS](https://reactjs.org/). Designed with simplicity in mind, ReactPy can be used by those without web development experience while also being powerful enough to grow with your ambitions.
-
-<table align="center">
-    <thead>
-        <tr>
-            <th colspan="2" style="text-align: center">Supported Backends</th>
-        <tr>
-            <th style="text-align: center">Built-in</th>
-            <th style="text-align: center">External</th>
-        </tr>
-    </thead>
-    <tbody>
-        <tr>
-        <td>
-            <a href="https://reactpy.dev/docs/guides/getting-started/installing-reactpy.html#officially-supported-servers">
-                Flask, FastAPI, Sanic, Tornado
-            </a>
-        </td>
-        <td>
-            <a href="https://github.com/reactive-python/reactpy-django">Django</a>,
-            <a href="https://github.com/reactive-python/reactpy-jupyter">Jupyter</a>,
-            <a href="https://github.com/idom-team/idom-dash">Plotly-Dash</a>
-        </td>
-        </tr>
-    </tbody>
-</table>
-
-# At a Glance
-
-To get a rough idea of how to write apps in ReactPy, take a look at this tiny _Hello World_ application.
-
-```python
-from reactpy import component, html, run
-
-@component
-def hello_world():
-    return html.h1("Hello, World!")
-
-run(hello_world)
-```
-
-# Resources
-
-Follow the links below to find out more about this project.
-
--   [Try ReactPy (Jupyter Notebook)](https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb)
--   [Documentation](https://reactpy.dev/)
--   [GitHub Discussions](https://github.com/reactive-python/reactpy/discussions)
--   [Discord](https://discord.gg/uNb5P4hA9X)
--   [Contributor Guide](https://reactpy.dev/docs/about/contributor-guide.html)
--   [Code of Conduct](https://github.com/reactive-python/reactpy/blob/main/CODE_OF_CONDUCT.md)
diff --git a/docs/src/static/css/extra.css b/docs/src/static/css/extra.css
deleted file mode 100644
index d39676668..000000000
--- a/docs/src/static/css/extra.css
+++ /dev/null
@@ -1,376 +0,0 @@
-/* Variable overrides */
-:root {
-	--code-max-height: 17.25rem;
-}
-
-[data-md-color-scheme="slate"] {
-	--md-code-hl-color: #ffffcf1c;
-	--md-hue: 225;
-	--md-default-bg-color: hsla(var(--md-hue), 15%, 16%, 1);
-	--md-default-bg-color--light: hsla(var(--md-hue), 15%, 16%, 0.54);
-	--md-default-bg-color--lighter: hsla(var(--md-hue), 15%, 16%, 0.26);
-	--md-default-bg-color--lightest: hsla(var(--md-hue), 15%, 16%, 0.07);
-	--md-code-bg-color: #16181d;
-	--md-primary-fg-color: #2b3540;
-	--md-default-fg-color--light: #fff;
-	--md-typeset-a-color: #00b0f0;
-	--md-code-hl-comment-color: hsla(var(--md-hue), 75%, 90%, 0.43);
-	--tabbed-labels-color: rgb(52 58 70);
-}
-
-[data-md-color-scheme="default"] {
-	--tabbed-labels-color: #7d829e26;
-}
-
-/* General admonition styling */
-/* TODO: Write this in a way that supports the light theme */
-[data-md-color-scheme="slate"] .md-typeset details,
-[data-md-color-scheme="slate"] .md-typeset .admonition {
-	border-color: transparent !important;
-}
-
-.md-typeset :is(.admonition, details) {
-	margin: 0.55em 0;
-}
-
-.md-typeset .admonition {
-	font-size: 0.7rem;
-}
-
-.md-typeset .admonition:focus-within,
-.md-typeset details:focus-within {
-	box-shadow: var(--md-shadow-z1) !important;
-}
-
-/* Colors for "summary" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.summary {
-	background: #353a45;
-	padding: 0.8rem 1.4rem;
-	border-radius: 0.8rem;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .summary .admonition-title {
-	font-size: 1rem;
-	background: transparent;
-	padding-left: 0.6rem;
-	padding-bottom: 0;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .summary .admonition-title:before {
-	display: none;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .admonition.summary {
-	border-color: #ffffff17 !important;
-}
-
-/* Colors for "note" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.note {
-	background: rgb(43 110 98/ 0.2);
-	padding: 0.8rem 1.4rem;
-	border-radius: 0.8rem;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .note .admonition-title {
-	font-size: 1rem;
-	background: transparent;
-	padding-bottom: 0;
-	color: rgb(68 172 153);
-}
-
-[data-md-color-scheme="slate"] .md-typeset .note .admonition-title:before {
-	font-size: 1.1rem;
-	background-color: rgb(68 172 153);
-}
-
-.md-typeset .note > .admonition-title:before,
-.md-typeset .note > summary:before {
-	-webkit-mask-image: var(--md-admonition-icon--abstract);
-	mask-image: var(--md-admonition-icon--abstract);
-}
-
-/* Colors for "warning" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.warning {
-	background: rgb(182 87 0 / 0.2);
-	padding: 0.8rem 1.4rem;
-	border-radius: 0.8rem;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .warning .admonition-title {
-	font-size: 1rem;
-	background: transparent;
-	padding-bottom: 0;
-	color: rgb(219 125 39);
-}
-
-[data-md-color-scheme="slate"] .md-typeset .warning .admonition-title:before {
-	font-size: 1.1rem;
-	background-color: rgb(219 125 39);
-}
-
-/* Colors for "info" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.info {
-	background: rgb(43 52 145 / 0.2);
-	padding: 0.8rem 1.4rem;
-	border-radius: 0.8rem;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .info .admonition-title {
-	font-size: 1rem;
-	background: transparent;
-	padding-bottom: 0;
-	color: rgb(136 145 236);
-}
-
-[data-md-color-scheme="slate"] .md-typeset .info .admonition-title:before {
-	font-size: 1.1rem;
-	background-color: rgb(136 145 236);
-}
-
-/* Colors for "example" admonition */
-[data-md-color-scheme="slate"] .md-typeset .admonition.example {
-	background: rgb(94 104 126);
-	border-radius: 0.4rem;
-}
-
-[data-md-color-scheme="slate"] .md-typeset .example .admonition-title {
-	background: rgb(78 87 105);
-	color: rgb(246 247 249);
-}
-
-[data-md-color-scheme="slate"] .md-typeset .example .admonition-title:before {
-	background-color: rgb(246 247 249);
-}
-
-[data-md-color-scheme="slate"] .md-typeset .admonition.example code {
-	background: transparent;
-	color: #fff;
-}
-
-/* Move the sidebars to the edges of the page */
-.md-main__inner.md-grid {
-	margin-left: 0;
-	margin-right: 0;
-	max-width: unset;
-	display: flex;
-	justify-content: center;
-}
-
-.md-sidebar--primary {
-	margin-right: auto;
-}
-
-.md-sidebar.md-sidebar--secondary {
-	margin-left: auto;
-}
-
-.md-content {
-	max-width: 56rem;
-}
-
-/* Maintain content positioning even if sidebars are disabled */
-@media screen and (min-width: 76.1875em) {
-	.md-sidebar {
-		display: block;
-	}
-
-	.md-sidebar[hidden] {
-		visibility: hidden;
-	}
-}
-
-/* Sidebar styling */
-@media screen and (min-width: 76.1875em) {
-	.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link {
-		text-transform: uppercase;
-	}
-
-	.md-nav__title[for="__toc"] {
-		text-transform: uppercase;
-		margin: 0.5rem;
-	}
-
-	.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link {
-		color: rgb(133 142 159);
-		margin: 0.5rem;
-	}
-
-	.md-nav__item .md-nav__link {
-		position: relative;
-	}
-
-	.md-nav__link:is(:focus, :hover):not(.md-nav__link--active) {
-		color: unset;
-	}
-
-	.md-nav__item
-		.md-nav__link:is(:focus, :hover):not(.md-nav__link--active):before {
-		content: "";
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 100%;
-		height: 100%;
-		opacity: 0.2;
-		z-index: -1;
-		background-color: grey;
-	}
-
-	.md-nav__item .md-nav__link--active:before {
-		content: "";
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 100%;
-		height: 100%;
-		opacity: 0.15;
-		z-index: -1;
-		background-color: var(--md-typeset-a-color);
-	}
-
-	.md-nav__link {
-		padding: 0.5rem 0.5rem 0.5rem 1rem;
-		margin: 0;
-		border-radius: 0 10px 10px 0;
-		font-weight: 600;
-		overflow: hidden;
-	}
-
-	.md-sidebar__scrollwrap {
-		margin: 0;
-	}
-
-	[dir="ltr"]
-		.md-nav--lifted
-		.md-nav[data-md-level="1"]
-		> .md-nav__list
-		> .md-nav__item {
-		padding: 0;
-	}
-
-	.md-nav__item--nested .md-nav__item .md-nav__item {
-		padding: 0;
-	}
-
-	.md-nav__item--nested .md-nav__item .md-nav__item .md-nav__link {
-		font-weight: 300;
-	}
-
-	.md-nav__item--nested .md-nav__item .md-nav__item .md-nav__link {
-		font-weight: 400;
-		padding-left: 1.25rem;
-	}
-}
-
-/* Table of Contents styling */
-@media screen and (min-width: 60em) {
-	[data-md-component="sidebar"] .md-nav__title[for="__toc"] {
-		text-transform: uppercase;
-		margin: 0.5rem;
-		margin-left: 0;
-	}
-
-	[data-md-component="toc"] .md-nav__item .md-nav__link--active {
-		position: relative;
-	}
-
-	[data-md-component="toc"] .md-nav__item .md-nav__link--active:before {
-		content: "";
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 100%;
-		height: 100%;
-		opacity: 0.15;
-		z-index: -1;
-		background-color: var(--md-typeset-a-color);
-	}
-
-	[data-md-component="toc"] .md-nav__link {
-		padding: 0.5rem 0.5rem;
-		margin: 0;
-		border-radius: 10px 0 0 10px;
-	}
-	[dir="ltr"] .md-sidebar__inner {
-		padding: 0;
-	}
-
-	.md-nav__item {
-		padding: 0;
-	}
-}
-
-/* Font changes */
-.md-typeset {
-	font-weight: 300;
-}
-
-.md-typeset h1 {
-	font-weight: 500;
-	margin: 0;
-	font-size: 2.5em;
-}
-
-.md-typeset h2 {
-	font-weight: 500;
-}
-
-.md-typeset h3 {
-	font-weight: 600;
-}
-
-/* Intro section styling */
-p.intro {
-	font-size: 0.9rem;
-	font-weight: 500;
-}
-
-/* Hide invisible jump selectors */
-h2#overview {
-	visibility: hidden;
-	height: 0;
-	margin: 0;
-	padding: 0;
-}
-
-/* Code blocks */
-.md-typeset pre > code {
-	border-radius: 16px;
-}
-
-.md-typeset .highlighttable .linenos {
-	max-height: var(--code-max-height);
-	overflow: hidden;
-}
-
-.md-typeset .tabbed-block .highlighttable code {
-	border-radius: 0;
-}
-
-.md-typeset .tabbed-block {
-	border-bottom-left-radius: 8px;
-	border-bottom-right-radius: 8px;
-	overflow: hidden;
-}
-
-.js .md-typeset .tabbed-labels {
-	background: var(--tabbed-labels-color);
-	border-top-left-radius: 8px;
-	border-top-right-radius: 8px;
-}
-
-.md-typeset .tabbed-labels > label {
-	font-weight: 400;
-	font-size: 0.7rem;
-	padding-top: 0.55em;
-	padding-bottom: 0.35em;
-}
-
-.md-typeset pre > code {
-	max-height: var(--code-max-height);
-}
-
-/* Reduce height of outdated banner */
-.md-banner__inner {
-	margin: 0.45rem auto;
-}

From 169e33e5bcbc60e1f4e3a1c3524c8405d57af98e Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 14 Mar 2025 02:00:22 -0700
Subject: [PATCH 47/49] delete python src from this branch

---
 .../reactpy/reactpy/_console => }/__init__.py |    0
 src/js/.eslintrc.json                         |   31 -
 src/js/.gitignore                             |    3 -
 src/js/README.md                              |    3 -
 src/js/app/.eslintrc.json                     |   19 -
 src/js/app/index.html                         |   15 -
 src/js/app/package-lock.json                  | 1189 ----
 src/js/app/package.json                       |   28 -
 src/js/app/public/assets/reactpy-logo.ico     |  Bin 14916 -> 0 bytes
 src/js/app/src/index.ts                       |   12 -
 src/js/app/tsconfig.json                      |   14 -
 src/js/app/vite.config.js                     |   12 -
 src/js/package-lock.json                      | 6003 -----------------
 src/js/package.json                           |   26 -
 src/js/packages/@reactpy/client/.gitignore    |    8 -
 src/js/packages/@reactpy/client/README.md     |    3 -
 src/js/packages/@reactpy/client/package.json  |   34 -
 .../@reactpy/client/src/components.tsx        |  227 -
 src/js/packages/@reactpy/client/src/index.ts  |    5 -
 src/js/packages/@reactpy/client/src/logger.ts |    5 -
 .../packages/@reactpy/client/src/messages.ts  |   17 -
 src/js/packages/@reactpy/client/src/mount.tsx |    8 -
 .../@reactpy/client/src/reactpy-client.ts     |  264 -
 .../@reactpy/client/src/reactpy-vdom.tsx      |  261 -
 src/js/packages/@reactpy/client/tsconfig.json |   14 -
 src/js/packages/event-to-object/package.json  |   30 -
 src/js/packages/event-to-object/src/events.ts |  258 -
 src/js/packages/event-to-object/src/index.ts  |  427 --
 .../tests/event-to-object.test.ts             |  381 --
 .../event-to-object/tests/tooling/check.ts    |   46 -
 .../event-to-object/tests/tooling/mock.ts     |   61 -
 .../event-to-object/tests/tooling/setup.js    |   22 -
 src/js/packages/event-to-object/tsconfig.json |    9 -
 .../event-to-object/tsconfig.tests.json       |   16 -
 src/js/tsconfig.package.json                  |   22 -
 src/py/reactpy/.gitignore                     |    4 -
 src/py/reactpy/MANIFEST.in                    |    3 -
 src/py/reactpy/README.md                      |   23 -
 src/py/reactpy/pyproject.toml                 |  175 -
 src/py/reactpy/reactpy/__init__.py            |   58 -
 src/py/reactpy/reactpy/__main__.py            |   19 -
 src/py/reactpy/reactpy/_console/ast_utils.py  |  186 -
 .../_console/rewrite_camel_case_props.py      |  113 -
 .../reactpy/reactpy/_console/rewrite_keys.py  |  112 -
 src/py/reactpy/reactpy/_option.py             |  133 -
 src/py/reactpy/reactpy/_warnings.py           |   36 -
 src/py/reactpy/reactpy/backend/__init__.py    |    0
 src/py/reactpy/reactpy/backend/_common.py     |  146 -
 src/py/reactpy/reactpy/backend/default.py     |   72 -
 src/py/reactpy/reactpy/backend/fastapi.py     |   25 -
 src/py/reactpy/reactpy/backend/flask.py       |  298 -
 src/py/reactpy/reactpy/backend/hooks.py       |   29 -
 src/py/reactpy/reactpy/backend/sanic.py       |  223 -
 src/py/reactpy/reactpy/backend/starlette.py   |  172 -
 src/py/reactpy/reactpy/backend/tornado.py     |  227 -
 src/py/reactpy/reactpy/backend/types.py       |   76 -
 src/py/reactpy/reactpy/backend/utils.py       |   98 -
 src/py/reactpy/reactpy/config.py              |   61 -
 src/py/reactpy/reactpy/core/__init__.py       |    0
 src/py/reactpy/reactpy/core/_f_back.py        |   24 -
 src/py/reactpy/reactpy/core/_thread_local.py  |   21 -
 src/py/reactpy/reactpy/core/component.py      |   66 -
 src/py/reactpy/reactpy/core/events.py         |  220 -
 src/py/reactpy/reactpy/core/hooks.py          |  750 --
 src/py/reactpy/reactpy/core/layout.py         |  698 --
 src/py/reactpy/reactpy/core/serve.py          |   63 -
 src/py/reactpy/reactpy/core/types.py          |  235 -
 src/py/reactpy/reactpy/core/vdom.py           |  355 -
 src/py/reactpy/reactpy/future.py              |    0
 src/py/reactpy/reactpy/html.py                |  544 --
 src/py/reactpy/reactpy/logging.py             |   42 -
 src/py/reactpy/reactpy/py.typed               |    1 -
 src/py/reactpy/reactpy/sample.py              |   21 -
 src/py/reactpy/reactpy/svg.py                 |  139 -
 src/py/reactpy/reactpy/testing/__init__.py    |   27 -
 src/py/reactpy/reactpy/testing/backend.py     |  230 -
 src/py/reactpy/reactpy/testing/common.py      |  212 -
 src/py/reactpy/reactpy/testing/display.py     |   91 -
 src/py/reactpy/reactpy/testing/logs.py        |  178 -
 src/py/reactpy/reactpy/types.py               |   51 -
 src/py/reactpy/reactpy/utils.py               |  322 -
 src/py/reactpy/reactpy/web/__init__.py        |   15 -
 src/py/reactpy/reactpy/web/module.py          |  390 --
 src/py/reactpy/reactpy/web/templates/react.js |   60 -
 src/py/reactpy/reactpy/web/utils.py           |  155 -
 src/py/reactpy/reactpy/widgets.py             |  103 -
 src/py/reactpy/tests/__init__.py              |    0
 src/py/reactpy/tests/conftest.py              |   80 -
 .../reactpy/tests/test__console/__init__.py   |    0
 .../test_rewrite_camel_case_props.py          |  118 -
 .../tests/test__console/test_rewrite_keys.py  |  237 -
 src/py/reactpy/tests/test__option.py          |  111 -
 src/py/reactpy/tests/test_backend/__init__.py |    0
 .../tests/test_backend/test__common.py        |   70 -
 src/py/reactpy/tests/test_backend/test_all.py |  174 -
 .../reactpy/tests/test_backend/test_utils.py  |   46 -
 src/py/reactpy/tests/test_client.py           |  161 -
 src/py/reactpy/tests/test_config.py           |   29 -
 src/py/reactpy/tests/test_core/__init__.py    |    0
 .../reactpy/tests/test_core/test_component.py |   73 -
 src/py/reactpy/tests/test_core/test_events.py |  223 -
 src/py/reactpy/tests/test_core/test_hooks.py  | 1259 ----
 src/py/reactpy/tests/test_core/test_layout.py | 1192 ----
 src/py/reactpy/tests/test_core/test_serve.py  |  139 -
 src/py/reactpy/tests/test_core/test_vdom.py   |  307 -
 src/py/reactpy/tests/test_html.py             |  160 -
 src/py/reactpy/tests/test_sample.py           |    8 -
 src/py/reactpy/tests/test_testing.py          |  218 -
 src/py/reactpy/tests/test_utils.py            |  274 -
 src/py/reactpy/tests/test_web/__init__.py     |    0
 .../js_fixtures/component-can-have-child.js   |   27 -
 .../js_fixtures/export-resolution/index.js    |    2 -
 .../js_fixtures/export-resolution/one.js      |    5 -
 .../js_fixtures/export-resolution/two.js      |    2 -
 .../test_web/js_fixtures/exports-syntax.js    |   23 -
 .../js_fixtures/exports-two-components.js     |   20 -
 .../set-flag-when-unmount-is-called.js        |   31 -
 .../test_web/js_fixtures/simple-button.js     |   25 -
 src/py/reactpy/tests/test_web/test_module.py  |  235 -
 src/py/reactpy/tests/test_web/test_utils.py   |  152 -
 src/py/reactpy/tests/test_widgets.py          |  141 -
 src/py/reactpy/tests/tooling/__init__.py      |    0
 src/py/reactpy/tests/tooling/asserts.py       |    5 -
 src/py/reactpy/tests/tooling/common.py        |   14 -
 src/py/reactpy/tests/tooling/hooks.py         |   15 -
 src/py/reactpy/tests/tooling/loop.py          |   91 -
 126 files changed, 22442 deletions(-)
 rename src/{py/reactpy/reactpy/_console => }/__init__.py (100%)
 delete mode 100644 src/js/.eslintrc.json
 delete mode 100644 src/js/.gitignore
 delete mode 100644 src/js/README.md
 delete mode 100644 src/js/app/.eslintrc.json
 delete mode 100644 src/js/app/index.html
 delete mode 100644 src/js/app/package-lock.json
 delete mode 100644 src/js/app/package.json
 delete mode 100644 src/js/app/public/assets/reactpy-logo.ico
 delete mode 100644 src/js/app/src/index.ts
 delete mode 100644 src/js/app/tsconfig.json
 delete mode 100644 src/js/app/vite.config.js
 delete mode 100644 src/js/package-lock.json
 delete mode 100644 src/js/package.json
 delete mode 100644 src/js/packages/@reactpy/client/.gitignore
 delete mode 100644 src/js/packages/@reactpy/client/README.md
 delete mode 100644 src/js/packages/@reactpy/client/package.json
 delete mode 100644 src/js/packages/@reactpy/client/src/components.tsx
 delete mode 100644 src/js/packages/@reactpy/client/src/index.ts
 delete mode 100644 src/js/packages/@reactpy/client/src/logger.ts
 delete mode 100644 src/js/packages/@reactpy/client/src/messages.ts
 delete mode 100644 src/js/packages/@reactpy/client/src/mount.tsx
 delete mode 100644 src/js/packages/@reactpy/client/src/reactpy-client.ts
 delete mode 100644 src/js/packages/@reactpy/client/src/reactpy-vdom.tsx
 delete mode 100644 src/js/packages/@reactpy/client/tsconfig.json
 delete mode 100644 src/js/packages/event-to-object/package.json
 delete mode 100644 src/js/packages/event-to-object/src/events.ts
 delete mode 100644 src/js/packages/event-to-object/src/index.ts
 delete mode 100644 src/js/packages/event-to-object/tests/event-to-object.test.ts
 delete mode 100644 src/js/packages/event-to-object/tests/tooling/check.ts
 delete mode 100644 src/js/packages/event-to-object/tests/tooling/mock.ts
 delete mode 100644 src/js/packages/event-to-object/tests/tooling/setup.js
 delete mode 100644 src/js/packages/event-to-object/tsconfig.json
 delete mode 100644 src/js/packages/event-to-object/tsconfig.tests.json
 delete mode 100644 src/js/tsconfig.package.json
 delete mode 100644 src/py/reactpy/.gitignore
 delete mode 100644 src/py/reactpy/MANIFEST.in
 delete mode 100644 src/py/reactpy/README.md
 delete mode 100644 src/py/reactpy/pyproject.toml
 delete mode 100644 src/py/reactpy/reactpy/__init__.py
 delete mode 100644 src/py/reactpy/reactpy/__main__.py
 delete mode 100644 src/py/reactpy/reactpy/_console/ast_utils.py
 delete mode 100644 src/py/reactpy/reactpy/_console/rewrite_camel_case_props.py
 delete mode 100644 src/py/reactpy/reactpy/_console/rewrite_keys.py
 delete mode 100644 src/py/reactpy/reactpy/_option.py
 delete mode 100644 src/py/reactpy/reactpy/_warnings.py
 delete mode 100644 src/py/reactpy/reactpy/backend/__init__.py
 delete mode 100644 src/py/reactpy/reactpy/backend/_common.py
 delete mode 100644 src/py/reactpy/reactpy/backend/default.py
 delete mode 100644 src/py/reactpy/reactpy/backend/fastapi.py
 delete mode 100644 src/py/reactpy/reactpy/backend/flask.py
 delete mode 100644 src/py/reactpy/reactpy/backend/hooks.py
 delete mode 100644 src/py/reactpy/reactpy/backend/sanic.py
 delete mode 100644 src/py/reactpy/reactpy/backend/starlette.py
 delete mode 100644 src/py/reactpy/reactpy/backend/tornado.py
 delete mode 100644 src/py/reactpy/reactpy/backend/types.py
 delete mode 100644 src/py/reactpy/reactpy/backend/utils.py
 delete mode 100644 src/py/reactpy/reactpy/config.py
 delete mode 100644 src/py/reactpy/reactpy/core/__init__.py
 delete mode 100644 src/py/reactpy/reactpy/core/_f_back.py
 delete mode 100644 src/py/reactpy/reactpy/core/_thread_local.py
 delete mode 100644 src/py/reactpy/reactpy/core/component.py
 delete mode 100644 src/py/reactpy/reactpy/core/events.py
 delete mode 100644 src/py/reactpy/reactpy/core/hooks.py
 delete mode 100644 src/py/reactpy/reactpy/core/layout.py
 delete mode 100644 src/py/reactpy/reactpy/core/serve.py
 delete mode 100644 src/py/reactpy/reactpy/core/types.py
 delete mode 100644 src/py/reactpy/reactpy/core/vdom.py
 delete mode 100644 src/py/reactpy/reactpy/future.py
 delete mode 100644 src/py/reactpy/reactpy/html.py
 delete mode 100644 src/py/reactpy/reactpy/logging.py
 delete mode 100644 src/py/reactpy/reactpy/py.typed
 delete mode 100644 src/py/reactpy/reactpy/sample.py
 delete mode 100644 src/py/reactpy/reactpy/svg.py
 delete mode 100644 src/py/reactpy/reactpy/testing/__init__.py
 delete mode 100644 src/py/reactpy/reactpy/testing/backend.py
 delete mode 100644 src/py/reactpy/reactpy/testing/common.py
 delete mode 100644 src/py/reactpy/reactpy/testing/display.py
 delete mode 100644 src/py/reactpy/reactpy/testing/logs.py
 delete mode 100644 src/py/reactpy/reactpy/types.py
 delete mode 100644 src/py/reactpy/reactpy/utils.py
 delete mode 100644 src/py/reactpy/reactpy/web/__init__.py
 delete mode 100644 src/py/reactpy/reactpy/web/module.py
 delete mode 100644 src/py/reactpy/reactpy/web/templates/react.js
 delete mode 100644 src/py/reactpy/reactpy/web/utils.py
 delete mode 100644 src/py/reactpy/reactpy/widgets.py
 delete mode 100644 src/py/reactpy/tests/__init__.py
 delete mode 100644 src/py/reactpy/tests/conftest.py
 delete mode 100644 src/py/reactpy/tests/test__console/__init__.py
 delete mode 100644 src/py/reactpy/tests/test__console/test_rewrite_camel_case_props.py
 delete mode 100644 src/py/reactpy/tests/test__console/test_rewrite_keys.py
 delete mode 100644 src/py/reactpy/tests/test__option.py
 delete mode 100644 src/py/reactpy/tests/test_backend/__init__.py
 delete mode 100644 src/py/reactpy/tests/test_backend/test__common.py
 delete mode 100644 src/py/reactpy/tests/test_backend/test_all.py
 delete mode 100644 src/py/reactpy/tests/test_backend/test_utils.py
 delete mode 100644 src/py/reactpy/tests/test_client.py
 delete mode 100644 src/py/reactpy/tests/test_config.py
 delete mode 100644 src/py/reactpy/tests/test_core/__init__.py
 delete mode 100644 src/py/reactpy/tests/test_core/test_component.py
 delete mode 100644 src/py/reactpy/tests/test_core/test_events.py
 delete mode 100644 src/py/reactpy/tests/test_core/test_hooks.py
 delete mode 100644 src/py/reactpy/tests/test_core/test_layout.py
 delete mode 100644 src/py/reactpy/tests/test_core/test_serve.py
 delete mode 100644 src/py/reactpy/tests/test_core/test_vdom.py
 delete mode 100644 src/py/reactpy/tests/test_html.py
 delete mode 100644 src/py/reactpy/tests/test_sample.py
 delete mode 100644 src/py/reactpy/tests/test_testing.py
 delete mode 100644 src/py/reactpy/tests/test_utils.py
 delete mode 100644 src/py/reactpy/tests/test_web/__init__.py
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/component-can-have-child.js
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/export-resolution/index.js
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/export-resolution/one.js
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/export-resolution/two.js
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/exports-syntax.js
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/exports-two-components.js
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js
 delete mode 100644 src/py/reactpy/tests/test_web/js_fixtures/simple-button.js
 delete mode 100644 src/py/reactpy/tests/test_web/test_module.py
 delete mode 100644 src/py/reactpy/tests/test_web/test_utils.py
 delete mode 100644 src/py/reactpy/tests/test_widgets.py
 delete mode 100644 src/py/reactpy/tests/tooling/__init__.py
 delete mode 100644 src/py/reactpy/tests/tooling/asserts.py
 delete mode 100644 src/py/reactpy/tests/tooling/common.py
 delete mode 100644 src/py/reactpy/tests/tooling/hooks.py
 delete mode 100644 src/py/reactpy/tests/tooling/loop.py

diff --git a/src/py/reactpy/reactpy/_console/__init__.py b/src/__init__.py
similarity index 100%
rename from src/py/reactpy/reactpy/_console/__init__.py
rename to src/__init__.py
diff --git a/src/js/.eslintrc.json b/src/js/.eslintrc.json
deleted file mode 100644
index 8536da62b..000000000
--- a/src/js/.eslintrc.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "env": {
-    "browser": true,
-    "node": true,
-    "es2021": true
-  },
-  "extends": [
-    "eslint:recommended",
-    "plugin:react/recommended",
-    "plugin:@typescript-eslint/recommended"
-  ],
-  "overrides": [],
-  "parser": "@typescript-eslint/parser",
-  "parserOptions": {
-    "ecmaVersion": "latest",
-    "sourceType": "module"
-  },
-  "plugins": ["react", "@typescript-eslint"],
-  "rules": {
-    "@typescript-eslint/ban-ts-comment": "off",
-    "@typescript-eslint/no-explicit-any": "off",
-    "@typescript-eslint/no-non-null-assertion": "off",
-    "@typescript-eslint/no-empty-function": "off",
-    "react/prop-types": "off"
-  },
-  "settings": {
-    "react": {
-      "version": "detect"
-    }
-  }
-}
diff --git a/src/js/.gitignore b/src/js/.gitignore
deleted file mode 100644
index fedd7ea26..000000000
--- a/src/js/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-tsconfig.tsbuildinfo
-packages/**/package-lock.json
-dist
diff --git a/src/js/README.md b/src/js/README.md
deleted file mode 100644
index e99df49c0..000000000
--- a/src/js/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# ReactPy Client
-
-An ES6 Javascript client for ReactPy
diff --git a/src/js/app/.eslintrc.json b/src/js/app/.eslintrc.json
deleted file mode 100644
index 442025c3d..000000000
--- a/src/js/app/.eslintrc.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "env": {
-    "browser": true,
-    "es2021": true
-  },
-  "extends": [
-    "eslint:recommended",
-    "plugin:react/recommended",
-    "plugin:@typescript-eslint/recommended"
-  ],
-  "overrides": [],
-  "parser": "@typescript-eslint/parser",
-  "parserOptions": {
-    "ecmaVersion": "latest",
-    "sourceType": "module"
-  },
-  "plugins": ["react", "@typescript-eslint"],
-  "rules": {}
-}
diff --git a/src/js/app/index.html b/src/js/app/index.html
deleted file mode 100644
index e94280368..000000000
--- a/src/js/app/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8" />
-    <script type="module">
-      import { app } from "./src/index";
-      app(document.getElementById("app"));
-    </script>
-    <!-- we replace this with user-provided head elements -->
-    {__head__}
-  </head>
-  <body>
-    <div id="app"></div>
-  </body>
-</html>
diff --git a/src/js/app/package-lock.json b/src/js/app/package-lock.json
deleted file mode 100644
index 9794c53d6..000000000
--- a/src/js/app/package-lock.json
+++ /dev/null
@@ -1,1189 +0,0 @@
-{
-  "name": "ui",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "license": "MIT",
-      "dependencies": {
-        "@reactpy/client": "^0.2.0",
-        "preact": "^10.7.0"
-      },
-      "devDependencies": {
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "typescript": "^4.9.5",
-        "vite": "^3.2.7"
-      }
-    },
-    "node_modules/@esbuild/android-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
-      "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-loong64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
-      "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
-      "cpu": [
-        "loong64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@reactpy/client": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/@reactpy/client/-/client-0.2.1.tgz",
-      "integrity": "sha512-9sgGH+pJ2BpLT+QSVe7FQLS2VQ9acHgPlO8X3qiTumGw43O0X82sm8pzya8H8dAew463SeGza/pZc0mpUBHmqA==",
-      "dependencies": {
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2"
-      },
-      "peerDependencies": {
-        "react": ">=16 <18",
-        "react-dom": ">=16 <18"
-      }
-    },
-    "node_modules/@types/prop-types": {
-      "version": "15.7.5",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
-      "dev": true
-    },
-    "node_modules/@types/react": {
-      "version": "17.0.57",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.57.tgz",
-      "integrity": "sha512-e4msYpu5QDxzNrXDHunU/VPyv2M1XemGG/p7kfCjUiPtlLDCWLGQfgAMng6YyisWYxZ09mYdQlmMnyS0NfZdEg==",
-      "dev": true,
-      "dependencies": {
-        "@types/prop-types": "*",
-        "@types/scheduler": "*",
-        "csstype": "^3.0.2"
-      }
-    },
-    "node_modules/@types/react-dom": {
-      "version": "17.0.19",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz",
-      "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/react": "^17"
-      }
-    },
-    "node_modules/@types/scheduler": {
-      "version": "0.16.3",
-      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
-      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==",
-      "dev": true
-    },
-    "node_modules/csstype": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
-      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
-      "dev": true
-    },
-    "node_modules/esbuild": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
-      "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
-      "dev": true,
-      "hasInstallScript": true,
-      "bin": {
-        "esbuild": "bin/esbuild"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "optionalDependencies": {
-        "@esbuild/android-arm": "0.15.18",
-        "@esbuild/linux-loong64": "0.15.18",
-        "esbuild-android-64": "0.15.18",
-        "esbuild-android-arm64": "0.15.18",
-        "esbuild-darwin-64": "0.15.18",
-        "esbuild-darwin-arm64": "0.15.18",
-        "esbuild-freebsd-64": "0.15.18",
-        "esbuild-freebsd-arm64": "0.15.18",
-        "esbuild-linux-32": "0.15.18",
-        "esbuild-linux-64": "0.15.18",
-        "esbuild-linux-arm": "0.15.18",
-        "esbuild-linux-arm64": "0.15.18",
-        "esbuild-linux-mips64le": "0.15.18",
-        "esbuild-linux-ppc64le": "0.15.18",
-        "esbuild-linux-riscv64": "0.15.18",
-        "esbuild-linux-s390x": "0.15.18",
-        "esbuild-netbsd-64": "0.15.18",
-        "esbuild-openbsd-64": "0.15.18",
-        "esbuild-sunos-64": "0.15.18",
-        "esbuild-windows-32": "0.15.18",
-        "esbuild-windows-64": "0.15.18",
-        "esbuild-windows-arm64": "0.15.18"
-      }
-    },
-    "node_modules/esbuild-android-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
-      "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-android-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
-      "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-darwin-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
-      "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-darwin-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
-      "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-freebsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
-      "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-freebsd-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
-      "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
-      "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
-      "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
-      "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
-      "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-mips64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
-      "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
-      "cpu": [
-        "mips64el"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-ppc64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
-      "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-riscv64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
-      "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-s390x": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
-      "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
-      "cpu": [
-        "s390x"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-netbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
-      "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "netbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-openbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
-      "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "openbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-sunos-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
-      "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "sunos"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-windows-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
-      "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-windows-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
-      "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-windows-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
-      "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/event-to-object": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/event-to-object/-/event-to-object-0.1.2.tgz",
-      "integrity": "sha512-+fUmp1XOCZiYomwe5Zxp4IlchuZZfdVdjFUk5MbgRT4M+V2TEWKc0jJwKLCX/nxlJ6xM5VUb/ylzERh7YDCRrg==",
-      "dependencies": {
-        "json-pointer": "^0.6.2"
-      }
-    },
-    "node_modules/foreach": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-      "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/is-core-module": {
-      "version": "2.12.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz",
-      "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==",
-      "dev": true,
-      "dependencies": {
-        "has": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "peer": true
-    },
-    "node_modules/json-pointer": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz",
-      "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==",
-      "dependencies": {
-        "foreach": "^2.0.4"
-      }
-    },
-    "node_modules/loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "peer": true,
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/nanoid": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
-      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "bin": {
-        "nanoid": "bin/nanoid.cjs"
-      },
-      "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "peer": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "node_modules/picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
-    },
-    "node_modules/postcss": {
-      "version": "8.4.21",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
-      "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/postcss"
-        }
-      ],
-      "dependencies": {
-        "nanoid": "^3.3.4",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      }
-    },
-    "node_modules/preact": {
-      "version": "10.13.2",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-10.13.2.tgz",
-      "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/preact"
-      }
-    },
-    "node_modules/react": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
-      "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
-      "peer": true,
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-dom": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
-      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
-      "peer": true,
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1",
-        "scheduler": "^0.20.2"
-      },
-      "peerDependencies": {
-        "react": "17.0.2"
-      }
-    },
-    "node_modules/resolve": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
-      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
-      "dev": true,
-      "dependencies": {
-        "is-core-module": "^2.11.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "2.79.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
-      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
-      "dev": true,
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/scheduler": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
-      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
-      "peer": true,
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "node_modules/source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/typescript": {
-      "version": "4.9.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/vite": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
-      "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
-      "dev": true,
-      "dependencies": {
-        "esbuild": "^0.15.9",
-        "postcss": "^8.4.18",
-        "resolve": "^1.22.1",
-        "rollup": "^2.79.1"
-      },
-      "bin": {
-        "vite": "bin/vite.js"
-      },
-      "engines": {
-        "node": "^14.18.0 || >=16.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      },
-      "peerDependencies": {
-        "@types/node": ">= 14",
-        "less": "*",
-        "sass": "*",
-        "stylus": "*",
-        "sugarss": "*",
-        "terser": "^5.4.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/node": {
-          "optional": true
-        },
-        "less": {
-          "optional": true
-        },
-        "sass": {
-          "optional": true
-        },
-        "stylus": {
-          "optional": true
-        },
-        "sugarss": {
-          "optional": true
-        },
-        "terser": {
-          "optional": true
-        }
-      }
-    }
-  },
-  "dependencies": {
-    "@esbuild/android-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
-      "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-loong64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
-      "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@reactpy/client": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/@reactpy/client/-/client-0.2.1.tgz",
-      "integrity": "sha512-9sgGH+pJ2BpLT+QSVe7FQLS2VQ9acHgPlO8X3qiTumGw43O0X82sm8pzya8H8dAew463SeGza/pZc0mpUBHmqA==",
-      "requires": {
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2"
-      }
-    },
-    "@types/prop-types": {
-      "version": "15.7.5",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
-      "dev": true
-    },
-    "@types/react": {
-      "version": "17.0.57",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.57.tgz",
-      "integrity": "sha512-e4msYpu5QDxzNrXDHunU/VPyv2M1XemGG/p7kfCjUiPtlLDCWLGQfgAMng6YyisWYxZ09mYdQlmMnyS0NfZdEg==",
-      "dev": true,
-      "requires": {
-        "@types/prop-types": "*",
-        "@types/scheduler": "*",
-        "csstype": "^3.0.2"
-      }
-    },
-    "@types/react-dom": {
-      "version": "17.0.19",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz",
-      "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==",
-      "dev": true,
-      "requires": {
-        "@types/react": "^17"
-      }
-    },
-    "@types/scheduler": {
-      "version": "0.16.3",
-      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
-      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==",
-      "dev": true
-    },
-    "csstype": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
-      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
-      "dev": true
-    },
-    "esbuild": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
-      "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
-      "dev": true,
-      "requires": {
-        "@esbuild/android-arm": "0.15.18",
-        "@esbuild/linux-loong64": "0.15.18",
-        "esbuild-android-64": "0.15.18",
-        "esbuild-android-arm64": "0.15.18",
-        "esbuild-darwin-64": "0.15.18",
-        "esbuild-darwin-arm64": "0.15.18",
-        "esbuild-freebsd-64": "0.15.18",
-        "esbuild-freebsd-arm64": "0.15.18",
-        "esbuild-linux-32": "0.15.18",
-        "esbuild-linux-64": "0.15.18",
-        "esbuild-linux-arm": "0.15.18",
-        "esbuild-linux-arm64": "0.15.18",
-        "esbuild-linux-mips64le": "0.15.18",
-        "esbuild-linux-ppc64le": "0.15.18",
-        "esbuild-linux-riscv64": "0.15.18",
-        "esbuild-linux-s390x": "0.15.18",
-        "esbuild-netbsd-64": "0.15.18",
-        "esbuild-openbsd-64": "0.15.18",
-        "esbuild-sunos-64": "0.15.18",
-        "esbuild-windows-32": "0.15.18",
-        "esbuild-windows-64": "0.15.18",
-        "esbuild-windows-arm64": "0.15.18"
-      }
-    },
-    "esbuild-android-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
-      "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-android-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
-      "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-darwin-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
-      "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-darwin-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
-      "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-freebsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
-      "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-freebsd-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
-      "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
-      "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
-      "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
-      "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
-      "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-mips64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
-      "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-ppc64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
-      "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-riscv64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
-      "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-s390x": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
-      "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-netbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
-      "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-openbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
-      "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-sunos-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
-      "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
-      "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
-      "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
-      "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
-      "dev": true,
-      "optional": true
-    },
-    "event-to-object": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/event-to-object/-/event-to-object-0.1.2.tgz",
-      "integrity": "sha512-+fUmp1XOCZiYomwe5Zxp4IlchuZZfdVdjFUk5MbgRT4M+V2TEWKc0jJwKLCX/nxlJ6xM5VUb/ylzERh7YDCRrg==",
-      "requires": {
-        "json-pointer": "^0.6.2"
-      }
-    },
-    "foreach": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-      "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "optional": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "is-core-module": {
-      "version": "2.12.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz",
-      "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "peer": true
-    },
-    "json-pointer": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz",
-      "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==",
-      "requires": {
-        "foreach": "^2.0.4"
-      }
-    },
-    "loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "peer": true,
-      "requires": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "nanoid": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
-      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "peer": true
-    },
-    "path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
-    },
-    "postcss": {
-      "version": "8.4.21",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
-      "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
-      "dev": true,
-      "requires": {
-        "nanoid": "^3.3.4",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      }
-    },
-    "preact": {
-      "version": "10.13.2",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-10.13.2.tgz",
-      "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw=="
-    },
-    "react": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
-      "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
-      "peer": true,
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "react-dom": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
-      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
-      "peer": true,
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1",
-        "scheduler": "^0.20.2"
-      }
-    },
-    "resolve": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
-      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
-      "dev": true,
-      "requires": {
-        "is-core-module": "^2.11.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      }
-    },
-    "rollup": {
-      "version": "2.79.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
-      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
-      "dev": true,
-      "requires": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "scheduler": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
-      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
-      "peer": true,
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "dev": true
-    },
-    "supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true
-    },
-    "typescript": {
-      "version": "4.9.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "dev": true
-    },
-    "vite": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
-      "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
-      "dev": true,
-      "requires": {
-        "esbuild": "^0.15.9",
-        "fsevents": "~2.3.2",
-        "postcss": "^8.4.18",
-        "resolve": "^1.22.1",
-        "rollup": "^2.79.1"
-      }
-    }
-  }
-}
diff --git a/src/js/app/package.json b/src/js/app/package.json
deleted file mode 100644
index 40ce94739..000000000
--- a/src/js/app/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "author": "Ryan Morshead",
-  "license": "MIT",
-  "main": "src/dist/index.js",
-  "types": "src/dist/index.d.ts",
-  "description": "A client application for ReactPy implemented in React",
-  "dependencies": {
-    "@reactpy/client": "^0.2.0",
-    "preact": "^10.7.0"
-  },
-  "devDependencies": {
-    "@types/react": "^17.0",
-    "@types/react-dom": "^17.0",
-    "typescript": "^4.9.5",
-    "vite": "^3.2.7"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/reactive-python/reactpy"
-  },
-  "scripts": {
-    "build": "vite build",
-    "format": "prettier --write . && eslint --fix .",
-    "test": "npm run check:tests",
-    "check:tests": "echo 'no tests'",
-    "check:types": "tsc --noEmit"
-  }
-}
diff --git a/src/js/app/public/assets/reactpy-logo.ico b/src/js/app/public/assets/reactpy-logo.ico
deleted file mode 100644
index 62be5f5ba7e159e3977d1ae42d4bea1734854c1a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14916
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
C+JImH

diff --git a/src/js/app/src/index.ts b/src/js/app/src/index.ts
deleted file mode 100644
index 1f47853aa..000000000
--- a/src/js/app/src/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { mount, SimpleReactPyClient } from "@reactpy/client";
-
-export function app(element: HTMLElement) {
-  const client = new SimpleReactPyClient({
-    serverLocation: {
-      url: document.location.origin,
-      route: document.location.pathname,
-      query: document.location.search,
-    },
-  });
-  mount(element, client);
-}
diff --git a/src/js/app/tsconfig.json b/src/js/app/tsconfig.json
deleted file mode 100644
index c736ab13d..000000000
--- a/src/js/app/tsconfig.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "extends": "../tsconfig.package.json",
-  "compilerOptions": {
-    "outDir": "dist",
-    "rootDir": "src",
-    "composite": true
-  },
-  "include": ["src"],
-  "references": [
-    {
-      "path": "../packages/@reactpy/client"
-    }
-  ]
-}
diff --git a/src/js/app/vite.config.js b/src/js/app/vite.config.js
deleted file mode 100644
index c97fb6dac..000000000
--- a/src/js/app/vite.config.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { defineConfig } from "vite";
-
-export default defineConfig({
-  build: { emptyOutDir: true },
-  resolve: {
-    alias: {
-      react: "preact/compat",
-      "react-dom": "preact/compat",
-    },
-  },
-  base: "/_reactpy/",
-});
diff --git a/src/js/package-lock.json b/src/js/package-lock.json
deleted file mode 100644
index 2edfdd260..000000000
--- a/src/js/package-lock.json
+++ /dev/null
@@ -1,6003 +0,0 @@
-{
-  "name": "js",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "license": "MIT",
-      "workspaces": [
-        "packages/event-to-object",
-        "packages/@reactpy/client",
-        "app"
-      ],
-      "devDependencies": {
-        "@typescript-eslint/eslint-plugin": "^5.58.0",
-        "@typescript-eslint/parser": "^5.58.0",
-        "eslint": "^8.38.0",
-        "eslint-plugin-react": "^7.32.2",
-        "prettier": "^3.0.0-alpha.6"
-      }
-    },
-    "app": {
-      "license": "MIT",
-      "dependencies": {
-        "@reactpy/client": "^0.2.0",
-        "preact": "^10.7.0"
-      },
-      "devDependencies": {
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "typescript": "^4.9.5",
-        "vite": "^3.1.8"
-      }
-    },
-    "app/node_modules/@reactpy/client": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/@reactpy/client/-/client-0.2.1.tgz",
-      "integrity": "sha512-9sgGH+pJ2BpLT+QSVe7FQLS2VQ9acHgPlO8X3qiTumGw43O0X82sm8pzya8H8dAew463SeGza/pZc0mpUBHmqA==",
-      "dependencies": {
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2"
-      },
-      "peerDependencies": {
-        "react": ">=16 <18",
-        "react-dom": ">=16 <18"
-      }
-    },
-    "app/node_modules/typescript": {
-      "version": "4.9.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "apps/ui": {
-      "extraneous": true,
-      "license": "MIT",
-      "dependencies": {
-        "@reactpy/client": "^0.2.0",
-        "preact": "^10.7.0"
-      },
-      "devDependencies": {
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "prettier": "^3.0.0-alpha.6",
-        "typescript": "^4.9.5",
-        "vite": "^3.1.8"
-      }
-    },
-    "node_modules/@esbuild/android-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
-      "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/linux-loong64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
-      "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
-      "cpu": [
-        "loong64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@eslint-community/eslint-utils": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
-      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
-      "dev": true,
-      "dependencies": {
-        "eslint-visitor-keys": "^3.3.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
-      }
-    },
-    "node_modules/@eslint-community/regexpp": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
-      "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
-      "dev": true,
-      "engines": {
-        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
-      }
-    },
-    "node_modules/@eslint/eslintrc": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
-      "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.5.1",
-        "globals": "^13.19.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/@eslint/js": {
-      "version": "8.38.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
-      "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
-      "dev": true,
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
-    "node_modules/@humanwhocodes/config-array": {
-      "version": "0.11.8",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
-      "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
-      "dev": true,
-      "dependencies": {
-        "@humanwhocodes/object-schema": "^1.2.1",
-        "debug": "^4.1.1",
-        "minimatch": "^3.0.5"
-      },
-      "engines": {
-        "node": ">=10.10.0"
-      }
-    },
-    "node_modules/@humanwhocodes/module-importer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12.22"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/nzakas"
-      }
-    },
-    "node_modules/@humanwhocodes/object-schema": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
-      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
-      "dev": true
-    },
-    "node_modules/@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "dev": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@reactpy/client": {
-      "resolved": "packages/@reactpy/client",
-      "link": true
-    },
-    "node_modules/@types/json-pointer": {
-      "version": "1.0.31",
-      "resolved": "https://registry.npmjs.org/@types/json-pointer/-/json-pointer-1.0.31.tgz",
-      "integrity": "sha512-hTPul7Um6LqsHXHQpdkXTU7Oysjsf+9k4Yfmg6JhSKG/jj9QuQGyMUdj6trPH6WHiIdxw7nYSROgOxeFmCVK2w==",
-      "dev": true
-    },
-    "node_modules/@types/json-schema": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-      "dev": true
-    },
-    "node_modules/@types/prop-types": {
-      "version": "15.7.5",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
-      "dev": true
-    },
-    "node_modules/@types/react": {
-      "version": "17.0.53",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz",
-      "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==",
-      "dev": true,
-      "dependencies": {
-        "@types/prop-types": "*",
-        "@types/scheduler": "*",
-        "csstype": "^3.0.2"
-      }
-    },
-    "node_modules/@types/react-dom": {
-      "version": "17.0.19",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz",
-      "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/react": "^17"
-      }
-    },
-    "node_modules/@types/scheduler": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
-      "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
-      "dev": true
-    },
-    "node_modules/@types/semver": {
-      "version": "7.3.13",
-      "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
-      "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
-      "dev": true
-    },
-    "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz",
-      "integrity": "sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/regexpp": "^4.4.0",
-        "@typescript-eslint/scope-manager": "5.58.0",
-        "@typescript-eslint/type-utils": "5.58.0",
-        "@typescript-eslint/utils": "5.58.0",
-        "debug": "^4.3.4",
-        "grapheme-splitter": "^1.0.4",
-        "ignore": "^5.2.0",
-        "natural-compare-lite": "^1.4.0",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "@typescript-eslint/parser": "^5.0.0",
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/parser": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.58.0.tgz",
-      "integrity": "sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/scope-manager": "5.58.0",
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/typescript-estree": "5.58.0",
-        "debug": "^4.3.4"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz",
-      "integrity": "sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/visitor-keys": "5.58.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz",
-      "integrity": "sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/typescript-estree": "5.58.0",
-        "@typescript-eslint/utils": "5.58.0",
-        "debug": "^4.3.4",
-        "tsutils": "^3.21.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "*"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/types": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.58.0.tgz",
-      "integrity": "sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==",
-      "dev": true,
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz",
-      "integrity": "sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/visitor-keys": "5.58.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/utils": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.58.0.tgz",
-      "integrity": "sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@types/json-schema": "^7.0.9",
-        "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.58.0",
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/typescript-estree": "5.58.0",
-        "eslint-scope": "^5.1.1",
-        "semver": "^7.3.7"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      }
-    },
-    "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-      "dev": true,
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz",
-      "integrity": "sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "5.58.0",
-        "eslint-visitor-keys": "^3.3.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/acorn": {
-      "version": "8.8.2",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
-      "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/acorn-jsx": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "dev": true,
-      "peerDependencies": {
-        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/app": {
-      "resolved": "app",
-      "link": true
-    },
-    "node_modules/argparse": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
-    },
-    "node_modules/array-buffer-byte-length": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
-      "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "is-array-buffer": "^3.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/array-includes": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
-      "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "is-string": "^1.0.7"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/array.prototype.flatmap": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
-      "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/array.prototype.tosorted": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz",
-      "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0",
-        "get-intrinsic": "^1.1.3"
-      }
-    },
-    "node_modules/available-typed-arrays": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
-      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
-      "dependencies": {
-        "fill-range": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
-    },
-    "node_modules/cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/css.escape": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
-      "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
-      "dev": true
-    },
-    "node_modules/csstype": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
-      "dev": true
-    },
-    "node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/deep-is": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
-      "dev": true
-    },
-    "node_modules/define-properties": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
-      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
-      "dev": true,
-      "dependencies": {
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/dequal": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
-      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/diff": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
-      "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.3.1"
-      }
-    },
-    "node_modules/dir-glob": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-      "dev": true,
-      "dependencies": {
-        "path-type": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/doctrine": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-      "dev": true,
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/es-abstract": {
-      "version": "1.21.2",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
-      "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
-      "dev": true,
-      "dependencies": {
-        "array-buffer-byte-length": "^1.0.0",
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "es-set-tostringtag": "^2.0.1",
-        "es-to-primitive": "^1.2.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.2.0",
-        "get-symbol-description": "^1.0.0",
-        "globalthis": "^1.0.3",
-        "gopd": "^1.0.1",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.5",
-        "is-array-buffer": "^3.0.2",
-        "is-callable": "^1.2.7",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-typed-array": "^1.1.10",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.3",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "safe-regex-test": "^1.0.0",
-        "string.prototype.trim": "^1.2.7",
-        "string.prototype.trimend": "^1.0.6",
-        "string.prototype.trimstart": "^1.0.6",
-        "typed-array-length": "^1.0.4",
-        "unbox-primitive": "^1.0.2",
-        "which-typed-array": "^1.1.9"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/es-set-tostringtag": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
-      "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.3",
-        "has": "^1.0.3",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-shim-unscopables": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
-      "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
-      "dev": true,
-      "dependencies": {
-        "has": "^1.0.3"
-      }
-    },
-    "node_modules/es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
-      "dependencies": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/esbuild": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
-      "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
-      "dev": true,
-      "hasInstallScript": true,
-      "bin": {
-        "esbuild": "bin/esbuild"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "optionalDependencies": {
-        "@esbuild/android-arm": "0.15.18",
-        "@esbuild/linux-loong64": "0.15.18",
-        "esbuild-android-64": "0.15.18",
-        "esbuild-android-arm64": "0.15.18",
-        "esbuild-darwin-64": "0.15.18",
-        "esbuild-darwin-arm64": "0.15.18",
-        "esbuild-freebsd-64": "0.15.18",
-        "esbuild-freebsd-arm64": "0.15.18",
-        "esbuild-linux-32": "0.15.18",
-        "esbuild-linux-64": "0.15.18",
-        "esbuild-linux-arm": "0.15.18",
-        "esbuild-linux-arm64": "0.15.18",
-        "esbuild-linux-mips64le": "0.15.18",
-        "esbuild-linux-ppc64le": "0.15.18",
-        "esbuild-linux-riscv64": "0.15.18",
-        "esbuild-linux-s390x": "0.15.18",
-        "esbuild-netbsd-64": "0.15.18",
-        "esbuild-openbsd-64": "0.15.18",
-        "esbuild-sunos-64": "0.15.18",
-        "esbuild-windows-32": "0.15.18",
-        "esbuild-windows-64": "0.15.18",
-        "esbuild-windows-arm64": "0.15.18"
-      }
-    },
-    "node_modules/esbuild-android-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
-      "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-android-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
-      "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-darwin-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
-      "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-darwin-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
-      "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-freebsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
-      "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-freebsd-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
-      "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
-      "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
-      "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
-      "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
-      "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-mips64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
-      "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
-      "cpu": [
-        "mips64el"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-ppc64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
-      "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-riscv64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
-      "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-linux-s390x": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
-      "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
-      "cpu": [
-        "s390x"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-netbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
-      "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "netbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-openbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
-      "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "openbsd"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-sunos-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
-      "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "sunos"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-windows-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
-      "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-windows-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
-      "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/esbuild-windows-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
-      "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/eslint": {
-      "version": "8.38.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
-      "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.4.0",
-        "@eslint/eslintrc": "^2.0.2",
-        "@eslint/js": "8.38.0",
-        "@humanwhocodes/config-array": "^0.11.8",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
-        "ajv": "^6.10.0",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.1.1",
-        "eslint-visitor-keys": "^3.4.0",
-        "espree": "^9.5.1",
-        "esquery": "^1.4.2",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "globals": "^13.19.0",
-        "grapheme-splitter": "^1.0.4",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-sdsl": "^4.1.4",
-        "js-yaml": "^4.1.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.1",
-        "strip-ansi": "^6.0.1",
-        "strip-json-comments": "^3.1.0",
-        "text-table": "^0.2.0"
-      },
-      "bin": {
-        "eslint": "bin/eslint.js"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/eslint-plugin-react": {
-      "version": "7.32.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz",
-      "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==",
-      "dev": true,
-      "dependencies": {
-        "array-includes": "^3.1.6",
-        "array.prototype.flatmap": "^1.3.1",
-        "array.prototype.tosorted": "^1.1.1",
-        "doctrine": "^2.1.0",
-        "estraverse": "^5.3.0",
-        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
-        "minimatch": "^3.1.2",
-        "object.entries": "^1.1.6",
-        "object.fromentries": "^2.0.6",
-        "object.hasown": "^1.1.2",
-        "object.values": "^1.1.6",
-        "prop-types": "^15.8.1",
-        "resolve": "^2.0.0-next.4",
-        "semver": "^6.3.0",
-        "string.prototype.matchall": "^4.0.8"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "peerDependencies": {
-        "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
-      }
-    },
-    "node_modules/eslint-plugin-react/node_modules/doctrine": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-      "dev": true,
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/eslint-plugin-react/node_modules/resolve": {
-      "version": "2.0.0-next.4",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
-      "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
-      "dev": true,
-      "dependencies": {
-        "is-core-module": "^2.9.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/eslint-plugin-react/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/eslint-scope": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
-      "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
-      "dev": true,
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
-    "node_modules/eslint-visitor-keys": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
-      "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
-      "dev": true,
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/espree": {
-      "version": "9.5.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
-      "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
-      "dev": true,
-      "dependencies": {
-        "acorn": "^8.8.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.4.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/esquery": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
-      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
-      "dev": true,
-      "dependencies": {
-        "estraverse": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estraverse": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/event-to-object": {
-      "resolved": "packages/event-to-object",
-      "link": true
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/fast-glob": {
-      "version": "3.2.12",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
-      },
-      "engines": {
-        "node": ">=8.6.0"
-      }
-    },
-    "node_modules/fast-glob/node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
-    },
-    "node_modules/fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
-      "dev": true
-    },
-    "node_modules/fastq": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
-      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
-      "dev": true,
-      "dependencies": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "node_modules/file-entry-cache": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-      "dev": true,
-      "dependencies": {
-        "flat-cache": "^3.0.4"
-      },
-      "engines": {
-        "node": "^10.12.0 || >=12.0.0"
-      }
-    },
-    "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-up": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/flat-cache": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
-      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
-      "dev": true,
-      "dependencies": {
-        "flatted": "^3.1.0",
-        "rimraf": "^3.0.2"
-      },
-      "engines": {
-        "node": "^10.12.0 || >=12.0.0"
-      }
-    },
-    "node_modules/flatted": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
-      "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
-      "dev": true
-    },
-    "node_modules/for-each": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
-      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
-      "dev": true,
-      "dependencies": {
-        "is-callable": "^1.1.3"
-      }
-    },
-    "node_modules/foreach": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-      "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "dev": true
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "node_modules/function.prototype.name": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
-      "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-symbol-description": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "dev": true,
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/glob-parent": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.3"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/globals": {
-      "version": "13.20.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
-      "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
-      "dev": true,
-      "dependencies": {
-        "type-fest": "^0.20.2"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/globalthis": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
-      "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
-      "dev": true,
-      "dependencies": {
-        "define-properties": "^1.1.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/globby": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-      "dev": true,
-      "dependencies": {
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.2.9",
-        "ignore": "^5.2.0",
-        "merge2": "^1.4.1",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/grapheme-splitter": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
-      "dev": true
-    },
-    "node_modules/happy-dom": {
-      "version": "8.9.0",
-      "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz",
-      "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==",
-      "dev": true,
-      "dependencies": {
-        "css.escape": "^1.5.1",
-        "he": "^1.2.0",
-        "iconv-lite": "^0.6.3",
-        "node-fetch": "^2.x.x",
-        "webidl-conversions": "^7.0.0",
-        "whatwg-encoding": "^2.0.0",
-        "whatwg-mimetype": "^3.0.0"
-      }
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/has-bigints": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/has-property-descriptors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
-      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-proto": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
-      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-tostringtag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "dev": true,
-      "dependencies": {
-        "has-symbols": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "dev": true,
-      "bin": {
-        "he": "bin/he"
-      }
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
-      "dev": true,
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ignore": {
-      "version": "5.2.4",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
-      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/import-fresh": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "dev": true,
-      "dependencies": {
-        "parent-module": "^1.0.0",
-        "resolve-from": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.19"
-      }
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "dev": true,
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "node_modules/internal-slot": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
-      "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.2.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/is-array-buffer": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
-      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.2.0",
-        "is-typed-array": "^1.1.10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-bigint": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dev": true,
-      "dependencies": {
-        "has-bigints": "^1.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-boolean-object": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-callable": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
-      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-core-module": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "dev": true,
-      "dependencies": {
-        "has": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dev": true,
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-negative-zero": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/is-number-object": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dev": true,
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-shared-array-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-string": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dev": true,
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
-      "dependencies": {
-        "has-symbols": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-typed-array": {
-      "version": "1.1.10",
-      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
-      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
-      "dev": true,
-      "dependencies": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-weakref": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true
-    },
-    "node_modules/js-sdsl": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
-      "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==",
-      "dev": true,
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/js-sdsl"
-      }
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
-    },
-    "node_modules/js-yaml": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dev": true,
-      "dependencies": {
-        "argparse": "^2.0.1"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/json-pointer": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz",
-      "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==",
-      "dependencies": {
-        "foreach": "^2.0.4"
-      }
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
-    },
-    "node_modules/json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-      "dev": true
-    },
-    "node_modules/jsx-ast-utils": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
-      "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
-      "dev": true,
-      "dependencies": {
-        "array-includes": "^3.1.5",
-        "object.assign": "^4.1.3"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/kleur": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
-      "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/levn": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-      "dev": true,
-      "dependencies": {
-        "prelude-ls": "^1.2.1",
-        "type-check": "~0.4.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
-    },
-    "node_modules/lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "dev": true
-    },
-    "node_modules/loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
-      "dev": true,
-      "dependencies": {
-        "braces": "^3.0.2",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/mri": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
-      "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/nanoid": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
-      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "bin": {
-        "nanoid": "bin/nanoid.cjs"
-      },
-      "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-      }
-    },
-    "node_modules/natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-      "dev": true
-    },
-    "node_modules/natural-compare-lite": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
-      "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
-      "dev": true
-    },
-    "node_modules/node-fetch": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
-      "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
-      "dev": true,
-      "dependencies": {
-        "whatwg-url": "^5.0.0"
-      },
-      "engines": {
-        "node": "4.x || >=6.0.0"
-      },
-      "peerDependencies": {
-        "encoding": "^0.1.0"
-      },
-      "peerDependenciesMeta": {
-        "encoding": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.12.3",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
-      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object.assign": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.entries": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
-      "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object.fromentries": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
-      "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.hasown": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
-      "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
-      "dev": true,
-      "dependencies": {
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.values": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
-      "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dev": true,
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/optionator": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
-      "dev": true,
-      "dependencies": {
-        "deep-is": "^0.1.3",
-        "fast-levenshtein": "^2.0.6",
-        "levn": "^0.4.1",
-        "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0",
-        "word-wrap": "^1.2.3"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-      "dev": true,
-      "dependencies": {
-        "yocto-queue": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/parent-module": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
-      "dependencies": {
-        "callsites": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "node_modules/path-type": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "8.4.24",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz",
-      "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/postcss"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "dependencies": {
-        "nanoid": "^3.3.6",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      }
-    },
-    "node_modules/preact": {
-      "version": "10.15.1",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz",
-      "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/preact"
-      }
-    },
-    "node_modules/prelude-ls": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/prettier": {
-      "version": "3.0.0-alpha.6",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0-alpha.6.tgz",
-      "integrity": "sha512-AdbQSZ6Oo+iy9Ekzmsgno05P1uX2vqPkjOMJqRfP8hTe+m6iDw4Nt7bPFpWZ/HYCU+3f0P5U0o2ghxQwwkLH7A==",
-      "dev": true,
-      "bin": {
-        "prettier": "bin/prettier.cjs"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/prettier/prettier?sponsor=1"
-      }
-    },
-    "node_modules/prop-types": {
-      "version": "15.8.1",
-      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-      "dev": true,
-      "dependencies": {
-        "loose-envify": "^1.4.0",
-        "object-assign": "^4.1.1",
-        "react-is": "^16.13.1"
-      }
-    },
-    "node_modules/punycode": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
-      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/react": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
-      "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
-      "peer": true,
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-dom": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
-      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
-      "peer": true,
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1",
-        "scheduler": "^0.20.2"
-      },
-      "peerDependencies": {
-        "react": "17.0.2"
-      }
-    },
-    "node_modules/react-is": {
-      "version": "16.13.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
-      "dev": true
-    },
-    "node_modules/regexp.prototype.flags": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "functions-have-names": "^1.2.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
-      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
-      "dev": true,
-      "dependencies": {
-        "is-core-module": "^2.11.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve-from": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true,
-      "engines": {
-        "iojs": ">=1.0.0",
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rimraf": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "2.79.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
-      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
-      "dev": true,
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "node_modules/sade": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
-      "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
-      "dev": true,
-      "dependencies": {
-        "mri": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/safe-regex-test": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
-      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.3",
-        "is-regex": "^1.1.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "node_modules/scheduler": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
-      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
-      "peer": true,
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "node_modules/semver": {
-      "version": "7.4.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
-      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/string.prototype.matchall": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
-      "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "regexp.prototype.flags": "^1.4.3",
-        "side-channel": "^1.0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/string.prototype.trim": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
-      "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/string.prototype.trimend": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
-      "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/string.prototype.trimstart": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
-      "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/tr46": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
-      "dev": true
-    },
-    "node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true
-    },
-    "node_modules/tsm": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/tsm/-/tsm-2.3.0.tgz",
-      "integrity": "sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==",
-      "dev": true,
-      "dependencies": {
-        "esbuild": "^0.15.16"
-      },
-      "bin": {
-        "tsm": "bin.js"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/tsutils": {
-      "version": "3.21.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
-      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.8.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "peerDependencies": {
-        "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
-      }
-    },
-    "node_modules/type-check": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-      "dev": true,
-      "dependencies": {
-        "prelude-ls": "^1.2.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/type-fest": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/typed-array-length": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
-      "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "is-typed-array": "^1.1.9"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/typescript": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
-      "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
-      "dev": true,
-      "peer": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=12.20"
-      }
-    },
-    "node_modules/unbox-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/uvu": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
-      "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
-      "dev": true,
-      "dependencies": {
-        "dequal": "^2.0.0",
-        "diff": "^5.0.0",
-        "kleur": "^4.0.3",
-        "sade": "^1.7.3"
-      },
-      "bin": {
-        "uvu": "bin.js"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/vite": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
-      "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
-      "dev": true,
-      "dependencies": {
-        "esbuild": "^0.15.9",
-        "postcss": "^8.4.18",
-        "resolve": "^1.22.1",
-        "rollup": "^2.79.1"
-      },
-      "bin": {
-        "vite": "bin/vite.js"
-      },
-      "engines": {
-        "node": "^14.18.0 || >=16.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      },
-      "peerDependencies": {
-        "@types/node": ">= 14",
-        "less": "*",
-        "sass": "*",
-        "stylus": "*",
-        "sugarss": "*",
-        "terser": "^5.4.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/node": {
-          "optional": true
-        },
-        "less": {
-          "optional": true
-        },
-        "sass": {
-          "optional": true
-        },
-        "stylus": {
-          "optional": true
-        },
-        "sugarss": {
-          "optional": true
-        },
-        "terser": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webidl-conversions": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
-      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/whatwg-encoding": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
-      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
-      "dev": true,
-      "dependencies": {
-        "iconv-lite": "0.6.3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/whatwg-mimetype": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
-      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/whatwg-url": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
-      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-      "dev": true,
-      "dependencies": {
-        "tr46": "~0.0.3",
-        "webidl-conversions": "^3.0.0"
-      }
-    },
-    "node_modules/whatwg-url/node_modules/webidl-conversions": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
-      "dev": true
-    },
-    "node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/which-boxed-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
-      "dependencies": {
-        "is-bigint": "^1.0.1",
-        "is-boolean-object": "^1.1.0",
-        "is-number-object": "^1.0.4",
-        "is-string": "^1.0.5",
-        "is-symbol": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/which-typed-array": {
-      "version": "1.1.9",
-      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
-      "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
-      "dev": true,
-      "dependencies": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0",
-        "is-typed-array": "^1.1.10"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/word-wrap": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true
-    },
-    "node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
-    },
-    "node_modules/yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "packages/@reactpy/client": {
-      "version": "0.3.1",
-      "license": "MIT",
-      "dependencies": {
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2"
-      },
-      "devDependencies": {
-        "@types/json-pointer": "^1.0.31",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "typescript": "^4.9.5"
-      },
-      "peerDependencies": {
-        "react": ">=16 <18",
-        "react-dom": ">=16 <18"
-      }
-    },
-    "packages/@reactpy/client/node_modules/typescript": {
-      "version": "4.9.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "packages/app": {
-      "name": "@reactpy/app",
-      "extraneous": true,
-      "license": "MIT",
-      "dependencies": {
-        "@reactpy/client": "^0.1.0",
-        "preact": "^10.7.0"
-      },
-      "devDependencies": {
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "prettier": "^3.0.0-alpha.6",
-        "typescript": "^4.9.5",
-        "vite": "^3.1.8"
-      }
-    },
-    "packages/client": {
-      "name": "@reactpy/client",
-      "version": "0.2.0",
-      "extraneous": true,
-      "license": "MIT",
-      "dependencies": {
-        "event-to-object": "^0.1.0",
-        "json-pointer": "^0.6.2"
-      },
-      "devDependencies": {
-        "@types/json-pointer": "^1.0.31",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "prettier": "^3.0.0-alpha.6",
-        "typescript": "^4.9.5"
-      },
-      "peerDependencies": {
-        "react": ">=16 <18",
-        "react-dom": ">=16 <18"
-      }
-    },
-    "packages/event-to-object": {
-      "version": "0.1.2",
-      "license": "MIT",
-      "dependencies": {
-        "json-pointer": "^0.6.2"
-      },
-      "devDependencies": {
-        "happy-dom": "^8.9.0",
-        "lodash": "^4.17.21",
-        "tsm": "^2.0.0",
-        "typescript": "^4.9.5",
-        "uvu": "^0.5.1"
-      }
-    },
-    "packages/event-to-object/node_modules/typescript": {
-      "version": "4.9.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "packages/event-to-object/packages/event-to-object": {
-      "extraneous": true
-    },
-    "ui": {
-      "extraneous": true,
-      "license": "MIT",
-      "dependencies": {
-        "@reactpy/client": "^0.2.0",
-        "preact": "^10.7.0"
-      },
-      "devDependencies": {
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "typescript": "^4.9.5",
-        "vite": "^3.1.8"
-      }
-    }
-  },
-  "dependencies": {
-    "@esbuild/android-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
-      "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-loong64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
-      "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@eslint-community/eslint-utils": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
-      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
-      "dev": true,
-      "requires": {
-        "eslint-visitor-keys": "^3.3.0"
-      }
-    },
-    "@eslint-community/regexpp": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
-      "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
-      "dev": true
-    },
-    "@eslint/eslintrc": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
-      "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.5.1",
-        "globals": "^13.19.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
-      }
-    },
-    "@eslint/js": {
-      "version": "8.38.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
-      "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
-      "dev": true
-    },
-    "@humanwhocodes/config-array": {
-      "version": "0.11.8",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
-      "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
-      "dev": true,
-      "requires": {
-        "@humanwhocodes/object-schema": "^1.2.1",
-        "debug": "^4.1.1",
-        "minimatch": "^3.0.5"
-      }
-    },
-    "@humanwhocodes/module-importer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-      "dev": true
-    },
-    "@humanwhocodes/object-schema": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
-      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
-      "dev": true
-    },
-    "@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "dev": true,
-      "requires": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      }
-    },
-    "@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "dev": true
-    },
-    "@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "dev": true,
-      "requires": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      }
-    },
-    "@reactpy/client": {
-      "version": "file:packages/@reactpy/client",
-      "requires": {
-        "@types/json-pointer": "^1.0.31",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "event-to-object": "^0.1.2",
-        "json-pointer": "^0.6.2",
-        "typescript": "^4.9.5"
-      },
-      "dependencies": {
-        "typescript": {
-          "version": "4.9.5",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-          "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-          "dev": true
-        }
-      }
-    },
-    "@types/json-pointer": {
-      "version": "1.0.31",
-      "resolved": "https://registry.npmjs.org/@types/json-pointer/-/json-pointer-1.0.31.tgz",
-      "integrity": "sha512-hTPul7Um6LqsHXHQpdkXTU7Oysjsf+9k4Yfmg6JhSKG/jj9QuQGyMUdj6trPH6WHiIdxw7nYSROgOxeFmCVK2w==",
-      "dev": true
-    },
-    "@types/json-schema": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-      "dev": true
-    },
-    "@types/prop-types": {
-      "version": "15.7.5",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
-      "dev": true
-    },
-    "@types/react": {
-      "version": "17.0.53",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz",
-      "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==",
-      "dev": true,
-      "requires": {
-        "@types/prop-types": "*",
-        "@types/scheduler": "*",
-        "csstype": "^3.0.2"
-      }
-    },
-    "@types/react-dom": {
-      "version": "17.0.19",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz",
-      "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==",
-      "dev": true,
-      "requires": {
-        "@types/react": "^17"
-      }
-    },
-    "@types/scheduler": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
-      "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
-      "dev": true
-    },
-    "@types/semver": {
-      "version": "7.3.13",
-      "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
-      "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
-      "dev": true
-    },
-    "@typescript-eslint/eslint-plugin": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz",
-      "integrity": "sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==",
-      "dev": true,
-      "requires": {
-        "@eslint-community/regexpp": "^4.4.0",
-        "@typescript-eslint/scope-manager": "5.58.0",
-        "@typescript-eslint/type-utils": "5.58.0",
-        "@typescript-eslint/utils": "5.58.0",
-        "debug": "^4.3.4",
-        "grapheme-splitter": "^1.0.4",
-        "ignore": "^5.2.0",
-        "natural-compare-lite": "^1.4.0",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      }
-    },
-    "@typescript-eslint/parser": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.58.0.tgz",
-      "integrity": "sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/scope-manager": "5.58.0",
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/typescript-estree": "5.58.0",
-        "debug": "^4.3.4"
-      }
-    },
-    "@typescript-eslint/scope-manager": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz",
-      "integrity": "sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/visitor-keys": "5.58.0"
-      }
-    },
-    "@typescript-eslint/type-utils": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz",
-      "integrity": "sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/typescript-estree": "5.58.0",
-        "@typescript-eslint/utils": "5.58.0",
-        "debug": "^4.3.4",
-        "tsutils": "^3.21.0"
-      }
-    },
-    "@typescript-eslint/types": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.58.0.tgz",
-      "integrity": "sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==",
-      "dev": true
-    },
-    "@typescript-eslint/typescript-estree": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz",
-      "integrity": "sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/visitor-keys": "5.58.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      }
-    },
-    "@typescript-eslint/utils": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.58.0.tgz",
-      "integrity": "sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==",
-      "dev": true,
-      "requires": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@types/json-schema": "^7.0.9",
-        "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.58.0",
-        "@typescript-eslint/types": "5.58.0",
-        "@typescript-eslint/typescript-estree": "5.58.0",
-        "eslint-scope": "^5.1.1",
-        "semver": "^7.3.7"
-      },
-      "dependencies": {
-        "eslint-scope": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-          "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-          "dev": true,
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^4.1.1"
-          }
-        },
-        "estraverse": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-          "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-          "dev": true
-        }
-      }
-    },
-    "@typescript-eslint/visitor-keys": {
-      "version": "5.58.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz",
-      "integrity": "sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/types": "5.58.0",
-        "eslint-visitor-keys": "^3.3.0"
-      }
-    },
-    "acorn": {
-      "version": "8.8.2",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
-      "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
-      "dev": true
-    },
-    "acorn-jsx": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "dev": true,
-      "requires": {}
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "requires": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^2.0.1"
-      }
-    },
-    "app": {
-      "version": "file:app",
-      "requires": {
-        "@reactpy/client": "^0.2.0",
-        "@types/react": "^17.0",
-        "@types/react-dom": "^17.0",
-        "preact": "^10.7.0",
-        "typescript": "^4.9.5",
-        "vite": "^3.1.8"
-      },
-      "dependencies": {
-        "@reactpy/client": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/@reactpy/client/-/client-0.2.1.tgz",
-          "integrity": "sha512-9sgGH+pJ2BpLT+QSVe7FQLS2VQ9acHgPlO8X3qiTumGw43O0X82sm8pzya8H8dAew463SeGza/pZc0mpUBHmqA==",
-          "requires": {
-            "event-to-object": "^0.1.2",
-            "json-pointer": "^0.6.2"
-          }
-        },
-        "typescript": {
-          "version": "4.9.5",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-          "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-          "dev": true
-        }
-      }
-    },
-    "argparse": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
-    },
-    "array-buffer-byte-length": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
-      "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "is-array-buffer": "^3.0.1"
-      }
-    },
-    "array-includes": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
-      "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "is-string": "^1.0.7"
-      }
-    },
-    "array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-      "dev": true
-    },
-    "array.prototype.flatmap": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
-      "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0"
-      }
-    },
-    "array.prototype.tosorted": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz",
-      "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-shim-unscopables": "^1.0.0",
-        "get-intrinsic": "^1.1.3"
-      }
-    },
-    "available-typed-arrays": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
-      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
-      "dev": true
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
-      "requires": {
-        "fill-range": "^7.0.1"
-      }
-    },
-    "call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true
-    },
-    "chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      }
-    },
-    "color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "requires": {
-        "color-name": "~1.1.4"
-      }
-    },
-    "color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
-    },
-    "cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
-      "requires": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      }
-    },
-    "css.escape": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
-      "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
-      "dev": true
-    },
-    "csstype": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
-      "dev": true
-    },
-    "debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "requires": {
-        "ms": "2.1.2"
-      }
-    },
-    "deep-is": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
-      "dev": true
-    },
-    "define-properties": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
-      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
-      "dev": true,
-      "requires": {
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "dequal": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
-      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
-      "dev": true
-    },
-    "diff": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
-      "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
-      "dev": true
-    },
-    "dir-glob": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-      "dev": true,
-      "requires": {
-        "path-type": "^4.0.0"
-      }
-    },
-    "doctrine": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-      "dev": true,
-      "requires": {
-        "esutils": "^2.0.2"
-      }
-    },
-    "es-abstract": {
-      "version": "1.21.2",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
-      "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
-      "dev": true,
-      "requires": {
-        "array-buffer-byte-length": "^1.0.0",
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "es-set-tostringtag": "^2.0.1",
-        "es-to-primitive": "^1.2.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.2.0",
-        "get-symbol-description": "^1.0.0",
-        "globalthis": "^1.0.3",
-        "gopd": "^1.0.1",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.5",
-        "is-array-buffer": "^3.0.2",
-        "is-callable": "^1.2.7",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-typed-array": "^1.1.10",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.3",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "safe-regex-test": "^1.0.0",
-        "string.prototype.trim": "^1.2.7",
-        "string.prototype.trimend": "^1.0.6",
-        "string.prototype.trimstart": "^1.0.6",
-        "typed-array-length": "^1.0.4",
-        "unbox-primitive": "^1.0.2",
-        "which-typed-array": "^1.1.9"
-      }
-    },
-    "es-set-tostringtag": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
-      "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.3",
-        "has": "^1.0.3",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "es-shim-unscopables": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
-      "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
-    "esbuild": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
-      "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
-      "dev": true,
-      "requires": {
-        "@esbuild/android-arm": "0.15.18",
-        "@esbuild/linux-loong64": "0.15.18",
-        "esbuild-android-64": "0.15.18",
-        "esbuild-android-arm64": "0.15.18",
-        "esbuild-darwin-64": "0.15.18",
-        "esbuild-darwin-arm64": "0.15.18",
-        "esbuild-freebsd-64": "0.15.18",
-        "esbuild-freebsd-arm64": "0.15.18",
-        "esbuild-linux-32": "0.15.18",
-        "esbuild-linux-64": "0.15.18",
-        "esbuild-linux-arm": "0.15.18",
-        "esbuild-linux-arm64": "0.15.18",
-        "esbuild-linux-mips64le": "0.15.18",
-        "esbuild-linux-ppc64le": "0.15.18",
-        "esbuild-linux-riscv64": "0.15.18",
-        "esbuild-linux-s390x": "0.15.18",
-        "esbuild-netbsd-64": "0.15.18",
-        "esbuild-openbsd-64": "0.15.18",
-        "esbuild-sunos-64": "0.15.18",
-        "esbuild-windows-32": "0.15.18",
-        "esbuild-windows-64": "0.15.18",
-        "esbuild-windows-arm64": "0.15.18"
-      }
-    },
-    "esbuild-android-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
-      "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-android-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
-      "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-darwin-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
-      "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-darwin-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
-      "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-freebsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
-      "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-freebsd-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
-      "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
-      "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
-      "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-arm": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
-      "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
-      "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-mips64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
-      "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-ppc64le": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
-      "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-riscv64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
-      "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-s390x": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
-      "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-netbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
-      "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-openbsd-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
-      "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-sunos-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
-      "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-32": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
-      "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
-      "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-arm64": {
-      "version": "0.15.18",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
-      "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
-      "dev": true,
-      "optional": true
-    },
-    "escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "dev": true
-    },
-    "eslint": {
-      "version": "8.38.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
-      "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
-      "dev": true,
-      "requires": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.4.0",
-        "@eslint/eslintrc": "^2.0.2",
-        "@eslint/js": "8.38.0",
-        "@humanwhocodes/config-array": "^0.11.8",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
-        "ajv": "^6.10.0",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.1.1",
-        "eslint-visitor-keys": "^3.4.0",
-        "espree": "^9.5.1",
-        "esquery": "^1.4.2",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "globals": "^13.19.0",
-        "grapheme-splitter": "^1.0.4",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-sdsl": "^4.1.4",
-        "js-yaml": "^4.1.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.1",
-        "strip-ansi": "^6.0.1",
-        "strip-json-comments": "^3.1.0",
-        "text-table": "^0.2.0"
-      }
-    },
-    "eslint-plugin-react": {
-      "version": "7.32.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz",
-      "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==",
-      "dev": true,
-      "requires": {
-        "array-includes": "^3.1.6",
-        "array.prototype.flatmap": "^1.3.1",
-        "array.prototype.tosorted": "^1.1.1",
-        "doctrine": "^2.1.0",
-        "estraverse": "^5.3.0",
-        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
-        "minimatch": "^3.1.2",
-        "object.entries": "^1.1.6",
-        "object.fromentries": "^2.0.6",
-        "object.hasown": "^1.1.2",
-        "object.values": "^1.1.6",
-        "prop-types": "^15.8.1",
-        "resolve": "^2.0.0-next.4",
-        "semver": "^6.3.0",
-        "string.prototype.matchall": "^4.0.8"
-      },
-      "dependencies": {
-        "doctrine": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-          "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-          "dev": true,
-          "requires": {
-            "esutils": "^2.0.2"
-          }
-        },
-        "resolve": {
-          "version": "2.0.0-next.4",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
-          "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
-          "dev": true,
-          "requires": {
-            "is-core-module": "^2.9.0",
-            "path-parse": "^1.0.7",
-            "supports-preserve-symlinks-flag": "^1.0.0"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "eslint-scope": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
-      "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
-      "dev": true,
-      "requires": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      }
-    },
-    "eslint-visitor-keys": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
-      "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
-      "dev": true
-    },
-    "espree": {
-      "version": "9.5.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
-      "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
-      "dev": true,
-      "requires": {
-        "acorn": "^8.8.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.4.0"
-      }
-    },
-    "esquery": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
-      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.1.0"
-      }
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.2.0"
-      }
-    },
-    "estraverse": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "dev": true
-    },
-    "esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true
-    },
-    "event-to-object": {
-      "version": "file:packages/event-to-object",
-      "requires": {
-        "happy-dom": "^8.9.0",
-        "json-pointer": "^0.6.2",
-        "lodash": "^4.17.21",
-        "tsm": "^2.0.0",
-        "typescript": "^4.9.5",
-        "uvu": "^0.5.1"
-      },
-      "dependencies": {
-        "typescript": {
-          "version": "4.9.5",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-          "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-          "dev": true
-        }
-      }
-    },
-    "fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "fast-glob": {
-      "version": "3.2.12",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
-      "dev": true,
-      "requires": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^4.0.1"
-          }
-        }
-      }
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
-    },
-    "fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
-      "dev": true
-    },
-    "fastq": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
-      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
-      "dev": true,
-      "requires": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "file-entry-cache": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-      "dev": true,
-      "requires": {
-        "flat-cache": "^3.0.4"
-      }
-    },
-    "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
-    },
-    "find-up": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-      "dev": true,
-      "requires": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      }
-    },
-    "flat-cache": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
-      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
-      "dev": true,
-      "requires": {
-        "flatted": "^3.1.0",
-        "rimraf": "^3.0.2"
-      }
-    },
-    "flatted": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
-      "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
-      "dev": true
-    },
-    "for-each": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
-      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.3"
-      }
-    },
-    "foreach": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-      "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "dev": true
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "optional": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "function.prototype.name": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      }
-    },
-    "functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "dev": true
-    },
-    "get-intrinsic": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
-      "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      }
-    },
-    "get-symbol-description": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "dev": true,
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "glob-parent": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-      "dev": true,
-      "requires": {
-        "is-glob": "^4.0.3"
-      }
-    },
-    "globals": {
-      "version": "13.20.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
-      "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
-      "dev": true,
-      "requires": {
-        "type-fest": "^0.20.2"
-      }
-    },
-    "globalthis": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
-      "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3"
-      }
-    },
-    "globby": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-      "dev": true,
-      "requires": {
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.2.9",
-        "ignore": "^5.2.0",
-        "merge2": "^1.4.1",
-        "slash": "^3.0.0"
-      }
-    },
-    "gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.3"
-      }
-    },
-    "grapheme-splitter": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
-      "dev": true
-    },
-    "happy-dom": {
-      "version": "8.9.0",
-      "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz",
-      "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==",
-      "dev": true,
-      "requires": {
-        "css.escape": "^1.5.1",
-        "he": "^1.2.0",
-        "iconv-lite": "^0.6.3",
-        "node-fetch": "^2.x.x",
-        "webidl-conversions": "^7.0.0",
-        "whatwg-encoding": "^2.0.0",
-        "whatwg-mimetype": "^3.0.0"
-      }
-    },
-    "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-bigints": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "dev": true
-    },
-    "has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true
-    },
-    "has-property-descriptors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
-      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "has-proto": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
-      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
-      "dev": true
-    },
-    "has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "dev": true
-    },
-    "has-tostringtag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "dev": true
-    },
-    "iconv-lite": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-      }
-    },
-    "ignore": {
-      "version": "5.2.4",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
-      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
-      "dev": true
-    },
-    "import-fresh": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "dev": true,
-      "requires": {
-        "parent-module": "^1.0.0",
-        "resolve-from": "^4.0.0"
-      }
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "dev": true
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "dev": true,
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "internal-slot": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
-      "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.2.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "is-array-buffer": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
-      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.2.0",
-        "is-typed-array": "^1.1.10"
-      }
-    },
-    "is-bigint": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dev": true,
-      "requires": {
-        "has-bigints": "^1.0.1"
-      }
-    },
-    "is-boolean-object": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-callable": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
-      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-      "dev": true
-    },
-    "is-core-module": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true
-    },
-    "is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-negative-zero": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
-      "dev": true
-    },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true
-    },
-    "is-number-object": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "dev": true
-    },
-    "is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-shared-array-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "is-string": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "is-typed-array": {
-      "version": "1.1.10",
-      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
-      "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
-      "dev": true,
-      "requires": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-weakref": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true
-    },
-    "js-sdsl": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
-      "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==",
-      "dev": true
-    },
-    "js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
-    },
-    "js-yaml": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dev": true,
-      "requires": {
-        "argparse": "^2.0.1"
-      }
-    },
-    "json-pointer": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz",
-      "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==",
-      "requires": {
-        "foreach": "^2.0.4"
-      }
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
-    },
-    "json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-      "dev": true
-    },
-    "jsx-ast-utils": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
-      "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
-      "dev": true,
-      "requires": {
-        "array-includes": "^3.1.5",
-        "object.assign": "^4.1.3"
-      }
-    },
-    "kleur": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
-      "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
-      "dev": true
-    },
-    "levn": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "^1.2.1",
-        "type-check": "~0.4.0"
-      }
-    },
-    "locate-path": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-      "dev": true,
-      "requires": {
-        "p-locate": "^5.0.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
-    },
-    "lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "dev": true
-    },
-    "loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "requires": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "requires": {
-        "yallist": "^4.0.0"
-      }
-    },
-    "merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "dev": true
-    },
-    "micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
-      "dev": true,
-      "requires": {
-        "braces": "^3.0.2",
-        "picomatch": "^2.3.1"
-      }
-    },
-    "minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "mri": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
-      "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
-      "dev": true
-    },
-    "ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "nanoid": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
-      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
-      "dev": true
-    },
-    "natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-      "dev": true
-    },
-    "natural-compare-lite": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
-      "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
-      "dev": true
-    },
-    "node-fetch": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
-      "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
-      "dev": true,
-      "requires": {
-        "whatwg-url": "^5.0.0"
-      }
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
-    },
-    "object-inspect": {
-      "version": "1.12.3",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
-      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
-      "dev": true
-    },
-    "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true
-    },
-    "object.assign": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "object.entries": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
-      "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "object.fromentries": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
-      "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "object.hasown": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
-      "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "object.values": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
-      "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dev": true,
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "optionator": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
-      "dev": true,
-      "requires": {
-        "deep-is": "^0.1.3",
-        "fast-levenshtein": "^2.0.6",
-        "levn": "^0.4.1",
-        "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0",
-        "word-wrap": "^1.2.3"
-      }
-    },
-    "p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-      "dev": true,
-      "requires": {
-        "yocto-queue": "^0.1.0"
-      }
-    },
-    "p-locate": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-      "dev": true,
-      "requires": {
-        "p-limit": "^3.0.2"
-      }
-    },
-    "parent-module": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
-      "requires": {
-        "callsites": "^3.0.0"
-      }
-    },
-    "path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-      "dev": true
-    },
-    "path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "path-type": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true
-    },
-    "picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
-    },
-    "picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true
-    },
-    "postcss": {
-      "version": "8.4.24",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz",
-      "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
-      "dev": true,
-      "requires": {
-        "nanoid": "^3.3.6",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      }
-    },
-    "preact": {
-      "version": "10.15.1",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz",
-      "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g=="
-    },
-    "prelude-ls": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-      "dev": true
-    },
-    "prettier": {
-      "version": "3.0.0-alpha.6",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0-alpha.6.tgz",
-      "integrity": "sha512-AdbQSZ6Oo+iy9Ekzmsgno05P1uX2vqPkjOMJqRfP8hTe+m6iDw4Nt7bPFpWZ/HYCU+3f0P5U0o2ghxQwwkLH7A==",
-      "dev": true
-    },
-    "prop-types": {
-      "version": "15.8.1",
-      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-      "dev": true,
-      "requires": {
-        "loose-envify": "^1.4.0",
-        "object-assign": "^4.1.1",
-        "react-is": "^16.13.1"
-      }
-    },
-    "punycode": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
-      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
-      "dev": true
-    },
-    "queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "dev": true
-    },
-    "react": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
-      "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
-      "peer": true,
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "react-dom": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
-      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
-      "peer": true,
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1",
-        "scheduler": "^0.20.2"
-      }
-    },
-    "react-is": {
-      "version": "16.13.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
-      "dev": true
-    },
-    "regexp.prototype.flags": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "functions-have-names": "^1.2.2"
-      }
-    },
-    "resolve": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
-      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
-      "dev": true,
-      "requires": {
-        "is-core-module": "^2.11.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      }
-    },
-    "resolve-from": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "dev": true
-    },
-    "reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true
-    },
-    "rimraf": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "rollup": {
-      "version": "2.79.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
-      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
-      "dev": true,
-      "requires": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "dev": true,
-      "requires": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "sade": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
-      "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
-      "dev": true,
-      "requires": {
-        "mri": "^1.1.0"
-      }
-    },
-    "safe-regex-test": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
-      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.3",
-        "is-regex": "^1.1.4"
-      }
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "scheduler": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
-      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
-      "peer": true,
-      "requires": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "semver": {
-      "version": "7.4.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
-      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
-      "dev": true,
-      "requires": {
-        "lru-cache": "^6.0.0"
-      }
-    },
-    "shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^3.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "dev": true
-    },
-    "side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      }
-    },
-    "slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "dev": true
-    },
-    "source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "dev": true
-    },
-    "string.prototype.matchall": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
-      "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "regexp.prototype.flags": "^1.4.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "string.prototype.trim": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
-      "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "string.prototype.trimend": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
-      "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "string.prototype.trimstart": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
-      "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^5.0.1"
-      }
-    },
-    "strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "dev": true
-    },
-    "supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "requires": {
-        "has-flag": "^4.0.0"
-      }
-    },
-    "supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true
-    },
-    "text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
-    },
-    "to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "requires": {
-        "is-number": "^7.0.0"
-      }
-    },
-    "tr46": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
-      "dev": true
-    },
-    "tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true
-    },
-    "tsm": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/tsm/-/tsm-2.3.0.tgz",
-      "integrity": "sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==",
-      "dev": true,
-      "requires": {
-        "esbuild": "^0.15.16"
-      }
-    },
-    "tsutils": {
-      "version": "3.21.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
-      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.8.1"
-      }
-    },
-    "type-check": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "^1.2.1"
-      }
-    },
-    "type-fest": {
-      "version": "0.20.2",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-      "dev": true
-    },
-    "typed-array-length": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
-      "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "is-typed-array": "^1.1.9"
-      }
-    },
-    "typescript": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
-      "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
-      "dev": true,
-      "peer": true
-    },
-    "unbox-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
-      }
-    },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "uvu": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
-      "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
-      "dev": true,
-      "requires": {
-        "dequal": "^2.0.0",
-        "diff": "^5.0.0",
-        "kleur": "^4.0.3",
-        "sade": "^1.7.3"
-      }
-    },
-    "vite": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
-      "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
-      "dev": true,
-      "requires": {
-        "esbuild": "^0.15.9",
-        "fsevents": "~2.3.2",
-        "postcss": "^8.4.18",
-        "resolve": "^1.22.1",
-        "rollup": "^2.79.1"
-      }
-    },
-    "webidl-conversions": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
-      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
-      "dev": true
-    },
-    "whatwg-encoding": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
-      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
-      "dev": true,
-      "requires": {
-        "iconv-lite": "0.6.3"
-      }
-    },
-    "whatwg-mimetype": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
-      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
-      "dev": true
-    },
-    "whatwg-url": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
-      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-      "dev": true,
-      "requires": {
-        "tr46": "~0.0.3",
-        "webidl-conversions": "^3.0.0"
-      },
-      "dependencies": {
-        "webidl-conversions": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
-          "dev": true
-        }
-      }
-    },
-    "which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-boxed-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
-      "requires": {
-        "is-bigint": "^1.0.1",
-        "is-boolean-object": "^1.1.0",
-        "is-number-object": "^1.0.4",
-        "is-string": "^1.0.5",
-        "is-symbol": "^1.0.3"
-      }
-    },
-    "which-typed-array": {
-      "version": "1.1.9",
-      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
-      "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
-      "dev": true,
-      "requires": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0",
-        "is-typed-array": "^1.1.10"
-      }
-    },
-    "word-wrap": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-      "dev": true
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true
-    },
-    "yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
-    },
-    "yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-      "dev": true
-    }
-  }
-}
diff --git a/src/js/package.json b/src/js/package.json
deleted file mode 100644
index a9d84814b..000000000
--- a/src/js/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "license": "MIT",
-  "scripts": {
-    "publish": "npm --workspaces publish",
-    "test": "npm --workspaces test",
-    "build": "npm --workspaces run build",
-    "fix:format": "npm run prettier -- --write && npm run eslint -- --fix",
-    "check:format": "npm run prettier -- --check && npm run eslint",
-    "check:tests": "npm --workspaces run check:tests",
-    "check:types": "npm --workspaces run check:types",
-    "prettier": "prettier --ignore-path .gitignore .",
-    "eslint": "eslint --ignore-path .gitignore ."
-  },
-  "workspaces": [
-    "packages/event-to-object",
-    "packages/@reactpy/client",
-    "app"
-  ],
-  "devDependencies": {
-    "@typescript-eslint/eslint-plugin": "^5.58.0",
-    "@typescript-eslint/parser": "^5.58.0",
-    "eslint": "^8.38.0",
-    "eslint-plugin-react": "^7.32.2",
-    "prettier": "^3.0.0-alpha.6"
-  }
-}
diff --git a/src/js/packages/@reactpy/client/.gitignore b/src/js/packages/@reactpy/client/.gitignore
deleted file mode 100644
index 787df98f6..000000000
--- a/src/js/packages/@reactpy/client/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Javascript
-# ----------
-node_modules
-
-# IDE
-# ---
-.vscode
-.idea
diff --git a/src/js/packages/@reactpy/client/README.md b/src/js/packages/@reactpy/client/README.md
deleted file mode 100644
index a01929943..000000000
--- a/src/js/packages/@reactpy/client/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# @reactpy/client
-
-A client for ReactPy implemented in React
diff --git a/src/js/packages/@reactpy/client/package.json b/src/js/packages/@reactpy/client/package.json
deleted file mode 100644
index ab4bd34ad..000000000
--- a/src/js/packages/@reactpy/client/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "author": "Ryan Morshead",
-  "main": "dist/index.js",
-  "types": "dist/index.d.ts",
-  "description": "A client for ReactPy implemented in React",
-  "license": "MIT",
-  "name": "@reactpy/client",
-  "type": "module",
-  "version": "0.3.1",
-  "dependencies": {
-    "event-to-object": "^0.1.2",
-    "json-pointer": "^0.6.2"
-  },
-  "devDependencies": {
-    "@types/json-pointer": "^1.0.31",
-    "@types/react": "^17.0",
-    "@types/react-dom": "^17.0",
-    "typescript": "^4.9.5"
-  },
-  "peerDependencies": {
-    "react": ">=16 <18",
-    "react-dom": ">=16 <18"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/reactive-python/reactpy"
-  },
-  "scripts": {
-    "build": "tsc -b",
-    "test": "npm run check:tests",
-    "check:tests": "echo 'no tests'",
-    "check:types": "tsc --noEmit"
-  }
-}
diff --git a/src/js/packages/@reactpy/client/src/components.tsx b/src/js/packages/@reactpy/client/src/components.tsx
deleted file mode 100644
index 728c4cec7..000000000
--- a/src/js/packages/@reactpy/client/src/components.tsx
+++ /dev/null
@@ -1,227 +0,0 @@
-import React, {
-  createElement,
-  createContext,
-  useState,
-  useRef,
-  useContext,
-  useEffect,
-  Fragment,
-  MutableRefObject,
-  ChangeEvent,
-} from "react";
-// @ts-ignore
-import { set as setJsonPointer } from "json-pointer";
-import {
-  ReactPyVdom,
-  ReactPyComponent,
-  createChildren,
-  createAttributes,
-  loadImportSource,
-  ImportSourceBinding,
-} from "./reactpy-vdom";
-import { ReactPyClient } from "./reactpy-client";
-
-const ClientContext = createContext<ReactPyClient>(null as any);
-
-export function Layout(props: { client: ReactPyClient }): JSX.Element {
-  const currentModel: ReactPyVdom = useState({ tagName: "" })[0];
-  const forceUpdate = useForceUpdate();
-
-  useEffect(
-    () =>
-      props.client.onMessage("layout-update", ({ path, model }) => {
-        if (path === "") {
-          Object.assign(currentModel, model);
-        } else {
-          setJsonPointer(currentModel, path, model);
-        }
-        forceUpdate();
-      }),
-    [currentModel, props.client],
-  );
-
-  return (
-    <ClientContext.Provider value={props.client}>
-      <Element model={currentModel} />
-    </ClientContext.Provider>
-  );
-}
-
-export function Element({ model }: { model: ReactPyVdom }): JSX.Element | null {
-  if (model.error !== undefined) {
-    if (model.error) {
-      return <pre>{model.error}</pre>;
-    } else {
-      return null;
-    }
-  }
-
-  let SpecializedElement: ReactPyComponent;
-  if (model.tagName in SPECIAL_ELEMENTS) {
-    SpecializedElement =
-      SPECIAL_ELEMENTS[model.tagName as keyof typeof SPECIAL_ELEMENTS];
-  } else if (model.importSource) {
-    SpecializedElement = ImportedElement;
-  } else {
-    SpecializedElement = StandardElement;
-  }
-
-  return <SpecializedElement model={model} />;
-}
-
-function StandardElement({ model }: { model: ReactPyVdom }) {
-  const client = React.useContext(ClientContext);
-  // Use createElement here to avoid warning about variable numbers of children not
-  // having keys. Warning about this must now be the responsibility of the client
-  // providing the models instead of the client rendering them.
-  return createElement(
-    model.tagName === "" ? Fragment : model.tagName,
-    createAttributes(model, client),
-    ...createChildren(model, (child) => {
-      return <Element model={child} key={child.key} />;
-    }),
-  );
-}
-
-function UserInputElement({ model }: { model: ReactPyVdom }): JSX.Element {
-  const client = useContext(ClientContext);
-  const props = createAttributes(model, client);
-  const [value, setValue] = React.useState(props.value);
-
-  // honor changes to value from the client via props
-  React.useEffect(() => setValue(props.value), [props.value]);
-
-  const givenOnChange = props.onChange;
-  if (typeof givenOnChange === "function") {
-    props.onChange = (event: ChangeEvent<any>) => {
-      // immediately update the value to give the user feedback
-      setValue(event.target.value);
-      // allow the client to respond (and possibly change the value)
-      givenOnChange(event);
-    };
-  }
-
-  // Use createElement here to avoid warning about variable numbers of children not
-  // having keys. Warning about this must now be the responsibility of the client
-  // providing the models instead of the client rendering them.
-  return createElement(
-    model.tagName,
-    // overwrite
-    { ...props, value },
-    ...createChildren(model, (child) => (
-      <Element model={child} key={child.key} />
-    )),
-  );
-}
-
-function ScriptElement({ model }: { model: ReactPyVdom }) {
-  const ref = useRef<HTMLDivElement | null>(null);
-
-  React.useEffect(() => {
-    if (!ref.current) {
-      return;
-    }
-    const scriptContent = model?.children?.filter(
-      (value): value is string => typeof value == "string",
-    )[0];
-
-    let scriptElement: HTMLScriptElement;
-    if (model.attributes) {
-      scriptElement = document.createElement("script");
-      for (const [k, v] of Object.entries(model.attributes)) {
-        scriptElement.setAttribute(k, v);
-      }
-      if (scriptContent) {
-        scriptElement.appendChild(document.createTextNode(scriptContent));
-      }
-      ref.current.appendChild(scriptElement);
-    } else if (scriptContent) {
-      const scriptResult = eval(scriptContent);
-      if (typeof scriptResult == "function") {
-        return scriptResult();
-      }
-    }
-  }, [model.key, ref.current]);
-
-  return <div ref={ref} />;
-}
-
-function ImportedElement({ model }: { model: ReactPyVdom }) {
-  const importSourceVdom = model.importSource;
-  const importSourceRef = useImportSource(model);
-
-  if (!importSourceVdom) {
-    return null;
-  }
-
-  const importSourceFallback = importSourceVdom.fallback;
-
-  if (!importSourceVdom) {
-    // display a fallback if one was given
-    if (!importSourceFallback) {
-      return null;
-    } else if (typeof importSourceFallback === "string") {
-      return <span>{importSourceFallback}</span>;
-    } else {
-      return <StandardElement model={importSourceFallback} />;
-    }
-  } else {
-    return <span ref={importSourceRef} />;
-  }
-}
-
-function useForceUpdate() {
-  const [, setState] = useState(false);
-  return () => setState((old) => !old);
-}
-
-function useImportSource(model: ReactPyVdom): MutableRefObject<any> {
-  const vdomImportSource = model.importSource;
-
-  const mountPoint = useRef<HTMLElement>(null);
-  const client = React.useContext(ClientContext);
-  const [binding, setBinding] = useState<ImportSourceBinding | null>(null);
-
-  React.useEffect(() => {
-    let unmounted = false;
-
-    if (vdomImportSource) {
-      loadImportSource(vdomImportSource, client).then((bind) => {
-        if (!unmounted && mountPoint.current) {
-          setBinding(bind(mountPoint.current));
-        }
-      });
-    }
-
-    return () => {
-      unmounted = true;
-      if (
-        binding &&
-        vdomImportSource &&
-        !vdomImportSource.unmountBeforeUpdate
-      ) {
-        binding.unmount();
-      }
-    };
-  }, [client, vdomImportSource, setBinding, mountPoint.current]);
-
-  // this effect must run every time in case the model has changed
-  useEffect(() => {
-    if (!(binding && vdomImportSource)) {
-      return;
-    }
-    binding.render(model);
-    if (vdomImportSource.unmountBeforeUpdate) {
-      return binding.unmount;
-    }
-  });
-
-  return mountPoint;
-}
-
-const SPECIAL_ELEMENTS = {
-  input: UserInputElement,
-  script: ScriptElement,
-  select: UserInputElement,
-  textarea: UserInputElement,
-};
diff --git a/src/js/packages/@reactpy/client/src/index.ts b/src/js/packages/@reactpy/client/src/index.ts
deleted file mode 100644
index 548fcbfc7..000000000
--- a/src/js/packages/@reactpy/client/src/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from "./components";
-export * from "./messages";
-export * from "./mount";
-export * from "./reactpy-client";
-export * from "./reactpy-vdom";
diff --git a/src/js/packages/@reactpy/client/src/logger.ts b/src/js/packages/@reactpy/client/src/logger.ts
deleted file mode 100644
index 4c4cdd264..000000000
--- a/src/js/packages/@reactpy/client/src/logger.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  log: (...args: any[]): void => console.log("[ReactPy]", ...args),
-  warn: (...args: any[]): void => console.warn("[ReactPy]", ...args),
-  error: (...args: any[]): void => console.error("[ReactPy]", ...args),
-};
diff --git a/src/js/packages/@reactpy/client/src/messages.ts b/src/js/packages/@reactpy/client/src/messages.ts
deleted file mode 100644
index 34001dcb0..000000000
--- a/src/js/packages/@reactpy/client/src/messages.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { ReactPyVdom } from "./reactpy-vdom";
-
-export type LayoutUpdateMessage = {
-  type: "layout-update";
-  path: string;
-  model: ReactPyVdom;
-};
-
-export type LayoutEventMessage = {
-  type: "layout-event";
-  target: string;
-  data: any;
-};
-
-export type IncomingMessage = LayoutUpdateMessage;
-export type OutgoingMessage = LayoutEventMessage;
-export type Message = IncomingMessage | OutgoingMessage;
diff --git a/src/js/packages/@reactpy/client/src/mount.tsx b/src/js/packages/@reactpy/client/src/mount.tsx
deleted file mode 100644
index 0b824a4ee..000000000
--- a/src/js/packages/@reactpy/client/src/mount.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from "react";
-import { render } from "react-dom";
-import { Layout } from "./components";
-import { ReactPyClient } from "./reactpy-client";
-
-export function mount(element: HTMLElement, client: ReactPyClient): void {
-  render(<Layout client={client} />, element);
-}
diff --git a/src/js/packages/@reactpy/client/src/reactpy-client.ts b/src/js/packages/@reactpy/client/src/reactpy-client.ts
deleted file mode 100644
index 6f37b55a1..000000000
--- a/src/js/packages/@reactpy/client/src/reactpy-client.ts
+++ /dev/null
@@ -1,264 +0,0 @@
-import { ReactPyModule } from "./reactpy-vdom";
-import logger from "./logger";
-
-/**
- * A client for communicating with a ReactPy server.
- */
-export interface ReactPyClient {
-  /**
-   * Register a handler for a message type.
-   *
-   * The first time this is called, the client will be considered ready.
-   *
-   * @param type The type of message to handle.
-   * @param handler The handler to call when a message of the given type is received.
-   * @returns A function to unregister the handler.
-   */
-  onMessage(type: string, handler: (message: any) => void): () => void;
-
-  /**
-   * Send a message to the server.
-   *
-   * @param message The message to send. Messages must have a `type` property.
-   */
-  sendMessage(message: any): void;
-
-  /**
-   * Load a module from the server.
-   * @param moduleName The name of the module to load.
-   * @returns A promise that resolves to the module.
-   */
-  loadModule(moduleName: string): Promise<ReactPyModule>;
-}
-
-export abstract class BaseReactPyClient implements ReactPyClient {
-  private readonly handlers: { [key: string]: ((message: any) => void)[] } = {};
-  protected readonly ready: Promise<void>;
-  private resolveReady: (value: undefined) => void;
-
-  constructor() {
-    this.resolveReady = () => {};
-    this.ready = new Promise((resolve) => (this.resolveReady = resolve));
-  }
-
-  onMessage(type: string, handler: (message: any) => void): () => void {
-    (this.handlers[type] || (this.handlers[type] = [])).push(handler);
-    this.resolveReady(undefined);
-    return () => {
-      this.handlers[type] = this.handlers[type].filter((h) => h !== handler);
-    };
-  }
-
-  abstract sendMessage(message: any): void;
-  abstract loadModule(moduleName: string): Promise<ReactPyModule>;
-
-  /**
-   * Handle an incoming message.
-   *
-   * This should be called by subclasses when a message is received.
-   *
-   * @param message The message to handle. The message must have a `type` property.
-   */
-  protected handleIncoming(message: any): void {
-    if (!message.type) {
-      logger.warn("Received message without type", message);
-      return;
-    }
-
-    const messageHandlers: ((m: any) => void)[] | undefined =
-      this.handlers[message.type];
-    if (!messageHandlers) {
-      logger.warn("Received message without handler", message);
-      return;
-    }
-
-    messageHandlers.forEach((h) => h(message));
-  }
-}
-
-export type SimpleReactPyClientProps = {
-  serverLocation?: LocationProps;
-  reconnectOptions?: ReconnectProps;
-};
-
-/**
- * The location of the server.
- *
- * This is used to determine the location of the server's API endpoints. All endpoints
- * are expected to be found at the base URL, with the following paths:
- *
- * - `_reactpy/stream/${route}${query}`: The websocket endpoint for the stream.
- * - `_reactpy/modules`: The directory containing the dynamically loaded modules.
- * - `_reactpy/assets`: The directory containing the static assets.
- */
-type LocationProps = {
-  /**
-   * The base URL of the server.
-   *
-   * @default - document.location.origin
-   */
-  url: string;
-  /**
-   * The route to the page being rendered.
-   *
-   * @default - document.location.pathname
-   */
-  route: string;
-  /**
-   * The query string of the page being rendered.
-   *
-   * @default - document.location.search
-   */
-  query: string;
-};
-
-type ReconnectProps = {
-  maxInterval?: number;
-  maxRetries?: number;
-  backoffRate?: number;
-  intervalJitter?: number;
-};
-
-export class SimpleReactPyClient
-  extends BaseReactPyClient
-  implements ReactPyClient
-{
-  private readonly urls: ServerUrls;
-  private readonly socket: { current?: WebSocket };
-
-  constructor(props: SimpleReactPyClientProps) {
-    super();
-
-    this.urls = getServerUrls(
-      props.serverLocation || {
-        url: document.location.origin,
-        route: document.location.pathname,
-        query: document.location.search,
-      },
-    );
-
-    this.socket = createReconnectingWebSocket({
-      readyPromise: this.ready,
-      url: this.urls.stream,
-      onMessage: async ({ data }) => this.handleIncoming(JSON.parse(data)),
-      ...props.reconnectOptions,
-    });
-  }
-
-  sendMessage(message: any): void {
-    this.socket.current?.send(JSON.stringify(message));
-  }
-
-  loadModule(moduleName: string): Promise<ReactPyModule> {
-    return import(`${this.urls.modules}/${moduleName}`);
-  }
-}
-
-type ServerUrls = {
-  base: URL;
-  stream: string;
-  modules: string;
-  assets: string;
-};
-
-function getServerUrls(props: LocationProps): ServerUrls {
-  const base = new URL(`${props.url || document.location.origin}/_reactpy`);
-  const modules = `${base}/modules`;
-  const assets = `${base}/assets`;
-
-  const streamProtocol = `ws${base.protocol === "https:" ? "s" : ""}`;
-  const streamPath = rtrim(`${base.pathname}/stream${props.route || ""}`, "/");
-  const stream = `${streamProtocol}://${base.host}${streamPath}${props.query}`;
-
-  return { base, modules, assets, stream };
-}
-
-function createReconnectingWebSocket(
-  props: {
-    url: string;
-    readyPromise: Promise<void>;
-    onOpen?: () => void;
-    onMessage: (message: MessageEvent<any>) => void;
-    onClose?: () => void;
-  } & ReconnectProps,
-) {
-  const {
-    maxInterval = 60000,
-    maxRetries = 50,
-    backoffRate = 1.1,
-    intervalJitter = 0.1,
-  } = props;
-
-  const startInterval = 750;
-  let retries = 0;
-  let interval = startInterval;
-  const closed = false;
-  let everConnected = false;
-  const socket: { current?: WebSocket } = {};
-
-  const connect = () => {
-    if (closed) {
-      return;
-    }
-    socket.current = new WebSocket(props.url);
-    socket.current.onopen = () => {
-      everConnected = true;
-      logger.log("client connected");
-      interval = startInterval;
-      retries = 0;
-      if (props.onOpen) {
-        props.onOpen();
-      }
-    };
-    socket.current.onmessage = props.onMessage;
-    socket.current.onclose = () => {
-      if (!everConnected) {
-        logger.log("failed to connect");
-        return;
-      }
-
-      logger.log("client disconnected");
-      if (props.onClose) {
-        props.onClose();
-      }
-
-      if (retries >= maxRetries) {
-        return;
-      }
-
-      const thisInterval = addJitter(interval, intervalJitter);
-      logger.log(
-        `reconnecting in ${(thisInterval / 1000).toPrecision(4)} seconds...`,
-      );
-      setTimeout(connect, thisInterval);
-      interval = nextInterval(interval, backoffRate, maxInterval);
-      retries++;
-    };
-  };
-
-  props.readyPromise.then(() => logger.log("starting client...")).then(connect);
-
-  return socket;
-}
-
-function nextInterval(
-  currentInterval: number,
-  backoffRate: number,
-  maxInterval: number,
-): number {
-  return Math.min(
-    currentInterval *
-      // increase interval by backoff rate
-      backoffRate,
-    // don't exceed max interval
-    maxInterval,
-  );
-}
-
-function addJitter(interval: number, jitter: number): number {
-  return interval + (Math.random() * jitter * interval * 2 - jitter * interval);
-}
-
-function rtrim(text: string, trim: string): string {
-  return text.replace(new RegExp(`${trim}+$`), "");
-}
diff --git a/src/js/packages/@reactpy/client/src/reactpy-vdom.tsx b/src/js/packages/@reactpy/client/src/reactpy-vdom.tsx
deleted file mode 100644
index 22fa3e61d..000000000
--- a/src/js/packages/@reactpy/client/src/reactpy-vdom.tsx
+++ /dev/null
@@ -1,261 +0,0 @@
-import React, { ComponentType } from "react";
-import { ReactPyClient } from "./reactpy-client";
-import serializeEvent from "event-to-object";
-
-export async function loadImportSource(
-  vdomImportSource: ReactPyVdomImportSource,
-  client: ReactPyClient,
-): Promise<BindImportSource> {
-  let module: ReactPyModule;
-  if (vdomImportSource.sourceType === "URL") {
-    module = await import(vdomImportSource.source);
-  } else {
-    module = await client.loadModule(vdomImportSource.source);
-  }
-  if (typeof module.bind !== "function") {
-    throw new Error(
-      `${vdomImportSource.source} did not export a function 'bind'`,
-    );
-  }
-
-  return (node: HTMLElement) => {
-    const binding = module.bind(node, {
-      sendMessage: client.sendMessage,
-      onMessage: client.onMessage,
-    });
-    if (
-      !(
-        typeof binding.create === "function" &&
-        typeof binding.render === "function" &&
-        typeof binding.unmount === "function"
-      )
-    ) {
-      console.error(`${vdomImportSource.source} returned an impropper binding`);
-      return null;
-    }
-
-    return {
-      render: (model) =>
-        binding.render(
-          createImportSourceElement({
-            client,
-            module,
-            binding,
-            model,
-            currentImportSource: vdomImportSource,
-          }),
-        ),
-      unmount: binding.unmount,
-    };
-  };
-}
-
-function createImportSourceElement(props: {
-  client: ReactPyClient;
-  module: ReactPyModule;
-  binding: ReactPyModuleBinding;
-  model: ReactPyVdom;
-  currentImportSource: ReactPyVdomImportSource;
-}): any {
-  let type: any;
-  if (props.model.importSource) {
-    if (
-      !isImportSourceEqual(props.currentImportSource, props.model.importSource)
-    ) {
-      console.error(
-        "Parent element import source " +
-          stringifyImportSource(props.currentImportSource) +
-          " does not match child's import source " +
-          stringifyImportSource(props.model.importSource),
-      );
-      return null;
-    } else if (!props.module[props.model.tagName]) {
-      console.error(
-        "Module from source " +
-          stringifyImportSource(props.currentImportSource) +
-          ` does not export ${props.model.tagName}`,
-      );
-      return null;
-    } else {
-      type = props.module[props.model.tagName];
-    }
-  } else {
-    type = props.model.tagName;
-  }
-  return props.binding.create(
-    type,
-    createAttributes(props.model, props.client),
-    createChildren(props.model, (child) =>
-      createImportSourceElement({
-        ...props,
-        model: child,
-      }),
-    ),
-  );
-}
-
-function isImportSourceEqual(
-  source1: ReactPyVdomImportSource,
-  source2: ReactPyVdomImportSource,
-) {
-  return (
-    source1.source === source2.source &&
-    source1.sourceType === source2.sourceType
-  );
-}
-
-function stringifyImportSource(importSource: ReactPyVdomImportSource) {
-  return JSON.stringify({
-    source: importSource.source,
-    sourceType: importSource.sourceType,
-  });
-}
-
-export function createChildren<Child>(
-  model: ReactPyVdom,
-  createChild: (child: ReactPyVdom) => Child,
-): (Child | string)[] {
-  if (!model.children) {
-    return [];
-  } else {
-    return model.children.map((child) => {
-      switch (typeof child) {
-        case "object":
-          return createChild(child);
-        case "string":
-          return child;
-      }
-    });
-  }
-}
-
-export function createAttributes(
-  model: ReactPyVdom,
-  client: ReactPyClient,
-): { [key: string]: any } {
-  return Object.fromEntries(
-    Object.entries({
-      // Normal HTML attributes
-      ...model.attributes,
-      // Construct event handlers
-      ...Object.fromEntries(
-        Object.entries(model.eventHandlers || {}).map(([name, handler]) =>
-          createEventHandler(client, name, handler),
-        ),
-      ),
-      // Convert snake_case to camelCase names
-    }).map(normalizeAttribute),
-  );
-}
-
-function createEventHandler(
-  client: ReactPyClient,
-  name: string,
-  { target, preventDefault, stopPropagation }: ReactPyVdomEventHandler,
-): [string, () => void] {
-  return [
-    name,
-    function (...args: any[]) {
-      const data = Array.from(args).map((value) => {
-        if (!(typeof value === "object" && value.nativeEvent)) {
-          return value;
-        }
-        const event = value as React.SyntheticEvent<any>;
-        if (preventDefault) {
-          event.preventDefault();
-        }
-        if (stopPropagation) {
-          event.stopPropagation();
-        }
-        return serializeEvent(event.nativeEvent);
-      });
-      client.sendMessage({ type: "layout-event", data, target });
-    },
-  ];
-}
-
-function normalizeAttribute([key, value]: [string, any]): [string, any] {
-  let normKey = key;
-  let normValue = value;
-
-  if (key === "style" && typeof value === "object") {
-    normValue = Object.fromEntries(
-      Object.entries(value).map(([k, v]) => [snakeToCamel(k), v]),
-    );
-  } else if (
-    key.startsWith("data_") ||
-    key.startsWith("aria_") ||
-    DASHED_HTML_ATTRS.includes(key)
-  ) {
-    normKey = key.split("_").join("-");
-  } else {
-    normKey = snakeToCamel(key);
-  }
-  return [normKey, normValue];
-}
-
-function snakeToCamel(str: string): string {
-  return str.replace(/([_][a-z])/g, (group) =>
-    group.toUpperCase().replace("_", ""),
-  );
-}
-
-// see list of HTML attributes with dashes in them:
-// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#attribute_list
-const DASHED_HTML_ATTRS = ["accept_charset", "http_equiv"];
-
-export type ReactPyComponent = ComponentType<{ model: ReactPyVdom }>;
-
-export type ReactPyVdom = {
-  tagName: string;
-  key?: string;
-  attributes?: { [key: string]: string };
-  children?: (ReactPyVdom | string)[];
-  error?: string;
-  eventHandlers?: { [key: string]: ReactPyVdomEventHandler };
-  importSource?: ReactPyVdomImportSource;
-};
-
-export type ReactPyVdomEventHandler = {
-  target: string;
-  preventDefault?: boolean;
-  stopPropagation?: boolean;
-};
-
-export type ReactPyVdomImportSource = {
-  source: string;
-  sourceType?: "URL" | "NAME";
-  fallback?: string | ReactPyVdom;
-  unmountBeforeUpdate?: boolean;
-};
-
-export type ReactPyModule = {
-  bind: (
-    node: HTMLElement,
-    context: ReactPyModuleBindingContext,
-  ) => ReactPyModuleBinding;
-} & { [key: string]: any };
-
-export type ReactPyModuleBindingContext = {
-  sendMessage: ReactPyClient["sendMessage"];
-  onMessage: ReactPyClient["onMessage"];
-};
-
-export type ReactPyModuleBinding = {
-  create: (
-    type: any,
-    props?: any,
-    children?: (any | string | ReactPyVdom)[],
-  ) => any;
-  render: (element: any) => void;
-  unmount: () => void;
-};
-
-export type BindImportSource = (
-  node: HTMLElement,
-) => ImportSourceBinding | null;
-
-export type ImportSourceBinding = {
-  render: (model: ReactPyVdom) => void;
-  unmount: () => void;
-};
diff --git a/src/js/packages/@reactpy/client/tsconfig.json b/src/js/packages/@reactpy/client/tsconfig.json
deleted file mode 100644
index 2e1483e10..000000000
--- a/src/js/packages/@reactpy/client/tsconfig.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "extends": "../../../tsconfig.package.json",
-  "compilerOptions": {
-    "outDir": "dist",
-    "rootDir": "src",
-    "composite": true
-  },
-  "include": ["src"],
-  "references": [
-    {
-      "path": "../../event-to-object"
-    }
-  ]
-}
diff --git a/src/js/packages/event-to-object/package.json b/src/js/packages/event-to-object/package.json
deleted file mode 100644
index eaeb99343..000000000
--- a/src/js/packages/event-to-object/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "author": "Ryan Morshead",
-  "license": "MIT",
-  "main": "dist/index.js",
-  "types": "dist/index.d.ts",
-  "name": "event-to-object",
-  "description": "Convert native events to JSON serializable objects",
-  "type": "module",
-  "version": "0.1.2",
-  "dependencies": {
-    "json-pointer": "^0.6.2"
-  },
-  "devDependencies": {
-    "happy-dom": "^8.9.0",
-    "lodash": "^4.17.21",
-    "tsm": "^2.0.0",
-    "typescript": "^4.9.5",
-    "uvu": "^0.5.1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/reactive-python/reactpy"
-  },
-  "scripts": {
-    "build": "tsc -b",
-    "test": "npm run check:tests",
-    "check:tests": "uvu -r tsm tests",
-    "check:types": "tsc --noEmit"
-  }
-}
diff --git a/src/js/packages/event-to-object/src/events.ts b/src/js/packages/event-to-object/src/events.ts
deleted file mode 100644
index cef37ff09..000000000
--- a/src/js/packages/event-to-object/src/events.ts
+++ /dev/null
@@ -1,258 +0,0 @@
-// TODO
-type FileListObject = any;
-type DataTransferItemListObject = any;
-
-export type EventToObjectMap = {
-  event: [Event, EventObject];
-  animation: [AnimationEvent, AnimationEventObject];
-  clipboard: [ClipboardEvent, ClipboardEventObject];
-  composition: [CompositionEvent, CompositionEventObject];
-  devicemotion: [DeviceMotionEvent, DeviceMotionEventObject];
-  deviceorientation: [DeviceOrientationEvent, DeviceOrientationEventObject];
-  drag: [DragEvent, DragEventObject];
-  focus: [FocusEvent, FocusEventObject];
-  formdata: [FormDataEvent, FormDataEventObject];
-  gamepad: [GamepadEvent, GamepadEventObject];
-  input: [InputEvent, InputEventObject];
-  keyboard: [KeyboardEvent, KeyboardEventObject];
-  mouse: [MouseEvent, MouseEventObject];
-  pointer: [PointerEvent, PointerEventObject];
-  submit: [SubmitEvent, SubmitEventObject];
-  touch: [TouchEvent, TouchEventObject];
-  transition: [TransitionEvent, TransitionEventObject];
-  ui: [UIEvent, UIEventObject];
-  wheel: [WheelEvent, WheelEventObject];
-};
-
-export interface EventObject {
-  bubbles: boolean;
-  composed: boolean;
-  currentTarget: ElementObject | null;
-  defaultPrevented: boolean;
-  eventPhase: number;
-  isTrusted: boolean;
-  target: ElementObject | null;
-  timeStamp: DOMHighResTimeStamp;
-  type: string;
-  selection: SelectionObject | null;
-}
-
-export interface SubmitEventObject extends EventObject {
-  submitter: ElementObject;
-}
-
-export interface InputEventObject extends UIEventObject {
-  data: string | null;
-  dataTransfer: DataTransferObject | null;
-  isComposing: boolean;
-  inputType: string;
-}
-
-export interface GamepadEventObject extends EventObject {
-  gamepad: GamepadObject;
-}
-
-export interface GamepadObject {
-  axes: number[];
-  buttons: GamepadButtonObject[];
-  connected: boolean;
-  hapticActuators: GamepadHapticActuatorObject[];
-  id: string;
-  index: number;
-  mapping: GamepadMappingType;
-  timestamp: DOMHighResTimeStamp;
-}
-
-export interface GamepadButtonObject {
-  pressed: boolean;
-  touched: boolean;
-  value: number;
-}
-export interface GamepadHapticActuatorObject {
-  type: string;
-}
-
-export interface DragEventObject extends MouseEventObject {
-  /** Returns the DataTransfer object for the event. */
-  readonly dataTransfer: DataTransferObject | null;
-}
-
-export interface DeviceMotionEventObject extends EventObject {
-  acceleration: DeviceAccelerationObject | null;
-  accelerationIncludingGravity: DeviceAccelerationObject | null;
-  interval: number;
-  rotationRate: DeviceRotationRateObject | null;
-}
-
-export interface DeviceAccelerationObject {
-  x: number | null;
-  y: number | null;
-  z: number | null;
-}
-
-export interface DeviceRotationRateObject {
-  alpha: number | null;
-  beta: number | null;
-  gamma: number | null;
-}
-
-export interface DeviceOrientationEventObject extends EventObject {
-  absolute: boolean;
-  alpha: number | null;
-  beta: number | null;
-  gamma: number | null;
-}
-
-export interface MouseEventObject extends EventObject {
-  altKey: boolean;
-  button: number;
-  buttons: number;
-  clientX: number;
-  clientY: number;
-  ctrlKey: boolean;
-  metaKey: boolean;
-  movementX: number;
-  movementY: number;
-  offsetX: number;
-  offsetY: number;
-  pageX: number;
-  pageY: number;
-  relatedTarget: ElementObject | null;
-  screenX: number;
-  screenY: number;
-  shiftKey: boolean;
-  x: number;
-  y: number;
-}
-
-export interface FormDataEventObject extends EventObject {
-  formData: FormDataObject;
-}
-
-export type FormDataObject = [string, string | FileObject][];
-
-export interface AnimationEventObject extends EventObject {
-  animationName: string;
-  elapsedTime: number;
-  pseudoElement: string;
-}
-
-export interface ClipboardEventObject extends EventObject {
-  clipboardData: DataTransferObject | null;
-}
-
-export interface UIEventObject extends EventObject {
-  detail: number;
-}
-
-/** The DOM CompositionEvent represents events that occur due to the user indirectly
- * entering text. */
-export interface CompositionEventObject extends UIEventObject {
-  data: string;
-}
-
-export interface KeyboardEventObject extends UIEventObject {
-  altKey: boolean;
-  code: string;
-  ctrlKey: boolean;
-  isComposing: boolean;
-  key: string;
-  location: number;
-  metaKey: boolean;
-  repeat: boolean;
-  shiftKey: boolean;
-}
-
-export interface FocusEventObject extends UIEventObject {
-  relatedTarget: ElementObject | null;
-}
-
-export interface TouchEventObject extends UIEventObject {
-  altKey: boolean;
-  changedTouches: TouchObject[];
-  ctrlKey: boolean;
-  metaKey: boolean;
-  shiftKey: boolean;
-  targetTouches: TouchObject[];
-  touches: TouchObject[];
-}
-
-export interface PointerEventObject extends MouseEventObject {
-  height: number;
-  isPrimary: boolean;
-  pointerId: number;
-  pointerType: string;
-  pressure: number;
-  tangentialPressure: number;
-  tiltX: number;
-  tiltY: number;
-  twist: number;
-  width: number;
-}
-
-export interface TransitionEventObject extends EventObject {
-  elapsedTime: number;
-  propertyName: string;
-  pseudoElement: string;
-}
-
-export interface WheelEventObject extends MouseEventObject {
-  readonly deltaMode: number;
-  readonly deltaX: number;
-  readonly deltaY: number;
-  readonly deltaZ: number;
-}
-
-export interface TouchObject {
-  clientX: number;
-  clientY: number;
-  force: number;
-  identifier: number;
-  pageX: number;
-  pageY: number;
-  radiusX: number;
-  radiusY: number;
-  rotationAngle: number;
-  screenX: number;
-  screenY: number;
-  target: ElementObject;
-}
-
-export interface DataTransferObject {
-  dropEffect: "none" | "copy" | "link" | "move";
-  effectAllowed:
-    | "none"
-    | "copy"
-    | "copyLink"
-    | "copyMove"
-    | "link"
-    | "linkMove"
-    | "move"
-    | "all"
-    | "uninitialized";
-  files: FileListObject;
-  items: DataTransferItemListObject;
-  types: string[];
-}
-
-export interface SelectionObject {
-  anchorNode: ElementObject | null;
-  anchorOffset: number;
-  focusNode: ElementObject | null;
-  focusOffset: number;
-  isCollapsed: boolean;
-  rangeCount: number;
-  type: string;
-  selectedText: string;
-}
-
-export interface ElementObject {
-  value?: string;
-  textContent?: string;
-}
-
-export interface FileObject {
-  name: string;
-  size: number;
-  type: string;
-}
diff --git a/src/js/packages/event-to-object/src/index.ts b/src/js/packages/event-to-object/src/index.ts
deleted file mode 100644
index 9a40a2128..000000000
--- a/src/js/packages/event-to-object/src/index.ts
+++ /dev/null
@@ -1,427 +0,0 @@
-import * as e from "./events";
-
-export default function convert<E extends Event>(
-  event: E,
-):
-  | {
-      [K in keyof e.EventToObjectMap]: e.EventToObjectMap[K] extends [
-        E,
-        infer P,
-      ]
-        ? P
-        : never;
-    }[keyof e.EventToObjectMap]
-  | null {
-  return event.type in eventConverters
-    ? eventConverters[event.type](event)
-    : convertEvent(event);
-}
-
-const convertEvent = (event: Event): e.EventObject => ({
-  /** Returns true or false depending on how event was initialized. True if event goes
-   * through its target's ancestors in reverse tree order, and false otherwise. */
-  bubbles: event.bubbles,
-  composed: event.composed,
-  currentTarget: convertElement(event.currentTarget),
-  defaultPrevented: event.defaultPrevented,
-  eventPhase: event.eventPhase,
-  isTrusted: event.isTrusted,
-  target: convertElement(event.target),
-  timeStamp: event.timeStamp,
-  type: event.type,
-  selection: convertSelection(window.getSelection()),
-});
-
-const convertClipboardEvent = (
-  event: ClipboardEvent,
-): e.ClipboardEventObject => ({
-  ...convertEvent(event),
-  clipboardData: convertDataTransferObject(event.clipboardData),
-});
-
-const convertCompositionEvent = (
-  event: CompositionEvent,
-): e.CompositionEventObject => ({
-  ...convertUiEvent(event),
-  data: event.data,
-});
-
-const convertInputEvent = (event: InputEvent): e.InputEventObject => ({
-  ...convertUiEvent(event),
-  data: event.data,
-  inputType: event.inputType,
-  dataTransfer: convertDataTransferObject(event.dataTransfer),
-  isComposing: event.isComposing,
-});
-
-const convertKeyboardEvent = (event: KeyboardEvent): e.KeyboardEventObject => ({
-  ...convertUiEvent(event),
-  code: event.code,
-  isComposing: event.isComposing,
-  altKey: event.altKey,
-  ctrlKey: event.ctrlKey,
-  key: event.key,
-  location: event.location,
-  metaKey: event.metaKey,
-  repeat: event.repeat,
-  shiftKey: event.shiftKey,
-});
-
-const convertMouseEvent = (event: MouseEvent): e.MouseEventObject => ({
-  ...convertEvent(event),
-  altKey: event.altKey,
-  button: event.button,
-  buttons: event.buttons,
-  clientX: event.clientX,
-  clientY: event.clientY,
-  ctrlKey: event.ctrlKey,
-  metaKey: event.metaKey,
-  pageX: event.pageX,
-  pageY: event.pageY,
-  screenX: event.screenX,
-  screenY: event.screenY,
-  shiftKey: event.shiftKey,
-  movementX: event.movementX,
-  movementY: event.movementY,
-  offsetX: event.offsetX,
-  offsetY: event.offsetY,
-  x: event.x,
-  y: event.y,
-  relatedTarget: convertElement(event.relatedTarget),
-});
-
-const convertTouchEvent = (event: TouchEvent): e.TouchEventObject => ({
-  ...convertUiEvent(event),
-  altKey: event.altKey,
-  ctrlKey: event.ctrlKey,
-  metaKey: event.metaKey,
-  shiftKey: event.shiftKey,
-  touches: Array.from(event.touches).map(convertTouch),
-  changedTouches: Array.from(event.changedTouches).map(convertTouch),
-  targetTouches: Array.from(event.targetTouches).map(convertTouch),
-});
-
-const convertUiEvent = (event: UIEvent): e.UIEventObject => ({
-  ...convertEvent(event),
-  detail: event.detail,
-});
-
-const convertAnimationEvent = (
-  event: AnimationEvent,
-): e.AnimationEventObject => ({
-  ...convertEvent(event),
-  animationName: event.animationName,
-  pseudoElement: event.pseudoElement,
-  elapsedTime: event.elapsedTime,
-});
-
-const convertTransitionEvent = (
-  event: TransitionEvent,
-): e.TransitionEventObject => ({
-  ...convertEvent(event),
-  propertyName: event.propertyName,
-  pseudoElement: event.pseudoElement,
-  elapsedTime: event.elapsedTime,
-});
-
-const convertFocusEvent = (event: FocusEvent): e.FocusEventObject => ({
-  ...convertUiEvent(event),
-  relatedTarget: convertElement(event.relatedTarget),
-});
-
-const convertDeviceOrientationEvent = (
-  event: DeviceOrientationEvent,
-): e.DeviceOrientationEventObject => ({
-  ...convertEvent(event),
-  absolute: event.absolute,
-  alpha: event.alpha,
-  beta: event.beta,
-  gamma: event.gamma,
-});
-
-const convertDragEvent = (event: DragEvent): e.DragEventObject => ({
-  ...convertMouseEvent(event),
-  dataTransfer: convertDataTransferObject(event.dataTransfer),
-});
-
-const convertGamepadEvent = (event: GamepadEvent): e.GamepadEventObject => ({
-  ...convertEvent(event),
-  gamepad: convertGamepad(event.gamepad),
-});
-
-const convertPointerEvent = (event: PointerEvent): e.PointerEventObject => ({
-  ...convertMouseEvent(event),
-  pointerId: event.pointerId,
-  width: event.width,
-  height: event.height,
-  pressure: event.pressure,
-  tiltX: event.tiltX,
-  tiltY: event.tiltY,
-  pointerType: event.pointerType,
-  isPrimary: event.isPrimary,
-  tangentialPressure: event.tangentialPressure,
-  twist: event.twist,
-});
-
-const convertWheelEvent = (event: WheelEvent): e.WheelEventObject => ({
-  ...convertMouseEvent(event),
-  deltaMode: event.deltaMode,
-  deltaX: event.deltaX,
-  deltaY: event.deltaY,
-  deltaZ: event.deltaZ,
-});
-
-const convertSubmitEvent = (event: SubmitEvent): e.SubmitEventObject => ({
-  ...convertEvent(event),
-  submitter: convertElement(event.submitter),
-});
-
-const eventConverters: { [key: string]: (event: any) => any } = {
-  // animation events
-  animationcancel: convertAnimationEvent,
-  animationend: convertAnimationEvent,
-  animationiteration: convertAnimationEvent,
-  animationstart: convertAnimationEvent,
-  // input events
-  beforeinput: convertInputEvent,
-  // composition events
-  compositionend: convertCompositionEvent,
-  compositionstart: convertCompositionEvent,
-  compositionupdate: convertCompositionEvent,
-  // clipboard events
-  copy: convertClipboardEvent,
-  cut: convertClipboardEvent,
-  paste: convertClipboardEvent,
-  // device orientation events
-  deviceorientation: convertDeviceOrientationEvent,
-  // drag events
-  drag: convertDragEvent,
-  dragend: convertDragEvent,
-  dragenter: convertDragEvent,
-  dragleave: convertDragEvent,
-  dragover: convertDragEvent,
-  dragstart: convertDragEvent,
-  drop: convertDragEvent,
-  // ui events
-  error: convertUiEvent,
-  // focus events
-  blur: convertFocusEvent,
-  focus: convertFocusEvent,
-  focusin: convertFocusEvent,
-  focusout: convertFocusEvent,
-  // gamepad events
-  gamepadconnected: convertGamepadEvent,
-  gamepaddisconnected: convertGamepadEvent,
-  // keyboard events
-  keydown: convertKeyboardEvent,
-  keypress: convertKeyboardEvent,
-  keyup: convertKeyboardEvent,
-  // mouse events
-  auxclick: convertMouseEvent,
-  click: convertMouseEvent,
-  dblclick: convertMouseEvent,
-  contextmenu: convertMouseEvent,
-  mousedown: convertMouseEvent,
-  mouseenter: convertMouseEvent,
-  mouseleave: convertMouseEvent,
-  mousemove: convertMouseEvent,
-  mouseout: convertMouseEvent,
-  mouseover: convertMouseEvent,
-  mouseup: convertMouseEvent,
-  scroll: convertMouseEvent,
-  // pointer events
-  gotpointercapture: convertPointerEvent,
-  lostpointercapture: convertPointerEvent,
-  pointercancel: convertPointerEvent,
-  pointerdown: convertPointerEvent,
-  pointerenter: convertPointerEvent,
-  pointerleave: convertPointerEvent,
-  pointerlockchange: convertPointerEvent,
-  pointerlockerror: convertPointerEvent,
-  pointermove: convertPointerEvent,
-  pointerout: convertPointerEvent,
-  pointerover: convertPointerEvent,
-  pointerup: convertPointerEvent,
-  // submit events
-  submit: convertSubmitEvent,
-  // touch events
-  touchcancel: convertTouchEvent,
-  touchend: convertTouchEvent,
-  touchmove: convertTouchEvent,
-  touchstart: convertTouchEvent,
-  // transition events
-  transitioncancel: convertTransitionEvent,
-  transitionend: convertTransitionEvent,
-  transitionrun: convertTransitionEvent,
-  transitionstart: convertTransitionEvent,
-  // wheel events
-  wheel: convertWheelEvent,
-};
-
-function convertElement(element: EventTarget | HTMLElement | null): any {
-  if (!element || !("tagName" in element)) {
-    return null;
-  }
-
-  const htmlElement = element as HTMLElement;
-
-  return {
-    ...convertGenericElement(htmlElement),
-    ...(htmlElement.tagName in elementConverters
-      ? elementConverters[htmlElement.tagName](htmlElement)
-      : {}),
-  };
-}
-
-const convertGenericElement = (element: HTMLElement) => ({
-  tagName: element.tagName,
-  boundingClientRect: { ...element.getBoundingClientRect() },
-});
-
-const convertMediaElement = (element: HTMLMediaElement) => ({
-  currentTime: element.currentTime,
-  duration: element.duration,
-  ended: element.ended,
-  error: element.error,
-  seeking: element.seeking,
-  volume: element.volume,
-});
-
-const elementConverters: { [key: string]: (element: any) => any } = {
-  AUDIO: convertMediaElement,
-  BUTTON: (element: HTMLButtonElement) => ({ value: element.value }),
-  DATA: (element: HTMLDataElement) => ({ value: element.value }),
-  DATALIST: (element: HTMLDataListElement) => ({
-    options: Array.from(element.options).map(elementConverters["OPTION"]),
-  }),
-  DIALOG: (element: HTMLDialogElement) => ({
-    returnValue: element.returnValue,
-  }),
-  FIELDSET: (element: HTMLFieldSetElement) => ({
-    elements: Array.from(element.elements).map(convertElement),
-  }),
-  FORM: (element: HTMLFormElement) => ({
-    elements: Array.from(element.elements).map(convertElement),
-  }),
-  INPUT: (element: HTMLInputElement) => ({ value: element.value }),
-  METER: (element: HTMLMeterElement) => ({ value: element.value }),
-  OPTION: (element: HTMLOptionElement) => ({ value: element.value }),
-  OUTPUT: (element: HTMLOutputElement) => ({ value: element.value }),
-  PROGRESS: (element: HTMLProgressElement) => ({ value: element.value }),
-  SELECT: (element: HTMLSelectElement) => ({ value: element.value }),
-  TEXTAREA: (element: HTMLTextAreaElement) => ({ value: element.value }),
-  VIDEO: convertMediaElement,
-};
-
-const convertGamepad = (gamepad: Gamepad): e.GamepadObject => ({
-  axes: Array.from(gamepad.axes),
-  buttons: Array.from(gamepad.buttons).map(convertGamepadButton),
-  connected: gamepad.connected,
-  id: gamepad.id,
-  index: gamepad.index,
-  mapping: gamepad.mapping,
-  timestamp: gamepad.timestamp,
-  hapticActuators: Array.from(gamepad.hapticActuators).map(
-    convertGamepadHapticActuator,
-  ),
-});
-
-const convertGamepadButton = (
-  button: GamepadButton,
-): e.GamepadButtonObject => ({
-  pressed: button.pressed,
-  touched: button.touched,
-  value: button.value,
-});
-
-const convertGamepadHapticActuator = (
-  actuator: GamepadHapticActuator,
-): e.GamepadHapticActuatorObject => ({
-  type: actuator.type,
-});
-
-const convertFile = (file: File) => ({
-  lastModified: file.lastModified,
-  name: file.name,
-  size: file.size,
-  type: file.type,
-});
-
-function convertDataTransferObject(
-  dataTransfer: DataTransfer | null,
-): e.DataTransferObject | null {
-  if (!dataTransfer) {
-    return null;
-  }
-  const { dropEffect, effectAllowed, files, items, types } = dataTransfer;
-  return {
-    dropEffect,
-    effectAllowed,
-    files: Array.from(files).map(convertFile),
-    items: Array.from(items).map((item) => ({
-      kind: item.kind,
-      type: item.type,
-    })),
-    types: Array.from(types),
-  };
-}
-
-function convertSelection(
-  selection: Selection | null,
-): e.SelectionObject | null {
-  if (!selection) {
-    return null;
-  }
-  const {
-    type,
-    anchorNode,
-    anchorOffset,
-    focusNode,
-    focusOffset,
-    isCollapsed,
-    rangeCount,
-  } = selection;
-  if (type === "None") {
-    return null;
-  }
-  return {
-    type,
-    anchorNode: convertElement(anchorNode),
-    anchorOffset,
-    focusNode: convertElement(focusNode),
-    focusOffset,
-    isCollapsed,
-    rangeCount,
-    selectedText: selection.toString(),
-  };
-}
-
-function convertTouch({
-  identifier,
-  pageX,
-  pageY,
-  screenX,
-  screenY,
-  clientX,
-  clientY,
-  force,
-  radiusX,
-  radiusY,
-  rotationAngle,
-  target,
-}: Touch): e.TouchObject {
-  return {
-    identifier,
-    pageX,
-    pageY,
-    screenX,
-    screenY,
-    clientX,
-    clientY,
-    force,
-    radiusX,
-    radiusY,
-    rotationAngle,
-    target: convertElement(target),
-  };
-}
diff --git a/src/js/packages/event-to-object/tests/event-to-object.test.ts b/src/js/packages/event-to-object/tests/event-to-object.test.ts
deleted file mode 100644
index b7b8c68af..000000000
--- a/src/js/packages/event-to-object/tests/event-to-object.test.ts
+++ /dev/null
@@ -1,381 +0,0 @@
-// @ts-ignore
-import { window } from "./tooling/setup";
-import { test } from "uvu";
-import { Event } from "happy-dom";
-import { checkEventConversion } from "./tooling/check";
-import {
-  mockElementObject,
-  mockGamepad,
-  mockTouch,
-  mockTouchObject,
-} from "./tooling/mock";
-
-type SimpleTestCase<E extends Event> = {
-  types: string[];
-  description: string;
-  givenEventType: new (type: string) => E;
-  expectedConversion: any;
-  initGivenEvent?: (event: E) => void;
-};
-
-const simpleTestCases: SimpleTestCase<any>[] = [
-  {
-    types: [
-      "animationcancel",
-      "animationend",
-      "animationiteration",
-      "animationstart",
-    ],
-    description: "animation event",
-    givenEventType: window.AnimationEvent,
-    expectedConversion: {
-      animationName: "",
-      pseudoElement: "",
-      elapsedTime: 0,
-    },
-  },
-  {
-    types: ["beforeinput"],
-    description: "event",
-    givenEventType: window.InputEvent,
-    expectedConversion: {
-      detail: 0,
-      data: "",
-      inputType: "",
-      dataTransfer: null,
-      isComposing: false,
-    },
-  },
-  {
-    types: ["compositionend", "compositionstart", "compositionupdate"],
-    description: "composition event",
-    givenEventType: window.CompositionEvent,
-    expectedConversion: {
-      data: undefined,
-      detail: undefined,
-    },
-  },
-  {
-    types: ["copy", "cut", "paste"],
-    description: "clipboard event",
-    givenEventType: window.ClipboardEvent,
-    expectedConversion: { clipboardData: null },
-  },
-  {
-    types: [
-      "drag",
-      "dragend",
-      "dragenter",
-      "dragleave",
-      "dragover",
-      "dragstart",
-      "drop",
-    ],
-    description: "drag event",
-    givenEventType: window.DragEvent,
-    expectedConversion: {
-      altKey: undefined,
-      button: undefined,
-      buttons: undefined,
-      clientX: undefined,
-      clientY: undefined,
-      ctrlKey: undefined,
-      dataTransfer: null,
-      metaKey: undefined,
-      movementX: undefined,
-      movementY: undefined,
-      offsetX: undefined,
-      offsetY: undefined,
-      pageX: undefined,
-      pageY: undefined,
-      relatedTarget: null,
-      screenX: undefined,
-      screenY: undefined,
-      shiftKey: undefined,
-      x: undefined,
-      y: undefined,
-    },
-  },
-  {
-    types: ["error"],
-    description: "event",
-    givenEventType: window.ErrorEvent,
-    expectedConversion: { detail: 0 },
-  },
-  {
-    types: ["blur", "focus", "focusin", "focusout"],
-    description: "focus event",
-    givenEventType: window.FocusEvent,
-    expectedConversion: {
-      relatedTarget: null,
-      detail: 0,
-    },
-  },
-  {
-    types: ["gamepadconnected", "gamepaddisconnected"],
-    description: "gamepad event",
-    givenEventType: window.GamepadEvent,
-    expectedConversion: { gamepad: mockGamepad },
-    initGivenEvent: (event) => {
-      event.gamepad = mockGamepad;
-    },
-  },
-  {
-    types: ["keydown", "keypress", "keyup"],
-    description: "keyboard event",
-    givenEventType: window.KeyboardEvent,
-    expectedConversion: {
-      altKey: false,
-      code: "",
-      ctrlKey: false,
-      isComposing: false,
-      key: "",
-      location: 0,
-      metaKey: false,
-      repeat: false,
-      shiftKey: false,
-      detail: 0,
-    },
-  },
-  {
-    types: [
-      "click",
-      "auxclick",
-      "dblclick",
-      "mousedown",
-      "mouseenter",
-      "mouseleave",
-      "mousemove",
-      "mouseout",
-      "mouseover",
-      "mouseup",
-      "scroll",
-    ],
-    description: "mouse event",
-    givenEventType: window.MouseEvent,
-    expectedConversion: {
-      altKey: false,
-      button: 0,
-      buttons: 0,
-      clientX: 0,
-      clientY: 0,
-      ctrlKey: false,
-      metaKey: false,
-      movementX: 0,
-      movementY: 0,
-      offsetX: 0,
-      offsetY: 0,
-      pageX: 0,
-      pageY: 0,
-      relatedTarget: null,
-      screenX: 0,
-      screenY: 0,
-      shiftKey: false,
-      x: undefined,
-      y: undefined,
-    },
-  },
-  {
-    types: [
-      "auxclick",
-      "click",
-      "contextmenu",
-      "dblclick",
-      "mousedown",
-      "mouseenter",
-      "mouseleave",
-      "mousemove",
-      "mouseout",
-      "mouseover",
-      "mouseup",
-    ],
-    description: "mouse event",
-    givenEventType: window.MouseEvent,
-    expectedConversion: {
-      altKey: false,
-      button: 0,
-      buttons: 0,
-      clientX: 0,
-      clientY: 0,
-      ctrlKey: false,
-      metaKey: false,
-      movementX: 0,
-      movementY: 0,
-      offsetX: 0,
-      offsetY: 0,
-      pageX: 0,
-      pageY: 0,
-      relatedTarget: null,
-      screenX: 0,
-      screenY: 0,
-      shiftKey: false,
-      x: undefined,
-      y: undefined,
-    },
-  },
-  {
-    types: [
-      "gotpointercapture",
-      "lostpointercapture",
-      "pointercancel",
-      "pointerdown",
-      "pointerenter",
-      "pointerleave",
-      "pointerlockchange",
-      "pointerlockerror",
-      "pointermove",
-      "pointerout",
-      "pointerover",
-      "pointerup",
-    ],
-    description: "pointer event",
-    givenEventType: window.PointerEvent,
-    expectedConversion: {
-      altKey: false,
-      button: 0,
-      buttons: 0,
-      clientX: 0,
-      clientY: 0,
-      ctrlKey: false,
-      metaKey: false,
-      movementX: 0,
-      movementY: 0,
-      offsetX: 0,
-      offsetY: 0,
-      pageX: 0,
-      pageY: 0,
-      relatedTarget: null,
-      screenX: 0,
-      screenY: 0,
-      shiftKey: false,
-      x: undefined,
-      y: undefined,
-      pointerId: 0,
-      pointerType: "",
-      pressure: 0,
-      tiltX: 0,
-      tiltY: 0,
-      width: 0,
-      height: 0,
-      isPrimary: false,
-      twist: 0,
-      tangentialPressure: 0,
-    },
-  },
-  {
-    types: ["submit"],
-    description: "event",
-    givenEventType: window.Event,
-    expectedConversion: { submitter: null },
-    initGivenEvent: (event) => {
-      event.submitter = null;
-    },
-  },
-  {
-    types: ["touchcancel", "touchend", "touchmove", "touchstart"],
-    description: "touch event",
-    givenEventType: window.TouchEvent,
-    expectedConversion: {
-      altKey: undefined,
-      changedTouches: [mockTouchObject],
-      ctrlKey: undefined,
-      metaKey: undefined,
-      targetTouches: [mockTouchObject],
-      touches: [mockTouchObject],
-      detail: undefined,
-      shiftKey: undefined,
-    },
-    initGivenEvent: (event) => {
-      event.changedTouches = [mockTouch];
-      event.targetTouches = [mockTouch];
-      event.touches = [mockTouch];
-    },
-  },
-  {
-    types: [
-      "transitioncancel",
-      "transitionend",
-      "transitionrun",
-      "transitionstart",
-    ],
-    description: "transition event",
-    givenEventType: window.TransitionEvent,
-    expectedConversion: {
-      propertyName: undefined,
-      elapsedTime: undefined,
-      pseudoElement: undefined,
-    },
-  },
-  {
-    types: ["wheel"],
-    description: "wheel event",
-    givenEventType: window.WheelEvent,
-    expectedConversion: {
-      altKey: undefined,
-      button: undefined,
-      buttons: undefined,
-      clientX: undefined,
-      clientY: undefined,
-      ctrlKey: undefined,
-      deltaMode: 0,
-      deltaX: 0,
-      deltaY: 0,
-      deltaZ: 0,
-      metaKey: undefined,
-      movementX: undefined,
-      movementY: undefined,
-      offsetX: undefined,
-      offsetY: undefined,
-      pageX: 0,
-      pageY: 0,
-      relatedTarget: null,
-      screenX: undefined,
-      screenY: undefined,
-      shiftKey: undefined,
-      x: undefined,
-      y: undefined,
-    },
-  },
-];
-
-simpleTestCases.forEach((testCase) => {
-  testCase.types.forEach((type) => {
-    test(`converts ${type} ${testCase.description}`, () => {
-      const event = new testCase.givenEventType(type);
-      if (testCase.initGivenEvent) {
-        testCase.initGivenEvent(event);
-      }
-      checkEventConversion(event, testCase.expectedConversion);
-    });
-  });
-});
-
-test("adds text of current selection", () => {
-  document.body.innerHTML = `
-  <div>
-  <p id="start"><span>START</span></p>
-  <p>MIDDLE</p>
-  <p id="end"><span>END</span></p>
-  </div>
-  `;
-  const start = document.getElementById("start");
-  const end = document.getElementById("end");
-  window.getSelection()!.setBaseAndExtent(start!, 0, end!, 0);
-  checkEventConversion(new window.Event("fake"), {
-    type: "fake",
-    selection: {
-      type: "Range",
-      anchorNode: { ...mockElementObject, tagName: "P" },
-      anchorOffset: 0,
-      focusNode: { ...mockElementObject, tagName: "P" },
-      focusOffset: 0,
-      isCollapsed: false,
-      rangeCount: 1,
-      selectedText: "START\n  MIDDLE\n  ",
-    },
-    eventPhase: undefined,
-    isTrusted: undefined,
-  });
-});
-
-test.run();
diff --git a/src/js/packages/event-to-object/tests/tooling/check.ts b/src/js/packages/event-to-object/tests/tooling/check.ts
deleted file mode 100644
index 33ff5ed5b..000000000
--- a/src/js/packages/event-to-object/tests/tooling/check.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as assert from "uvu/assert";
-import { Event } from "happy-dom";
-// @ts-ignore
-import lodash from "lodash";
-import convert from "../../src/index";
-
-export function checkEventConversion(
-  givenEvent: Event,
-  expectedConversion: any,
-): void {
-  const actualSerializedEvent = convert(
-    // @ts-ignore
-    givenEvent,
-  );
-
-  if (!actualSerializedEvent) {
-    assert.equal(actualSerializedEvent, expectedConversion);
-    return;
-  }
-
-  // too hard to compare
-  assert.equal(typeof actualSerializedEvent.timeStamp, "number");
-
-  assert.equal(
-    actualSerializedEvent,
-    lodash.merge(
-      { timeStamp: actualSerializedEvent.timeStamp, type: givenEvent.type },
-      expectedConversionDefaults,
-      expectedConversion,
-    ),
-  );
-
-  // verify result is JSON serializable
-  JSON.stringify(actualSerializedEvent);
-}
-
-const expectedConversionDefaults = {
-  target: null,
-  currentTarget: null,
-  bubbles: false,
-  composed: false,
-  defaultPrevented: false,
-  eventPhase: undefined,
-  isTrusted: undefined,
-  selection: null,
-};
diff --git a/src/js/packages/event-to-object/tests/tooling/mock.ts b/src/js/packages/event-to-object/tests/tooling/mock.ts
deleted file mode 100644
index 81e506500..000000000
--- a/src/js/packages/event-to-object/tests/tooling/mock.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-export const mockBoundingRect = {
-  left: 0,
-  top: 0,
-  right: 0,
-  bottom: 0,
-  x: 0,
-  y: 0,
-  height: 0,
-  width: 0,
-};
-
-export const mockElementObject = {
-  tagName: null,
-  boundingClientRect: mockBoundingRect,
-};
-
-export const mockElement = {
-  tagName: null,
-  getBoundingClientRect: () => mockBoundingRect,
-};
-
-export const mockGamepad = {
-  id: "test",
-  index: 0,
-  connected: true,
-  mapping: "standard",
-  axes: [],
-  buttons: [
-    {
-      pressed: false,
-      touched: false,
-      value: 0,
-    },
-  ],
-  hapticActuators: [
-    {
-      type: "vibration",
-    },
-  ],
-  timestamp: undefined,
-};
-
-export const mockTouch = {
-  identifier: 0,
-  pageX: 0,
-  pageY: 0,
-  screenX: 0,
-  screenY: 0,
-  clientX: 0,
-  clientY: 0,
-  force: 0,
-  radiusX: 0,
-  radiusY: 0,
-  rotationAngle: 0,
-  target: mockElement,
-};
-
-export const mockTouchObject = {
-  ...mockTouch,
-  target: mockElementObject,
-};
diff --git a/src/js/packages/event-to-object/tests/tooling/setup.js b/src/js/packages/event-to-object/tests/tooling/setup.js
deleted file mode 100644
index 213578046..000000000
--- a/src/js/packages/event-to-object/tests/tooling/setup.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { test } from "uvu";
-import { Window } from "happy-dom";
-
-export const window = new Window();
-
-export function setup() {
-  global.window = window;
-  global.document = window.document;
-  global.navigator = window.navigator;
-  global.getComputedStyle = window.getComputedStyle;
-  global.requestAnimationFrame = null;
-}
-
-export function reset() {
-  window.document.title = "";
-  window.document.head.innerHTML = "";
-  window.document.body.innerHTML = "<main></main>";
-  window.getSelection().removeAllRanges();
-}
-
-test.before(setup);
-test.before.each(reset);
diff --git a/src/js/packages/event-to-object/tsconfig.json b/src/js/packages/event-to-object/tsconfig.json
deleted file mode 100644
index b9a031fa9..000000000
--- a/src/js/packages/event-to-object/tsconfig.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "extends": "../../tsconfig.package.json",
-  "compilerOptions": {
-    "outDir": "dist",
-    "rootDir": "src",
-    "composite": true
-  },
-  "include": ["src"]
-}
diff --git a/src/js/packages/event-to-object/tsconfig.tests.json b/src/js/packages/event-to-object/tsconfig.tests.json
deleted file mode 100644
index 33be69a56..000000000
--- a/src/js/packages/event-to-object/tsconfig.tests.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "compilerOptions": {
-    "target": "esnext",
-    "allowJs": false,
-    "skipLibCheck": false,
-    "esModuleInterop": false,
-    "allowSyntheticDefaultImports": true,
-    "strict": true,
-    "forceConsistentCasingInFileNames": true,
-    "module": "esnext",
-    "moduleResolution": "node",
-    "resolveJsonModule": true,
-    "isolatedModules": true,
-    "noEmit": true
-  }
-}
diff --git a/src/js/tsconfig.package.json b/src/js/tsconfig.package.json
deleted file mode 100644
index 9e7fe5f74..000000000
--- a/src/js/tsconfig.package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "compilerOptions": {
-    "allowJs": false,
-    "allowSyntheticDefaultImports": true,
-    "declaration": true,
-    "declarationMap": true,
-    "esModuleInterop": true,
-    "forceConsistentCasingInFileNames": true,
-    "isolatedModules": true,
-    "jsx": "react",
-    "lib": ["DOM", "DOM.Iterable", "esnext"],
-    "module": "esnext",
-    "moduleResolution": "node",
-    "noEmitOnError": true,
-    "noUnusedLocals": true,
-    "resolveJsonModule": true,
-    "skipLibCheck": false,
-    "sourceMap": true,
-    "strict": true,
-    "target": "esnext"
-  }
-}
diff --git a/src/py/reactpy/.gitignore b/src/py/reactpy/.gitignore
deleted file mode 100644
index 0499d7590..000000000
--- a/src/py/reactpy/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.coverage.*
-
-# --- Build Artifacts ---
-reactpy/_static
diff --git a/src/py/reactpy/MANIFEST.in b/src/py/reactpy/MANIFEST.in
deleted file mode 100644
index b989938fa..000000000
--- a/src/py/reactpy/MANIFEST.in
+++ /dev/null
@@ -1,3 +0,0 @@
-recursive-include src/reactpy/_client *
-recursive-include src/reactpy/web/templates *
-include src/reactpy/py.typed
diff --git a/src/py/reactpy/README.md b/src/py/reactpy/README.md
deleted file mode 100644
index 910a573a5..000000000
--- a/src/py/reactpy/README.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# <img src="https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg" align="left" height="45"/> ReactPy
-
-<p>
-    <a href="https://github.com/reactive-python/reactpy/actions">
-        <img src="https://github.com/reactive-python/reactpy/workflows/test/badge.svg?event=push">
-    </a>
-    <a href="https://pypi.org/project/reactpy/">
-        <img src="https://img.shields.io/pypi/v/reactpy.svg?label=PyPI">
-    </a>
-    <a href="https://github.com/reactive-python/reactpy/blob/main/LICENSE">
-        <img src="https://img.shields.io/badge/License-MIT-purple.svg">
-    </a>
-    <a href="https://reactpy.dev/">
-        <img src="https://img.shields.io/website?down_message=offline&label=Docs&logo=read-the-docs&logoColor=white&up_message=online&url=https%3A%2F%2Freactpy.dev%2Fdocs%2Findex.html">
-    </a>
-    <a href="https://discord.gg/uNb5P4hA9X">
-        <img src="https://img.shields.io/discord/1111078259854168116?label=Discord&logo=discord">
-    </a>
-</p>
-
----
-
-[ReactPy](https://reactpy.dev/) is a library for building user interfaces in Python without Javascript. ReactPy interfaces are made from components that look and behave similar to those found in [ReactJS](https://reactjs.org/). Designed with simplicity in mind, ReactPy can be used by those without web development experience while also being powerful enough to grow with your ambitions.
diff --git a/src/py/reactpy/pyproject.toml b/src/py/reactpy/pyproject.toml
deleted file mode 100644
index 659ddbf94..000000000
--- a/src/py/reactpy/pyproject.toml
+++ /dev/null
@@ -1,175 +0,0 @@
-[build-system]
-requires = ["hatchling", "hatch-build-scripts>=0.0.4"]
-build-backend = "hatchling.build"
-
-# --- Project --------------------------------------------------------------------------
-
-[project]
-name = "reactpy"
-dynamic = ["version"]
-description = 'Reactive user interfaces with pure Python'
-readme = "README.md"
-requires-python = ">=3.9"
-license = "MIT"
-keywords = ["react", "javascript", "reactpy", "component"]
-authors = [
-  { name = "Ryan Morshead", email = "ryan.morshead@gmail.com" },
-]
-classifiers = [
-  "Development Status :: 4 - Beta",
-  "Programming Language :: Python",
-  "Programming Language :: Python :: 3.9",
-  "Programming Language :: Python :: 3.10",
-  "Programming Language :: Python :: 3.11",
-  "Programming Language :: Python :: Implementation :: CPython",
-  "Programming Language :: Python :: Implementation :: PyPy",
-]
-dependencies = [
-  "typing-extensions >=3.10",
-  "mypy-extensions >=0.4.3",
-  "anyio >=3",
-  "jsonpatch >=1.32",
-  "fastjsonschema >=2.14.5",
-  "requests >=2",
-  "colorlog >=6",
-  "asgiref >=3",
-  "lxml >=4",
-]
-[project.optional-dependencies]
-all = ["reactpy[starlette,sanic,fastapi,flask,tornado,testing]"]
-
-starlette = [
-  "starlette >=0.13.6",
-  "uvicorn[standard] >=0.19.0",
-]
-sanic = [
-  "sanic >=21",
-  "sanic-cors",
-  "uvicorn[standard] >=0.19.0",
-]
-fastapi = [
-  "fastapi >=0.63.0",
-  "uvicorn[standard] >=0.19.0",
-]
-flask = [
-  "flask",
-  "markupsafe>=1.1.1,<2.1",
-  "flask-cors",
-  "flask-sock",
-]
-tornado = [
-  "tornado",
-]
-testing = [
-  "playwright",
-]
-
-[project.urls]
-Source = "https://github.com/reactive-python/reactpy"
-Documentation = "https://github.com/reactive-python/reactpy#readme"
-Issues = "https://github.com/reactive-python/reactpy/discussions"
-
-# --- Hatch ----------------------------------------------------------------------------
-
-[tool.hatch.version]
-path = "reactpy/__init__.py"
-
-[tool.hatch.envs.default]
-features = ["all"]
-pre-install-command = "hatch build --hooks-only"
-dependencies = [
-  "coverage[toml]>=6.5",
-  "pytest",
-  "pytest-asyncio>=0.17",
-  "pytest-mock",
-  "pytest-rerunfailures",
-  "pytest-timeout",
-  "responses",
-  "playwright",
-  # I'm not quite sure why this needs to be installed for tests with Sanic to pass
-  "sanic-testing",
-  # Used to generate model changes from layout update messages
-  "jsonpointer",
-]
-[tool.hatch.envs.default.scripts]
-test = "playwright install && pytest {args:tests}"
-test-cov = "playwright install && coverage run -m pytest {args:tests}"
-cov-report = [
-  # "- coverage combine",
-  "coverage report",
-]
-cov = [
-  "test-cov {args}",
-  "cov-report",
-]
-
-[tool.hatch.envs.default.env-vars]
-REACTPY_DEBUG_MODE="1"
-
-[tool.hatch.envs.lint]
-features = ["all"]
-dependencies = [
-  "mypy>=1.0.0",
-  "types-click",
-  "types-tornado",
-  "types-pkg-resources",
-  "types-flask",
-  "types-requests",
-]
-
-[tool.hatch.envs.lint.scripts]
-types = "mypy --strict reactpy"
-all = ["types"]
-
-[[tool.hatch.build.hooks.build-scripts.scripts]]
-work_dir = "../../js"
-out_dir = "reactpy/_static"
-commands = [
-  "npm ci",
-  "npm run build"
-]
-artifacts = [
-  "app/dist/"
-]
-
-# --- Pytest ---------------------------------------------------------------------------
-
-[tool.pytest.ini_options]
-testpaths = "tests"
-xfail_strict = true
-python_files = "*asserts.py test_*.py"
-asyncio_mode = "auto"
-
-# --- MyPy -----------------------------------------------------------------------------
-
-[tool.mypy]
-incremental = false
-ignore_missing_imports = true
-warn_unused_configs = true
-warn_redundant_casts = true
-warn_unused_ignores = true
-
-# --- Coverage -------------------------------------------------------------------------
-
-[tool.coverage.run]
-source_pkgs = ["reactpy"]
-branch = false
-parallel = false
-omit = [
-  "reactpy/__init__.py",
-]
-
-[tool.coverage.report]
-fail_under = 100
-show_missing = true
-skip_covered = true
-sort = "Name"
-exclude_lines = [
-  "no ?cov",
-  '\.\.\.',
-  "if __name__ == .__main__.:",
-  "if TYPE_CHECKING:",
-]
-omit = [
-    "reactpy/__main__.py",
-]
diff --git a/src/py/reactpy/reactpy/__init__.py b/src/py/reactpy/reactpy/__init__.py
deleted file mode 100644
index 996a984b2..000000000
--- a/src/py/reactpy/reactpy/__init__.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from reactpy import backend, config, html, logging, sample, svg, types, web, widgets
-from reactpy.backend.hooks import use_connection, use_location, use_scope
-from reactpy.backend.utils import run
-from reactpy.core import hooks
-from reactpy.core.component import component
-from reactpy.core.events import event
-from reactpy.core.hooks import (
-    create_context,
-    use_callback,
-    use_context,
-    use_debug_value,
-    use_effect,
-    use_memo,
-    use_reducer,
-    use_ref,
-    use_state,
-)
-from reactpy.core.layout import Layout
-from reactpy.core.serve import Stop
-from reactpy.core.vdom import vdom
-from reactpy.utils import Ref, html_to_vdom, vdom_to_html
-
-__author__ = "The Reactive Python Team"
-__version__ = "1.0.0"  # DO NOT MODIFY
-
-__all__ = [
-    "backend",
-    "component",
-    "config",
-    "create_context",
-    "event",
-    "hooks",
-    "html_to_vdom",
-    "html",
-    "Layout",
-    "logging",
-    "Ref",
-    "run",
-    "sample",
-    "Stop",
-    "svg",
-    "types",
-    "use_callback",
-    "use_connection",
-    "use_context",
-    "use_debug_value",
-    "use_effect",
-    "use_location",
-    "use_memo",
-    "use_reducer",
-    "use_ref",
-    "use_scope",
-    "use_state",
-    "vdom_to_html",
-    "vdom",
-    "web",
-    "widgets",
-]
diff --git a/src/py/reactpy/reactpy/__main__.py b/src/py/reactpy/reactpy/__main__.py
deleted file mode 100644
index d70ddf684..000000000
--- a/src/py/reactpy/reactpy/__main__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import click
-
-import reactpy
-from reactpy._console.rewrite_camel_case_props import rewrite_camel_case_props
-from reactpy._console.rewrite_keys import rewrite_keys
-
-
-@click.group()
-@click.version_option(reactpy.__version__, prog_name=reactpy.__name__)
-def app() -> None:
-    pass
-
-
-app.add_command(rewrite_keys)
-app.add_command(rewrite_camel_case_props)
-
-
-if __name__ == "__main__":
-    app()
diff --git a/src/py/reactpy/reactpy/_console/ast_utils.py b/src/py/reactpy/reactpy/_console/ast_utils.py
deleted file mode 100644
index 220751119..000000000
--- a/src/py/reactpy/reactpy/_console/ast_utils.py
+++ /dev/null
@@ -1,186 +0,0 @@
-from __future__ import annotations
-
-import ast
-from collections.abc import Iterator, Sequence
-from dataclasses import dataclass
-from pathlib import Path
-from textwrap import indent
-from tokenize import COMMENT as COMMENT_TOKEN
-from tokenize import generate_tokens
-from typing import Any
-
-import click
-
-from reactpy import html
-
-
-def rewrite_changed_nodes(
-    file: Path,
-    source: str,
-    tree: ast.AST,
-    changed: list[ChangedNode],
-) -> str:
-    ast.fix_missing_locations(tree)
-
-    lines = source.split("\n")
-
-    # find closest parent nodes that should be re-written
-    nodes_to_unparse: list[ast.AST] = []
-    for change in changed:
-        node_lineage = [change.node, *change.parents]
-        for i in range(len(node_lineage) - 1):
-            current_node, next_node = node_lineage[i : i + 2]
-            if (
-                not hasattr(next_node, "lineno")
-                or next_node.lineno < change.node.lineno
-                or isinstance(next_node, (ast.ClassDef, ast.FunctionDef))
-            ):
-                nodes_to_unparse.append(current_node)
-                break
-        else:  # nocov
-            msg = "Failed to change code"
-            raise RuntimeError(msg)
-
-    # check if an nodes to rewrite contain each other, pick outermost nodes
-    current_outermost_node, *sorted_nodes_to_unparse = sorted(
-        nodes_to_unparse, key=lambda n: n.lineno
-    )
-    outermost_nodes_to_unparse = [current_outermost_node]
-    for node in sorted_nodes_to_unparse:
-        if (
-            not current_outermost_node.end_lineno
-            or node.lineno > current_outermost_node.end_lineno
-        ):
-            current_outermost_node = node
-            outermost_nodes_to_unparse.append(node)
-
-    moved_comment_lines_from_end: list[int] = []
-    # now actually rewrite these nodes (in reverse to avoid changes earlier in file)
-    for node in reversed(outermost_nodes_to_unparse):
-        # make a best effort to preserve any comments that we're going to overwrite
-        comments = _find_comments(lines[node.lineno - 1 : node.end_lineno])
-
-        # there may be some content just before and after the content we're re-writing
-        before_replacement = lines[node.lineno - 1][: node.col_offset].lstrip()
-
-        after_replacement = (
-            lines[node.end_lineno - 1][node.end_col_offset :].strip()
-            if node.end_lineno is not None and node.end_col_offset is not None
-            else ""
-        )
-
-        replacement = indent(
-            before_replacement
-            + "\n".join([*comments, ast.unparse(node)])
-            + after_replacement,
-            " " * (node.col_offset - len(before_replacement)),
-        )
-
-        lines[node.lineno - 1 : node.end_lineno or node.lineno] = [replacement]
-
-        if comments:
-            moved_comment_lines_from_end.append(len(lines) - node.lineno)
-
-    for lineno_from_end in sorted(set(moved_comment_lines_from_end)):
-        click.echo(f"Moved comments to {file}:{len(lines) - lineno_from_end}")
-
-    return "\n".join(lines)
-
-
-@dataclass
-class ChangedNode:
-    node: ast.AST
-    parents: Sequence[ast.AST]
-
-
-def find_element_constructor_usages(
-    tree: ast.AST, add_props: bool = False
-) -> Iterator[ElementConstructorInfo]:
-    changed: list[Sequence[ast.AST]] = []
-    for parents, node in _walk_with_parent(tree):
-        if not (isinstance(node, ast.Call)):
-            continue
-
-        func = node.func
-        if isinstance(func, ast.Attribute) and (
-            (isinstance(func.value, ast.Name) and func.value.id == "html")
-            or (isinstance(func.value, ast.Attribute) and func.value.attr == "html")
-        ):
-            name = func.attr
-        elif isinstance(func, ast.Name):
-            name = func.id
-        else:
-            continue
-
-        maybe_attr_dict_node: Any | None = None
-
-        if name == "vdom":
-            if len(node.args) == 0:
-                continue
-            elif len(node.args) == 1:
-                maybe_attr_dict_node = ast.Dict(keys=[], values=[])
-                if add_props:
-                    node.args.append(maybe_attr_dict_node)
-                else:
-                    continue
-            elif isinstance(node.args[1], (ast.Constant, ast.JoinedStr)):
-                maybe_attr_dict_node = ast.Dict(keys=[], values=[])
-                if add_props:
-                    node.args.insert(1, maybe_attr_dict_node)
-                else:
-                    continue
-            elif len(node.args) >= 2:  # noqa: PLR2004
-                maybe_attr_dict_node = node.args[1]
-        elif hasattr(html, name):
-            if len(node.args) == 0:
-                maybe_attr_dict_node = ast.Dict(keys=[], values=[])
-                if add_props:
-                    node.args.append(maybe_attr_dict_node)
-                else:
-                    continue
-            elif isinstance(node.args[0], (ast.Constant, ast.JoinedStr)):
-                maybe_attr_dict_node = ast.Dict(keys=[], values=[])
-                if add_props:
-                    node.args.insert(0, maybe_attr_dict_node)
-                else:
-                    continue
-            else:
-                maybe_attr_dict_node = node.args[0]
-
-        if not maybe_attr_dict_node:
-            continue
-
-        if isinstance(maybe_attr_dict_node, ast.Dict) or (
-            isinstance(maybe_attr_dict_node, ast.Call)
-            and isinstance(maybe_attr_dict_node.func, ast.Name)
-            and maybe_attr_dict_node.func.id == "dict"
-            and isinstance(maybe_attr_dict_node.func.ctx, ast.Load)
-        ):
-            yield ElementConstructorInfo(node, maybe_attr_dict_node, parents)
-
-    return changed
-
-
-@dataclass
-class ElementConstructorInfo:
-    call: ast.Call
-    props: ast.Dict | ast.Call
-    parents: Sequence[ast.AST]
-
-
-def _find_comments(lines: list[str]) -> list[str]:
-    iter_lines = iter(lines)
-    return [
-        token
-        for token_type, token, _, _, _ in generate_tokens(lambda: next(iter_lines))
-        if token_type == COMMENT_TOKEN
-    ]
-
-
-def _walk_with_parent(
-    node: ast.AST, parents: tuple[ast.AST, ...] = ()
-) -> Iterator[tuple[tuple[ast.AST, ...], ast.AST]]:
-    parents = (node, *parents)
-    for child in ast.iter_child_nodes(node):
-        yield parents, child
-        yield from _walk_with_parent(child, parents)
diff --git a/src/py/reactpy/reactpy/_console/rewrite_camel_case_props.py b/src/py/reactpy/reactpy/_console/rewrite_camel_case_props.py
deleted file mode 100644
index e5d1860c2..000000000
--- a/src/py/reactpy/reactpy/_console/rewrite_camel_case_props.py
+++ /dev/null
@@ -1,113 +0,0 @@
-from __future__ import annotations
-
-import ast
-import re
-import sys
-from copy import copy
-from keyword import kwlist
-from pathlib import Path
-from typing import Callable
-
-import click
-
-from reactpy._console.ast_utils import (
-    ChangedNode,
-    find_element_constructor_usages,
-    rewrite_changed_nodes,
-)
-
-CAMEL_CASE_SUB_PATTERN = re.compile(r"(?<!^)(?=[A-Z])")
-
-
-@click.command()
-@click.argument("paths", nargs=-1, type=click.Path(exists=True))
-def rewrite_camel_case_props(paths: list[str]) -> None:
-    """Rewrite camelCase props to snake_case"""
-    if sys.version_info < (3, 9):  # nocov
-        msg = "This command requires Python>=3.9"
-        raise RuntimeError(msg)
-
-    for p in map(Path, paths):
-        for f in [p] if p.is_file() else p.rglob("*.py"):
-            result = generate_rewrite(file=f, source=f.read_text())
-            if result is not None:
-                f.write_text(result)
-
-
-def generate_rewrite(file: Path, source: str) -> str | None:
-    tree = ast.parse(source)
-
-    changed = find_nodes_to_change(tree)
-    if not changed:
-        return None
-
-    new = rewrite_changed_nodes(file, source, tree, changed)
-    return new
-
-
-def find_nodes_to_change(tree: ast.AST) -> list[ChangedNode]:
-    changed: list[ChangedNode] = []
-    for el_info in find_element_constructor_usages(tree):
-        if _rewrite_props(el_info.props, _construct_prop_item):
-            changed.append(ChangedNode(el_info.call, el_info.parents))
-    return changed
-
-
-def conv_attr_name(name: str) -> str:
-    new_name = CAMEL_CASE_SUB_PATTERN.sub("_", name).lower()
-    return f"{new_name}_" if new_name in kwlist else new_name
-
-
-def _construct_prop_item(key: str, value: ast.expr) -> tuple[str, ast.expr]:
-    if key == "style" and isinstance(value, (ast.Dict, ast.Call)):
-        new_value = copy(value)
-        if _rewrite_props(
-            new_value,
-            lambda k, v: (
-                (k, v)
-                # avoid infinite recursion
-                if k == "style"
-                else _construct_prop_item(k, v)
-            ),
-        ):
-            value = new_value
-    else:
-        key = conv_attr_name(key)
-    return key, value
-
-
-def _rewrite_props(
-    props_node: ast.Dict | ast.Call,
-    constructor: Callable[[str, ast.expr], tuple[str, ast.expr]],
-) -> bool:
-    if isinstance(props_node, ast.Dict):
-        did_change = False
-        keys: list[ast.expr | None] = []
-        values: list[ast.expr] = []
-        for k, v in zip(props_node.keys, props_node.values):
-            if isinstance(k, ast.Constant) and isinstance(k.value, str):
-                k_value, new_v = constructor(k.value, v)
-                if k_value != k.value or new_v is not v:
-                    did_change = True
-                k = ast.Constant(value=k_value)
-                v = new_v
-            keys.append(k)
-            values.append(v)
-        if not did_change:
-            return False
-        props_node.keys = keys
-        props_node.values = values
-    else:
-        did_change = False
-        keywords: list[ast.keyword] = []
-        for kw in props_node.keywords:
-            if kw.arg is not None:
-                kw_arg, kw_value = constructor(kw.arg, kw.value)
-                if kw_arg != kw.arg or kw_value is not kw.value:
-                    did_change = True
-                kw = ast.keyword(arg=kw_arg, value=kw_value)
-            keywords.append(kw)
-        if not did_change:
-            return False
-        props_node.keywords = keywords
-    return True
diff --git a/src/py/reactpy/reactpy/_console/rewrite_keys.py b/src/py/reactpy/reactpy/_console/rewrite_keys.py
deleted file mode 100644
index 64ed42f33..000000000
--- a/src/py/reactpy/reactpy/_console/rewrite_keys.py
+++ /dev/null
@@ -1,112 +0,0 @@
-from __future__ import annotations
-
-import ast
-import sys
-from pathlib import Path
-
-import click
-
-from reactpy import html
-from reactpy._console.ast_utils import (
-    ChangedNode,
-    find_element_constructor_usages,
-    rewrite_changed_nodes,
-)
-
-
-@click.command()
-@click.argument("paths", nargs=-1, type=click.Path(exists=True))
-def rewrite_keys(paths: list[str]) -> None:
-    """Rewrite files under the given paths using the new html element API.
-
-    The old API required users to pass a dictionary of attributes to html element
-    constructor functions. For example:
-
-    >>> html.div({"className": "x"}, "y")
-    {"tagName": "div", "attributes": {"className": "x"}, "children": ["y"]}
-
-    The latest API though allows for attributes to be passed as snake_cased keyword
-    arguments instead. The above example would be rewritten as:
-
-    >>> html.div("y", class_name="x")
-    {"tagName": "div", "attributes": {"class_name": "x"}, "children": ["y"]}
-
-    All snake_case attributes are converted to camelCase by the client where necessary.
-
-    ----- Notes -----
-
-    While this command does it's best to preserve as much of the original code as
-    possible, there are inevitably some limitations in doing this. As a result, we
-    recommend running your code formatter like Black against your code after executing
-    this command.
-
-    Additionally, We are unable to preserve the location of comments that lie within any
-    rewritten code. This command will place the comments in the code it plans to rewrite
-    just above its changes. As such it requires manual intervention to put those
-    comments back in their original location.
-    """
-    if sys.version_info < (3, 9):  # nocov
-        msg = "This command requires Python>=3.9"
-        raise RuntimeError(msg)
-
-    for p in map(Path, paths):
-        for f in [p] if p.is_file() else p.rglob("*.py"):
-            result = generate_rewrite(file=f, source=f.read_text())
-            if result is not None:
-                f.write_text(result)
-
-
-def generate_rewrite(file: Path, source: str) -> str | None:
-    tree = ast.parse(source)
-
-    changed = find_nodes_to_change(tree)
-    if not changed:
-        log_could_not_rewrite(file, tree)
-        return None
-
-    new = rewrite_changed_nodes(file, source, tree, changed)
-    log_could_not_rewrite(file, ast.parse(new))
-
-    return new
-
-
-def find_nodes_to_change(tree: ast.AST) -> list[ChangedNode]:
-    changed: list[ChangedNode] = []
-    for el_info in find_element_constructor_usages(tree, add_props=True):
-        for kw in list(el_info.call.keywords):
-            if kw.arg == "key":
-                break
-        else:
-            continue
-
-        if isinstance(el_info.props, ast.Dict):
-            el_info.props.keys.append(ast.Constant("key"))
-            el_info.props.values.append(kw.value)
-        else:
-            el_info.props.keywords.append(ast.keyword(arg="key", value=kw.value))
-
-        el_info.call.keywords.remove(kw)
-        changed.append(ChangedNode(el_info.call, el_info.parents))
-
-    return changed
-
-
-def log_could_not_rewrite(file: Path, tree: ast.AST) -> None:
-    for node in ast.walk(tree):
-        if not (isinstance(node, ast.Call) and node.keywords):
-            continue
-
-        func = node.func
-        if isinstance(func, ast.Attribute):
-            name = func.attr
-        elif isinstance(func, ast.Name):
-            name = func.id
-        else:
-            continue
-
-        if (
-            name == "vdom"
-            or hasattr(html, name)
-            and any(kw.arg == "key" for kw in node.keywords)
-        ):
-            click.echo(f"Unable to rewrite usage at {file}:{node.lineno}")
diff --git a/src/py/reactpy/reactpy/_option.py b/src/py/reactpy/reactpy/_option.py
deleted file mode 100644
index 1421f33a3..000000000
--- a/src/py/reactpy/reactpy/_option.py
+++ /dev/null
@@ -1,133 +0,0 @@
-from __future__ import annotations
-
-import os
-from logging import getLogger
-from typing import Any, Callable, Generic, TypeVar, cast
-
-from reactpy._warnings import warn
-
-_O = TypeVar("_O")
-logger = getLogger(__name__)
-
-
-class Option(Generic[_O]):
-    """An option that can be set using an environment variable of the same name"""
-
-    def __init__(
-        self,
-        name: str,
-        default: _O | Option[_O],
-        mutable: bool = True,
-        validator: Callable[[Any], _O] = lambda x: cast(_O, x),
-    ) -> None:
-        self._name = name
-        self._mutable = mutable
-        self._validator = validator
-        self._subscribers: list[Callable[[_O], None]] = []
-
-        if name in os.environ:
-            self._current = validator(os.environ[name])
-
-        self._default: _O
-        if isinstance(default, Option):
-            self._default = default.default
-            default.subscribe(lambda value: setattr(self, "_default", value))
-        else:
-            self._default = default
-
-        logger.debug(f"{self._name}={self.current}")
-
-    @property
-    def name(self) -> str:
-        """The name of this option (used to load environment variables)"""
-        return self._name
-
-    @property
-    def mutable(self) -> bool:
-        """Whether this option can be modified after being loaded"""
-        return self._mutable
-
-    @property
-    def default(self) -> _O:
-        """This option's default value"""
-        return self._default
-
-    @property
-    def current(self) -> _O:
-        try:
-            return self._current
-        except AttributeError:
-            return self._default
-
-    @current.setter
-    def current(self, new: _O) -> None:
-        self.set_current(new)
-
-    def subscribe(self, handler: Callable[[_O], None]) -> Callable[[_O], None]:
-        """Register a callback that will be triggered when this option changes"""
-        if not self.mutable:
-            msg = "Immutable options cannot be subscribed to."
-            raise TypeError(msg)
-        self._subscribers.append(handler)
-        handler(self.current)
-        return handler
-
-    def is_set(self) -> bool:
-        """Whether this option has a value other than its default."""
-        return hasattr(self, "_current")
-
-    def set_current(self, new: Any) -> None:
-        """Set the value of this option
-
-        Raises a ``TypeError`` if this option is not :attr:`Option.mutable`.
-        """
-        if not self._mutable:
-            msg = f"{self} cannot be modified after initial load"
-            raise TypeError(msg)
-        old = self.current
-        new = self._current = self._validator(new)
-        logger.debug(f"{self._name}={self._current}")
-        if new != old:
-            for sub_func in self._subscribers:
-                sub_func(new)
-
-    def set_default(self, new: _O) -> _O:
-        """Set the value of this option if not :meth:`Option.is_set`
-
-        Returns the current value (a la :meth:`dict.set_default`)
-        """
-        if not self.is_set():
-            self.set_current(new)
-        return self._current
-
-    def reload(self) -> None:
-        """Reload this option from its environment variable"""
-        self.set_current(os.environ.get(self._name, self._default))
-
-    def unset(self) -> None:
-        """Remove the current value, the default will be used until it is set again."""
-        if not self._mutable:
-            msg = f"{self} cannot be modified after initial load"
-            raise TypeError(msg)
-        old = self.current
-        delattr(self, "_current")
-        if self.current != old:
-            for sub_func in self._subscribers:
-                sub_func(self.current)
-
-    def __repr__(self) -> str:
-        return f"Option({self._name}={self.current!r})"
-
-
-class DeprecatedOption(Option[_O]):  # nocov
-    def __init__(self, message: str, *args: Any, **kwargs: Any) -> None:
-        self._deprecation_message = message
-        super().__init__(*args, **kwargs)
-
-    @Option.current.getter  # type: ignore
-    def current(self) -> _O:
-        warn(
-            self._deprecation_message,
-            DeprecationWarning,
-        )
-        return super().current
diff --git a/src/py/reactpy/reactpy/_warnings.py b/src/py/reactpy/reactpy/_warnings.py
deleted file mode 100644
index c4520604d..000000000
--- a/src/py/reactpy/reactpy/_warnings.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from collections.abc import Iterator
-from functools import wraps
-from inspect import currentframe
-from types import FrameType
-from typing import TYPE_CHECKING, Any
-from warnings import warn as _warn
-
-
-@wraps(_warn)
-def warn(*args: Any, **kwargs: Any) -> Any:
-    # warn at call site outside of ReactPy
-    _warn(*args, stacklevel=_frame_depth_in_module() + 1, **kwargs)  # type: ignore
-
-
-if TYPE_CHECKING:
-    warn = _warn  # noqa: F811
-
-
-def _frame_depth_in_module() -> int:
-    depth = 0
-    for frame in _iter_frames(2):
-        module_name = frame.f_globals.get("__name__")
-        if not module_name or not module_name.startswith("reactpy."):
-            break
-        depth += 1
-    return depth
-
-
-def _iter_frames(index: int = 1) -> Iterator[FrameType]:
-    frame = currentframe()
-    while frame is not None:
-        if index == 0:
-            yield frame
-        else:
-            index -= 1
-        frame = frame.f_back
diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/reactpy/backend/_common.py b/src/py/reactpy/reactpy/backend/_common.py
deleted file mode 100644
index 80b4eeee1..000000000
--- a/src/py/reactpy/reactpy/backend/_common.py
+++ /dev/null
@@ -1,146 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import os
-from collections.abc import Awaitable, Sequence
-from dataclasses import dataclass
-from pathlib import Path, PurePosixPath
-from typing import TYPE_CHECKING, Any, cast
-
-from reactpy import __file__ as _reactpy_file_path
-from reactpy import html
-from reactpy.config import REACTPY_WEB_MODULES_DIR
-from reactpy.core.types import VdomDict
-from reactpy.utils import vdom_to_html
-
-if TYPE_CHECKING:
-    from asgiref.typing import ASGIApplication
-
-PATH_PREFIX = PurePosixPath("/_reactpy")
-MODULES_PATH = PATH_PREFIX / "modules"
-ASSETS_PATH = PATH_PREFIX / "assets"
-STREAM_PATH = PATH_PREFIX / "stream"
-
-CLIENT_BUILD_DIR = Path(_reactpy_file_path).parent / "_static" / "app" / "dist"
-
-try:
-    import uvicorn
-except ImportError:  # nocov
-    pass
-else:
-
-    async def serve_development_asgi(
-        app: ASGIApplication | Any,
-        host: str,
-        port: int,
-        started: asyncio.Event | None,
-    ) -> None:
-        """Run a development server for an ASGI application"""
-        server = uvicorn.Server(
-            uvicorn.Config(
-                app,
-                host=host,
-                port=port,
-                loop="asyncio",
-                reload=True,
-            )
-        )
-        server.config.setup_event_loop()
-        coros: list[Awaitable[Any]] = [server.serve()]
-
-        # If a started event is provided, then use it signal based on `server.started`
-        if started:
-            coros.append(_check_if_started(server, started))
-
-        try:
-            await asyncio.gather(*coros)
-        finally:
-            # Since we aren't using the uvicorn's `run()` API, we can't guarantee uvicorn's
-            # order of operations. So we need to make sure `shutdown()` always has an initialized
-            # list of `self.servers` to use.
-            if not hasattr(server, "servers"):  # nocov
-                server.servers = []
-            await asyncio.wait_for(server.shutdown(), timeout=3)
-
-
-async def _check_if_started(server: uvicorn.Server, started: asyncio.Event) -> None:
-    while not server.started:
-        await asyncio.sleep(0.2)
-    started.set()
-
-
-def safe_client_build_dir_path(path: str) -> Path:
-    """Prevent path traversal out of :data:`CLIENT_BUILD_DIR`"""
-    return traversal_safe_path(
-        CLIENT_BUILD_DIR,
-        *("index.html" if path in ("", "/") else path).split("/"),
-    )
-
-
-def safe_web_modules_dir_path(path: str) -> Path:
-    """Prevent path traversal out of :data:`reactpy.config.REACTPY_WEB_MODULES_DIR`"""
-    return traversal_safe_path(REACTPY_WEB_MODULES_DIR.current, *path.split("/"))
-
-
-def traversal_safe_path(root: str | Path, *unsafe: str | Path) -> Path:
-    """Raise a ``ValueError`` if the ``unsafe`` path resolves outside the root dir."""
-    root = os.path.abspath(root)
-
-    # Resolve relative paths but not symlinks - symlinks should be ok since their
-    # presence and where they point is under the control of the developer.
-    path = os.path.abspath(os.path.join(root, *unsafe))
-
-    if os.path.commonprefix([root, path]) != root:
-        # If the common prefix is not root directory we resolved outside the root dir
-        msg = "Unsafe path"
-        raise ValueError(msg)
-
-    return Path(path)
-
-
-def read_client_index_html(options: CommonOptions) -> str:
-    return (
-        (CLIENT_BUILD_DIR / "index.html")
-        .read_text()
-        .format(__head__=vdom_head_elements_to_html(options.head))
-    )
-
-
-def vdom_head_elements_to_html(head: Sequence[VdomDict] | VdomDict | str) -> str:
-    if isinstance(head, str):
-        return head
-    elif isinstance(head, dict):
-        if head.get("tagName") == "head":
-            head = cast(VdomDict, {**head, "tagName": ""})
-        return vdom_to_html(head)
-    else:
-        return vdom_to_html(html._(head))
-
-
-@dataclass
-class CommonOptions:
-    """Options for ReactPy's built-in backed server implementations"""
-
-    head: Sequence[VdomDict] | VdomDict | str = (
-        html.title("ReactPy"),
-        html.link(
-            {
-                "rel": "icon",
-                "href": "/_reactpy/assets/reactpy-logo.ico",
-                "type": "image/x-icon",
-            }
-        ),
-    )
-    """Add elements to the ``<head>`` of the application.
-
-    For example, this can be used to customize the title of the page, link extra
-    scripts, or load stylesheets.
-    """
-
-    url_prefix: str = ""
-    """The URL prefix where ReactPy resources will be served from"""
-
-    def __post_init__(self) -> None:
-        if self.url_prefix and not self.url_prefix.startswith("/"):
-            msg = "Expected 'url_prefix' to start with '/'"
-            raise ValueError(msg)
diff --git a/src/py/reactpy/reactpy/backend/default.py b/src/py/reactpy/reactpy/backend/default.py
deleted file mode 100644
index 4ca192c1c..000000000
--- a/src/py/reactpy/reactpy/backend/default.py
+++ /dev/null
@@ -1,72 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-from logging import getLogger
-from sys import exc_info
-from typing import Any, NoReturn
-
-from reactpy.backend.types import BackendImplementation
-from reactpy.backend.utils import SUPPORTED_PACKAGES, all_implementations
-from reactpy.types import RootComponentConstructor
-
-logger = getLogger(__name__)
-
-
-def configure(
-    app: Any, component: RootComponentConstructor, options: None = None
-) -> None:
-    """Configure the given app instance to display the given component"""
-    if options is not None:  # nocov
-        msg = "Default implementation cannot be configured with options"
-        raise ValueError(msg)
-    return _default_implementation().configure(app, component)
-
-
-def create_development_app() -> Any:
-    """Create an application instance for development purposes"""
-    return _default_implementation().create_development_app()
-
-
-def Options(*args: Any, **kwargs: Any) -> NoReturn:  # nocov
-    """Create configuration options"""
-    msg = "Default implementation has no options."
-    raise ValueError(msg)
-
-
-async def serve_development_app(
-    app: Any,
-    host: str,
-    port: int,
-    started: asyncio.Event | None = None,
-) -> None:
-    """Run an application using a development server"""
-    return await _default_implementation().serve_development_app(
-        app, host, port, started
-    )
-
-
-_DEFAULT_IMPLEMENTATION: BackendImplementation[Any] | None = None
-
-
-def _default_implementation() -> BackendImplementation[Any]:
-    """Get the first available server implementation"""
-    global _DEFAULT_IMPLEMENTATION  # noqa: PLW0603
-
-    if _DEFAULT_IMPLEMENTATION is not None:
-        return _DEFAULT_IMPLEMENTATION
-
-    try:
-        implementation = next(all_implementations())
-    except StopIteration:  # nocov
-        logger.debug("Backend implementation import failed", exc_info=exc_info())
-        supported_backends = ", ".join(SUPPORTED_PACKAGES)
-        msg = (
-            "It seems you haven't installed a backend. To resolve this issue, "
-            "you can install a backend by running:\n\n"
-            '\033[1mpip install "reactpy[starlette]"\033[0m\n\n'
-            f"Other supported backends include: {supported_backends}."
-        )
-        raise RuntimeError(msg) from None
-    else:
-        _DEFAULT_IMPLEMENTATION = implementation
-        return implementation
diff --git a/src/py/reactpy/reactpy/backend/fastapi.py b/src/py/reactpy/reactpy/backend/fastapi.py
deleted file mode 100644
index 575fce1fe..000000000
--- a/src/py/reactpy/reactpy/backend/fastapi.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from __future__ import annotations
-
-from fastapi import FastAPI
-
-from reactpy.backend import starlette
-
-serve_development_app = starlette.serve_development_app
-"""Alias for :func:`reactpy.backend.starlette.serve_development_app`"""
-
-use_connection = starlette.use_connection
-"""Alias for :func:`reactpy.backend.starlette.use_location`"""
-
-use_websocket = starlette.use_websocket
-"""Alias for :func:`reactpy.backend.starlette.use_websocket`"""
-
-Options = starlette.Options
-"""Alias for :class:`reactpy.backend.starlette.Options`"""
-
-configure = starlette.configure
-"""Alias for :class:`reactpy.backend.starlette.configure`"""
-
-
-def create_development_app() -> FastAPI:
-    """Create a development ``FastAPI`` application instance."""
-    return FastAPI(debug=True)
diff --git a/src/py/reactpy/reactpy/backend/flask.py b/src/py/reactpy/reactpy/backend/flask.py
deleted file mode 100644
index 46aed3c46..000000000
--- a/src/py/reactpy/reactpy/backend/flask.py
+++ /dev/null
@@ -1,298 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import json
-import logging
-import os
-from asyncio import Queue as AsyncQueue
-from dataclasses import dataclass
-from queue import Queue as ThreadQueue
-from threading import Event as ThreadEvent
-from threading import Thread
-from typing import Any, Callable, NamedTuple, NoReturn, cast
-
-from flask import (
-    Blueprint,
-    Flask,
-    Request,
-    copy_current_request_context,
-    request,
-    send_file,
-)
-from flask_cors import CORS
-from flask_sock import Sock
-from simple_websocket import Server as WebSocket
-from werkzeug.serving import BaseWSGIServer, make_server
-
-import reactpy
-from reactpy.backend._common import (
-    ASSETS_PATH,
-    MODULES_PATH,
-    PATH_PREFIX,
-    STREAM_PATH,
-    CommonOptions,
-    read_client_index_html,
-    safe_client_build_dir_path,
-    safe_web_modules_dir_path,
-)
-from reactpy.backend.hooks import ConnectionContext
-from reactpy.backend.hooks import use_connection as _use_connection
-from reactpy.backend.types import Connection, Location
-from reactpy.core.serve import serve_layout
-from reactpy.core.types import ComponentType, RootComponentConstructor
-from reactpy.utils import Ref
-
-logger = logging.getLogger(__name__)
-
-
-def configure(
-    app: Flask, component: RootComponentConstructor, options: Options | None = None
-) -> None:
-    """Configure the necessary ReactPy routes on the given app.
-
-    Parameters:
-        app: An application instance
-        component: A component constructor
-        options: Options for configuring server behavior
-    """
-    options = options or Options()
-
-    api_bp = Blueprint(f"reactpy_api_{id(app)}", __name__, url_prefix=str(PATH_PREFIX))
-    spa_bp = Blueprint(
-        f"reactpy_spa_{id(app)}", __name__, url_prefix=options.url_prefix
-    )
-
-    _setup_single_view_dispatcher_route(api_bp, options, component)
-    _setup_common_routes(api_bp, spa_bp, options)
-
-    app.register_blueprint(api_bp)
-    app.register_blueprint(spa_bp)
-
-
-def create_development_app() -> Flask:
-    """Create an application instance for development purposes"""
-    os.environ["FLASK_DEBUG"] = "true"
-    app = Flask(__name__)
-    return app
-
-
-async def serve_development_app(
-    app: Flask,
-    host: str,
-    port: int,
-    started: asyncio.Event | None = None,
-) -> None:
-    """Run an application using a development server"""
-    loop = asyncio.get_running_loop()
-    stopped = asyncio.Event()
-
-    server: Ref[BaseWSGIServer] = Ref()
-
-    def run_server() -> None:
-        server.current = make_server(host, port, app, threaded=True)
-        if started:
-            loop.call_soon_threadsafe(started.set)
-        try:
-            server.current.serve_forever()  # type: ignore
-        finally:
-            loop.call_soon_threadsafe(stopped.set)
-
-    thread = Thread(target=run_server, daemon=True)
-    thread.start()
-
-    if started:
-        await started.wait()
-
-    try:
-        await stopped.wait()
-    finally:
-        # we may have exited because this task was cancelled
-        server.current.shutdown()
-        # the thread should eventually join
-        thread.join(timeout=3)
-        # just double check it happened
-        if thread.is_alive():  # nocov
-            msg = "Failed to shutdown server."
-            raise RuntimeError(msg)
-
-
-def use_websocket() -> WebSocket:
-    """A handle to the current websocket"""
-    return use_connection().carrier.websocket
-
-
-def use_request() -> Request:
-    """Get the current ``Request``"""
-    return use_connection().carrier.request
-
-
-def use_connection() -> Connection[_FlaskCarrier]:
-    """Get the current :class:`Connection`"""
-    conn = _use_connection()
-    if not isinstance(conn.carrier, _FlaskCarrier):  # nocov
-        msg = f"Connection has unexpected carrier {conn.carrier}. Are you running with a Flask server?"
-        raise TypeError(msg)
-    return conn
-
-
-@dataclass
-class Options(CommonOptions):
-    """Render server config for :func:`reactpy.backend.flask.configure`"""
-
-    cors: bool | dict[str, Any] = False
-    """Enable or configure Cross Origin Resource Sharing (CORS)
-
-    For more information see docs for ``flask_cors.CORS``
-    """
-
-
-def _setup_common_routes(
-    api_blueprint: Blueprint,
-    spa_blueprint: Blueprint,
-    options: Options,
-) -> None:
-    cors_options = options.cors
-    if cors_options:  # nocov
-        cors_params = cors_options if isinstance(cors_options, dict) else {}
-        CORS(api_blueprint, **cors_params)
-
-    @api_blueprint.route(f"/{ASSETS_PATH.name}/<path:path>")
-    def send_assets_dir(path: str = "") -> Any:
-        return send_file(safe_client_build_dir_path(f"assets/{path}"))
-
-    @api_blueprint.route(f"/{MODULES_PATH.name}/<path:path>")
-    def send_modules_dir(path: str = "") -> Any:
-        return send_file(safe_web_modules_dir_path(path))
-
-    index_html = read_client_index_html(options)
-
-    @spa_blueprint.route("/")
-    @spa_blueprint.route("/<path:_>")
-    def send_client_dir(_: str = "") -> Any:
-        return index_html
-
-
-def _setup_single_view_dispatcher_route(
-    api_blueprint: Blueprint, options: Options, constructor: RootComponentConstructor
-) -> None:
-    sock = Sock(api_blueprint)
-
-    def model_stream(ws: WebSocket, path: str = "") -> None:
-        def send(value: Any) -> None:
-            ws.send(json.dumps(value))
-
-        def recv() -> Any:
-            return json.loads(ws.receive())
-
-        _dispatch_in_thread(
-            ws,
-            # remove any url prefix from path
-            path[len(options.url_prefix) :],
-            constructor(),
-            send,
-            recv,
-        )
-
-    sock.route(STREAM_PATH.name, endpoint="without_path")(model_stream)
-    sock.route(f"{STREAM_PATH.name}/<path:path>", endpoint="with_path")(model_stream)
-
-
-def _dispatch_in_thread(
-    websocket: WebSocket,
-    path: str,
-    component: ComponentType,
-    send: Callable[[Any], None],
-    recv: Callable[[], Any | None],
-) -> NoReturn:
-    dispatch_thread_info_created = ThreadEvent()
-    dispatch_thread_info_ref: reactpy.Ref[_DispatcherThreadInfo | None] = reactpy.Ref(
-        None
-    )
-
-    @copy_current_request_context
-    def run_dispatcher() -> None:
-        loop = asyncio.new_event_loop()
-        asyncio.set_event_loop(loop)
-
-        thread_send_queue: ThreadQueue[Any] = ThreadQueue()
-        async_recv_queue: AsyncQueue[Any] = AsyncQueue()
-
-        async def send_coro(value: Any) -> None:
-            thread_send_queue.put(value)
-
-        async def main() -> None:
-            search = request.query_string.decode()
-            await serve_layout(
-                reactpy.Layout(
-                    ConnectionContext(
-                        component,
-                        value=Connection(
-                            scope=request.environ,
-                            location=Location(
-                                pathname=f"/{path}",
-                                search=f"?{search}" if search else "",
-                            ),
-                            carrier=_FlaskCarrier(request, websocket),
-                        ),
-                    ),
-                ),
-                send_coro,
-                async_recv_queue.get,
-            )
-
-        main_future = asyncio.ensure_future(main(), loop=loop)
-
-        dispatch_thread_info_ref.current = _DispatcherThreadInfo(
-            dispatch_loop=loop,
-            dispatch_future=main_future,
-            thread_send_queue=thread_send_queue,
-            async_recv_queue=async_recv_queue,
-        )
-        dispatch_thread_info_created.set()
-
-        loop.run_until_complete(main_future)
-
-    Thread(target=run_dispatcher, daemon=True).start()
-
-    dispatch_thread_info_created.wait()
-    dispatch_thread_info = cast(_DispatcherThreadInfo, dispatch_thread_info_ref.current)
-
-    if dispatch_thread_info is None:
-        raise RuntimeError("Failed to create dispatcher thread")  # nocov
-
-    stop = ThreadEvent()
-
-    def run_send() -> None:
-        while not stop.is_set():
-            send(dispatch_thread_info.thread_send_queue.get())
-
-    Thread(target=run_send, daemon=True).start()
-
-    try:
-        while True:
-            value = recv()
-            dispatch_thread_info.dispatch_loop.call_soon_threadsafe(
-                dispatch_thread_info.async_recv_queue.put_nowait, value
-            )
-    finally:  # nocov
-        dispatch_thread_info.dispatch_loop.call_soon_threadsafe(
-            dispatch_thread_info.dispatch_future.cancel
-        )
-
-
-class _DispatcherThreadInfo(NamedTuple):
-    dispatch_loop: asyncio.AbstractEventLoop
-    dispatch_future: asyncio.Future[Any]
-    thread_send_queue: ThreadQueue[Any]
-    async_recv_queue: AsyncQueue[Any]
-
-
-@dataclass
-class _FlaskCarrier:
-    """A simple wrapper for holding a Flask request and WebSocket"""
-
-    request: Request
-    """The current request object"""
-
-    websocket: WebSocket
-    """A handle to the current websocket"""
diff --git a/src/py/reactpy/reactpy/backend/hooks.py b/src/py/reactpy/reactpy/backend/hooks.py
deleted file mode 100644
index 19ad114ed..000000000
--- a/src/py/reactpy/reactpy/backend/hooks.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from __future__ import annotations
-
-from collections.abc import MutableMapping
-from typing import Any
-
-from reactpy.backend.types import Connection, Location
-from reactpy.core.hooks import Context, create_context, use_context
-
-# backend implementations should establish this context at the root of an app
-ConnectionContext: Context[Connection[Any] | None] = create_context(None)
-
-
-def use_connection() -> Connection[Any]:
-    """Get the current :class:`~reactpy.backend.types.Connection`."""
-    conn = use_context(ConnectionContext)
-    if conn is None:  # nocov
-        msg = "No backend established a connection."
-        raise RuntimeError(msg)
-    return conn
-
-
-def use_scope() -> MutableMapping[str, Any]:
-    """Get the current :class:`~reactpy.backend.types.Connection`'s scope."""
-    return use_connection().scope
-
-
-def use_location() -> Location:
-    """Get the current :class:`~reactpy.backend.types.Connection`'s location."""
-    return use_connection().location
diff --git a/src/py/reactpy/reactpy/backend/sanic.py b/src/py/reactpy/reactpy/backend/sanic.py
deleted file mode 100644
index 53dd0ce68..000000000
--- a/src/py/reactpy/reactpy/backend/sanic.py
+++ /dev/null
@@ -1,223 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import json
-import logging
-from dataclasses import dataclass
-from typing import Any
-from urllib import parse as urllib_parse
-from uuid import uuid4
-
-from sanic import Blueprint, Sanic, request, response
-from sanic.config import Config
-from sanic.server.websockets.connection import WebSocketConnection
-from sanic_cors import CORS
-
-from reactpy.backend._common import (
-    ASSETS_PATH,
-    MODULES_PATH,
-    PATH_PREFIX,
-    STREAM_PATH,
-    CommonOptions,
-    read_client_index_html,
-    safe_client_build_dir_path,
-    safe_web_modules_dir_path,
-    serve_development_asgi,
-)
-from reactpy.backend.hooks import ConnectionContext
-from reactpy.backend.hooks import use_connection as _use_connection
-from reactpy.backend.types import Connection, Location
-from reactpy.core.layout import Layout
-from reactpy.core.serve import RecvCoroutine, SendCoroutine, Stop, serve_layout
-from reactpy.core.types import RootComponentConstructor
-
-logger = logging.getLogger(__name__)
-
-
-def configure(
-    app: Sanic, component: RootComponentConstructor, options: Options | None = None
-) -> None:
-    """Configure an application instance to display the given component"""
-    options = options or Options()
-
-    spa_bp = Blueprint(f"reactpy_spa_{id(app)}", url_prefix=options.url_prefix)
-    api_bp = Blueprint(f"reactpy_api_{id(app)}", url_prefix=str(PATH_PREFIX))
-
-    _setup_common_routes(api_bp, spa_bp, options)
-    _setup_single_view_dispatcher_route(api_bp, component, options)
-
-    app.blueprint([spa_bp, api_bp])
-
-
-def create_development_app() -> Sanic:
-    """Return a :class:`Sanic` app instance in test mode"""
-    Sanic.test_mode = True
-    logger.warning("Sanic.test_mode is now active")
-    app = Sanic(f"reactpy_development_app_{uuid4().hex}", Config())
-    return app
-
-
-async def serve_development_app(
-    app: Sanic,
-    host: str,
-    port: int,
-    started: asyncio.Event | None = None,
-) -> None:
-    """Run a development server for :mod:`sanic`"""
-    await serve_development_asgi(app, host, port, started)
-
-
-def use_request() -> request.Request:
-    """Get the current ``Request``"""
-    return use_connection().carrier.request
-
-
-def use_websocket() -> WebSocketConnection:
-    """Get the current websocket"""
-    return use_connection().carrier.websocket
-
-
-def use_connection() -> Connection[_SanicCarrier]:
-    """Get the current :class:`Connection`"""
-    conn = _use_connection()
-    if not isinstance(conn.carrier, _SanicCarrier):  # nocov
-        msg = f"Connection has unexpected carrier {conn.carrier}. Are you running with a Sanic server?"
-        raise TypeError(msg)
-    return conn
-
-
-@dataclass
-class Options(CommonOptions):
-    """Render server config for :func:`reactpy.backend.sanic.configure`"""
-
-    cors: bool | dict[str, Any] = False
-    """Enable or configure Cross Origin Resource Sharing (CORS)
-
-    For more information see docs for ``sanic_cors.CORS``
-    """
-
-
-def _setup_common_routes(
-    api_blueprint: Blueprint,
-    spa_blueprint: Blueprint,
-    options: Options,
-) -> None:
-    cors_options = options.cors
-    if cors_options:  # nocov
-        cors_params = cors_options if isinstance(cors_options, dict) else {}
-        CORS(api_blueprint, **cors_params)
-
-    index_html = read_client_index_html(options)
-
-    async def single_page_app_files(
-        request: request.Request,
-        _: str = "",
-    ) -> response.HTTPResponse:
-        return response.html(index_html)
-
-    spa_blueprint.add_route(
-        single_page_app_files,
-        "/",
-        name="single_page_app_files_root",
-    )
-    spa_blueprint.add_route(
-        single_page_app_files,
-        "/<_:path>",
-        name="single_page_app_files_path",
-    )
-
-    async def asset_files(
-        request: request.Request,
-        path: str = "",
-    ) -> response.HTTPResponse:
-        path = urllib_parse.unquote(path)
-        return await response.file(safe_client_build_dir_path(f"assets/{path}"))
-
-    api_blueprint.add_route(asset_files, f"/{ASSETS_PATH.name}/<path:path>")
-
-    async def web_module_files(
-        request: request.Request,
-        path: str,
-        _: str = "",  # this is not used
-    ) -> response.HTTPResponse:
-        path = urllib_parse.unquote(path)
-        return await response.file(
-            safe_web_modules_dir_path(path),
-            mime_type="text/javascript",
-        )
-
-    api_blueprint.add_route(web_module_files, f"/{MODULES_PATH.name}/<path:path>")
-
-
-def _setup_single_view_dispatcher_route(
-    api_blueprint: Blueprint,
-    constructor: RootComponentConstructor,
-    options: Options,
-) -> None:
-    async def model_stream(
-        request: request.Request, socket: WebSocketConnection, path: str = ""
-    ) -> None:
-        asgi_app = getattr(request.app, "_asgi_app", None)
-        scope = asgi_app.transport.scope if asgi_app else {}
-        if not scope:  # nocov
-            logger.warning("No scope. Sanic may not be running with an ASGI server")
-
-        send, recv = _make_send_recv_callbacks(socket)
-        await serve_layout(
-            Layout(
-                ConnectionContext(
-                    constructor(),
-                    value=Connection(
-                        scope=scope,
-                        location=Location(
-                            pathname=f"/{path[len(options.url_prefix):]}",
-                            search=(
-                                f"?{request.query_string}"
-                                if request.query_string
-                                else ""
-                            ),
-                        ),
-                        carrier=_SanicCarrier(request, socket),
-                    ),
-                )
-            ),
-            send,
-            recv,
-        )
-
-    api_blueprint.add_websocket_route(
-        model_stream,
-        f"/{STREAM_PATH.name}",
-        name="model_stream_root",
-    )
-    api_blueprint.add_websocket_route(
-        model_stream,
-        f"/{STREAM_PATH.name}/<path:path>/",
-        name="model_stream_path",
-    )
-
-
-def _make_send_recv_callbacks(
-    socket: WebSocketConnection,
-) -> tuple[SendCoroutine, RecvCoroutine]:
-    async def sock_send(value: Any) -> None:
-        await socket.send(json.dumps(value))
-
-    async def sock_recv() -> Any:
-        data = await socket.recv()
-        if data is None:
-            raise Stop()
-        return json.loads(data)
-
-    return sock_send, sock_recv
-
-
-@dataclass
-class _SanicCarrier:
-    """A simple wrapper for holding connection information"""
-
-    request: request.Request
-    """The current request object"""
-
-    websocket: WebSocketConnection
-    """A handle to the current websocket"""
diff --git a/src/py/reactpy/reactpy/backend/starlette.py b/src/py/reactpy/reactpy/backend/starlette.py
deleted file mode 100644
index 3a9695b33..000000000
--- a/src/py/reactpy/reactpy/backend/starlette.py
+++ /dev/null
@@ -1,172 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import json
-import logging
-from collections.abc import Awaitable
-from dataclasses import dataclass
-from typing import Any, Callable
-
-from starlette.applications import Starlette
-from starlette.middleware.cors import CORSMiddleware
-from starlette.requests import Request
-from starlette.responses import HTMLResponse
-from starlette.staticfiles import StaticFiles
-from starlette.websockets import WebSocket, WebSocketDisconnect
-
-from reactpy.backend._common import (
-    ASSETS_PATH,
-    CLIENT_BUILD_DIR,
-    MODULES_PATH,
-    STREAM_PATH,
-    CommonOptions,
-    read_client_index_html,
-    serve_development_asgi,
-)
-from reactpy.backend.hooks import ConnectionContext
-from reactpy.backend.hooks import use_connection as _use_connection
-from reactpy.backend.types import Connection, Location
-from reactpy.config import REACTPY_WEB_MODULES_DIR
-from reactpy.core.layout import Layout
-from reactpy.core.serve import RecvCoroutine, SendCoroutine, serve_layout
-from reactpy.core.types import RootComponentConstructor
-
-logger = logging.getLogger(__name__)
-
-
-def configure(
-    app: Starlette,
-    component: RootComponentConstructor,
-    options: Options | None = None,
-) -> None:
-    """Configure the necessary ReactPy routes on the given app.
-
-    Parameters:
-        app: An application instance
-        component: A component constructor
-        options: Options for configuring server behavior
-    """
-    options = options or Options()
-
-    # this route should take priority so set up it up first
-    _setup_single_view_dispatcher_route(options, app, component)
-
-    _setup_common_routes(options, app)
-
-
-def create_development_app() -> Starlette:
-    """Return a :class:`Starlette` app instance in debug mode"""
-    return Starlette(debug=True)
-
-
-async def serve_development_app(
-    app: Starlette,
-    host: str,
-    port: int,
-    started: asyncio.Event | None = None,
-) -> None:
-    """Run a development server for starlette"""
-    await serve_development_asgi(app, host, port, started)
-
-
-def use_websocket() -> WebSocket:
-    """Get the current WebSocket object"""
-    return use_connection().carrier
-
-
-def use_connection() -> Connection[WebSocket]:
-    conn = _use_connection()
-    if not isinstance(conn.carrier, WebSocket):  # nocov
-        msg = f"Connection has unexpected carrier {conn.carrier}. Are you running with a Flask server?"
-        raise TypeError(msg)
-    return conn
-
-
-@dataclass
-class Options(CommonOptions):
-    """Render server config for :func:`reactpy.backend.starlette.configure`"""
-
-    cors: bool | dict[str, Any] = False
-    """Enable or configure Cross Origin Resource Sharing (CORS)
-
-    For more information see docs for ``starlette.middleware.cors.CORSMiddleware``
-    """
-
-
-def _setup_common_routes(options: Options, app: Starlette) -> None:
-    cors_options = options.cors
-    if cors_options:  # nocov
-        cors_params = (
-            cors_options if isinstance(cors_options, dict) else {"allow_origins": ["*"]}
-        )
-        app.add_middleware(CORSMiddleware, **cors_params)
-
-    # This really should be added to the APIRouter, but there's a bug in Starlette
-    # BUG: https://github.com/tiangolo/fastapi/issues/1469
-    url_prefix = options.url_prefix
-
-    app.mount(
-        str(MODULES_PATH),
-        StaticFiles(directory=REACTPY_WEB_MODULES_DIR.current, check_dir=False),
-    )
-    app.mount(
-        str(ASSETS_PATH),
-        StaticFiles(directory=CLIENT_BUILD_DIR / "assets", check_dir=False),
-    )
-    # register this last so it takes least priority
-    index_route = _make_index_route(options)
-    app.add_route(url_prefix + "/", index_route)
-    app.add_route(url_prefix + "/{path:path}", index_route)
-
-
-def _make_index_route(options: Options) -> Callable[[Request], Awaitable[HTMLResponse]]:
-    index_html = read_client_index_html(options)
-
-    async def serve_index(request: Request) -> HTMLResponse:
-        return HTMLResponse(index_html)
-
-    return serve_index
-
-
-def _setup_single_view_dispatcher_route(
-    options: Options, app: Starlette, component: RootComponentConstructor
-) -> None:
-    @app.websocket_route(str(STREAM_PATH))
-    @app.websocket_route(f"{STREAM_PATH}/{{path:path}}")
-    async def model_stream(socket: WebSocket) -> None:
-        await socket.accept()
-        send, recv = _make_send_recv_callbacks(socket)
-
-        pathname = "/" + socket.scope["path_params"].get("path", "")
-        pathname = pathname[len(options.url_prefix) :] or "/"
-        search = socket.scope["query_string"].decode()
-
-        try:
-            await serve_layout(
-                Layout(
-                    ConnectionContext(
-                        component(),
-                        value=Connection(
-                            scope=socket.scope,
-                            location=Location(pathname, f"?{search}" if search else ""),
-                            carrier=socket,
-                        ),
-                    )
-                ),
-                send,
-                recv,
-            )
-        except WebSocketDisconnect as error:
-            logger.info(f"WebSocket disconnect: {error.code}")
-
-
-def _make_send_recv_callbacks(
-    socket: WebSocket,
-) -> tuple[SendCoroutine, RecvCoroutine]:
-    async def sock_send(value: Any) -> None:
-        await socket.send_text(json.dumps(value))
-
-    async def sock_recv() -> Any:
-        return json.loads(await socket.receive_text())
-
-    return sock_send, sock_recv
diff --git a/src/py/reactpy/reactpy/backend/tornado.py b/src/py/reactpy/reactpy/backend/tornado.py
deleted file mode 100644
index 5ec877532..000000000
--- a/src/py/reactpy/reactpy/backend/tornado.py
+++ /dev/null
@@ -1,227 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import json
-from asyncio import Queue as AsyncQueue
-from asyncio.futures import Future
-from typing import Any
-from urllib.parse import urljoin
-
-from tornado.httpserver import HTTPServer
-from tornado.httputil import HTTPServerRequest
-from tornado.log import enable_pretty_logging
-from tornado.platform.asyncio import AsyncIOMainLoop
-from tornado.web import Application, RequestHandler, StaticFileHandler
-from tornado.websocket import WebSocketHandler
-from tornado.wsgi import WSGIContainer
-from typing_extensions import TypeAlias
-
-from reactpy.backend._common import (
-    ASSETS_PATH,
-    CLIENT_BUILD_DIR,
-    MODULES_PATH,
-    STREAM_PATH,
-    CommonOptions,
-    read_client_index_html,
-)
-from reactpy.backend.hooks import ConnectionContext
-from reactpy.backend.hooks import use_connection as _use_connection
-from reactpy.backend.types import Connection, Location
-from reactpy.config import REACTPY_WEB_MODULES_DIR
-from reactpy.core.layout import Layout
-from reactpy.core.serve import serve_layout
-from reactpy.core.types import ComponentConstructor
-
-Options = CommonOptions
-"""Render server config for :func:`reactpy.backend.tornado.configure`"""
-
-
-def configure(
-    app: Application,
-    component: ComponentConstructor,
-    options: CommonOptions | None = None,
-) -> None:
-    """Configure the necessary ReactPy routes on the given app.
-
-    Parameters:
-        app: An application instance
-        component: A component constructor
-        options: Options for configuring server behavior
-    """
-    options = options or Options()
-    _add_handler(
-        app,
-        options,
-        (
-            # this route should take priority so set up it up first
-            _setup_single_view_dispatcher_route(component, options)
-            + _setup_common_routes(options)
-        ),
-    )
-
-
-def create_development_app() -> Application:
-    return Application(debug=True)
-
-
-async def serve_development_app(
-    app: Application,
-    host: str,
-    port: int,
-    started: asyncio.Event | None = None,
-) -> None:
-    enable_pretty_logging()
-
-    AsyncIOMainLoop.current().install()
-
-    server = HTTPServer(app)
-    server.listen(port, host)
-
-    if started:
-        # at this point the server is accepting connection
-        started.set()
-
-    try:
-        # block forever - tornado has already set up its own background tasks
-        await asyncio.get_running_loop().create_future()
-    finally:
-        # stop accepting new connections
-        server.stop()
-        # wait for existing connections to complete
-        await server.close_all_connections()
-
-
-def use_request() -> HTTPServerRequest:
-    """Get the current ``HTTPServerRequest``"""
-    return use_connection().carrier
-
-
-def use_connection() -> Connection[HTTPServerRequest]:
-    conn = _use_connection()
-    if not isinstance(conn.carrier, HTTPServerRequest):  # nocov
-        msg = f"Connection has unexpected carrier {conn.carrier}. Are you running with a Flask server?"
-        raise TypeError(msg)
-    return conn
-
-
-_RouteHandlerSpecs: TypeAlias = "list[tuple[str, type[RequestHandler], Any]]"
-
-
-def _setup_common_routes(options: Options) -> _RouteHandlerSpecs:
-    return [
-        (
-            rf"{MODULES_PATH}/(.*)",
-            StaticFileHandler,
-            {"path": str(REACTPY_WEB_MODULES_DIR.current)},
-        ),
-        (
-            rf"{ASSETS_PATH}/(.*)",
-            StaticFileHandler,
-            {"path": str(CLIENT_BUILD_DIR / "assets")},
-        ),
-        (
-            r"/(.*)",
-            IndexHandler,
-            {"index_html": read_client_index_html(options)},
-        ),
-    ]
-
-
-def _add_handler(
-    app: Application, options: Options, handlers: _RouteHandlerSpecs
-) -> None:
-    prefixed_handlers: list[Any] = [
-        (urljoin(options.url_prefix, route_pattern), *tuple(handler_info))
-        for route_pattern, *handler_info in handlers
-    ]
-    app.add_handlers(r".*", prefixed_handlers)
-
-
-def _setup_single_view_dispatcher_route(
-    constructor: ComponentConstructor, options: Options
-) -> _RouteHandlerSpecs:
-    return [
-        (
-            rf"{STREAM_PATH}/(.*)",
-            ModelStreamHandler,
-            {"component_constructor": constructor, "url_prefix": options.url_prefix},
-        ),
-        (
-            str(STREAM_PATH),
-            ModelStreamHandler,
-            {"component_constructor": constructor, "url_prefix": options.url_prefix},
-        ),
-    ]
-
-
-class IndexHandler(RequestHandler):
-    _index_html: str
-
-    def initialize(self, index_html: str) -> None:
-        self._index_html = index_html
-
-    async def get(self, _: str) -> None:
-        self.finish(self._index_html)
-
-
-class ModelStreamHandler(WebSocketHandler):
-    """A web-socket handler that serves up a new model stream to each new client"""
-
-    _dispatch_future: Future[None]
-    _message_queue: AsyncQueue[str]
-
-    def initialize(
-        self, component_constructor: ComponentConstructor, url_prefix: str
-    ) -> None:
-        self._component_constructor = component_constructor
-        self._url_prefix = url_prefix
-
-    async def open(self, path: str = "", *args: Any, **kwargs: Any) -> None:
-        message_queue: AsyncQueue[str] = AsyncQueue()
-
-        async def send(value: Any) -> None:
-            await self.write_message(json.dumps(value))
-
-        async def recv() -> Any:
-            return json.loads(await message_queue.get())
-
-        self._message_queue = message_queue
-        self._dispatch_future = asyncio.ensure_future(
-            serve_layout(
-                Layout(
-                    ConnectionContext(
-                        self._component_constructor(),
-                        value=Connection(
-                            scope=_FAKE_WSGI_CONTAINER.environ(self.request),
-                            location=Location(
-                                pathname=f"/{path[len(self._url_prefix):]}",
-                                search=(
-                                    f"?{self.request.query}"
-                                    if self.request.query
-                                    else ""
-                                ),
-                            ),
-                            carrier=self.request,
-                        ),
-                    )
-                ),
-                send,
-                recv,
-            )
-        )
-
-    async def on_message(self, message: str | bytes) -> None:
-        await self._message_queue.put(
-            message if isinstance(message, str) else message.decode()
-        )
-
-    def on_close(self) -> None:
-        if not self._dispatch_future.done():
-            self._dispatch_future.cancel()
-
-
-# The interface for WSGIContainer.environ changed in Tornado version 6.3 from
-# a staticmethod to an instance method. Since we're not that concerned with
-# the details of the WSGI app itself, we can just use a fake one.
-# see: https://github.com/tornadoweb/tornado/pull/3231#issuecomment-1518957578
-_FAKE_WSGI_CONTAINER = WSGIContainer(lambda *a, **kw: iter([]))
diff --git a/src/py/reactpy/reactpy/backend/types.py b/src/py/reactpy/reactpy/backend/types.py
deleted file mode 100644
index fbc4addc0..000000000
--- a/src/py/reactpy/reactpy/backend/types.py
+++ /dev/null
@@ -1,76 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-from collections.abc import MutableMapping
-from dataclasses import dataclass
-from typing import Any, Callable, Generic, Protocol, TypeVar, runtime_checkable
-
-from reactpy.core.types import RootComponentConstructor
-
-_App = TypeVar("_App")
-
-
-@runtime_checkable
-class BackendImplementation(Protocol[_App]):
-    """Common interface for built-in web server/framework integrations"""
-
-    Options: Callable[..., Any]
-    """A constructor for options passed to :meth:`BackendImplementation.configure`"""
-
-    def configure(
-        self,
-        app: _App,
-        component: RootComponentConstructor,
-        options: Any | None = None,
-    ) -> None:
-        """Configure the given app instance to display the given component"""
-
-    def create_development_app(self) -> _App:
-        """Create an application instance for development purposes"""
-
-    async def serve_development_app(
-        self,
-        app: _App,
-        host: str,
-        port: int,
-        started: asyncio.Event | None = None,
-    ) -> None:
-        """Run an application using a development server"""
-
-
-_Carrier = TypeVar("_Carrier")
-
-
-@dataclass
-class Connection(Generic[_Carrier]):
-    """Represents a connection with a client"""
-
-    scope: MutableMapping[str, Any]
-    """An ASGI scope or WSGI environment dictionary"""
-
-    location: Location
-    """The current location (URL)"""
-
-    carrier: _Carrier
-    """How the connection is mediated. For example, a request or websocket.
-
-    This typically depends on the backend implementation.
-    """
-
-
-@dataclass
-class Location:
-    """Represents the current location (URL)
-
-    Analogous to, but not necessarily identical to, the client-side
-    ``document.location`` object.
-    """
-
-    pathname: str
-    """the path of the URL for the location"""
-
-    search: str
-    """A search or query string - a '?' followed by the parameters of the URL.
-
-    If there are no search parameters this should be an empty string
-    """
diff --git a/src/py/reactpy/reactpy/backend/utils.py b/src/py/reactpy/reactpy/backend/utils.py
deleted file mode 100644
index 3d9be13a4..000000000
--- a/src/py/reactpy/reactpy/backend/utils.py
+++ /dev/null
@@ -1,98 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import logging
-import socket
-from collections.abc import Iterator
-from contextlib import closing
-from importlib import import_module
-from typing import Any
-
-from reactpy.backend.types import BackendImplementation
-from reactpy.types import RootComponentConstructor
-
-logger = logging.getLogger(__name__)
-
-SUPPORTED_PACKAGES = (
-    "starlette",
-    "fastapi",
-    "sanic",
-    "tornado",
-    "flask",
-)
-
-
-def run(
-    component: RootComponentConstructor,
-    host: str = "127.0.0.1",
-    port: int | None = None,
-    implementation: BackendImplementation[Any] | None = None,
-) -> None:
-    """Run a component with a development server"""
-    logger.warning(_DEVELOPMENT_RUN_FUNC_WARNING)
-
-    implementation = implementation or import_module("reactpy.backend.default")
-
-    app = implementation.create_development_app()
-    implementation.configure(app, component)
-
-    host = host
-    port = port or find_available_port(host)
-
-    app_cls = type(app)
-    logger.info(
-        f"Running with {app_cls.__module__}.{app_cls.__name__} at http://{host}:{port}"
-    )
-
-    asyncio.run(implementation.serve_development_app(app, host, port))
-
-
-def find_available_port(
-    host: str,
-    port_min: int = 8000,
-    port_max: int = 9000,
-    allow_reuse_waiting_ports: bool = True,
-) -> int:
-    """Get a port that's available for the given host and port range"""
-    for port in range(port_min, port_max):
-        with closing(socket.socket()) as sock:
-            try:
-                if allow_reuse_waiting_ports:
-                    # As per this answer: https://stackoverflow.com/a/19247688/3159288
-                    # setting can be somewhat unreliable because we allow the use of
-                    # ports that are stuck in TIME_WAIT. However, not setting the option
-                    # means we're overly cautious and almost always use a different addr
-                    # even if it could have actually been used.
-                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-                sock.bind((host, port))
-            except OSError:
-                pass
-            else:
-                return port
-    msg = f"Host {host!r} has no available port in range {port_max}-{port_max}"
-    raise RuntimeError(msg)
-
-
-def all_implementations() -> Iterator[BackendImplementation[Any]]:
-    """Yield all available server implementations"""
-    for name in SUPPORTED_PACKAGES:
-        try:
-            relative_import_name = f"{__name__.rsplit('.', 1)[0]}.{name}"
-            module = import_module(relative_import_name)
-        except ImportError:  # nocov
-            logger.debug(f"Failed to import {name!r}", exc_info=True)
-            continue
-
-        if not isinstance(module, BackendImplementation):  # nocov
-            msg = f"{module.__name__!r} is an invalid implementation"
-            raise TypeError(msg)
-
-        yield module
-
-
-_DEVELOPMENT_RUN_FUNC_WARNING = f"""\
-The `run()` function is only intended for testing during development! To run in \
-production, consider selecting a supported backend and importing its associated \
-`configure()` function from `reactpy.backend.<package>` where `<package>` is one of \
-{list(SUPPORTED_PACKAGES)}. For details refer to the docs on how to run each package.\
-"""
diff --git a/src/py/reactpy/reactpy/config.py b/src/py/reactpy/reactpy/config.py
deleted file mode 100644
index 6dc29096c..000000000
--- a/src/py/reactpy/reactpy/config.py
+++ /dev/null
@@ -1,61 +0,0 @@
-"""
-ReactPy provides a series of configuration options that can be set using environment
-variables or, for those which allow it, a programmatic interface.
-"""
-
-from pathlib import Path
-from tempfile import TemporaryDirectory
-
-from reactpy._option import Option as _Option
-
-REACTPY_DEBUG_MODE = _Option(
-    "REACTPY_DEBUG_MODE",
-    default=False,
-    validator=lambda x: bool(int(x)),
-)
-"""This immutable option turns on/off debug mode
-
-The string values ``1`` and ``0`` are mapped to ``True`` and ``False`` respectively.
-
-When debug is on, extra validation measures are applied that negatively impact
-performance but can be used to catch bugs during development. Additionally, the default
-log level for ReactPy is set to ``DEBUG``.
-"""
-
-REACTPY_CHECK_VDOM_SPEC = _Option(
-    "REACTPY_CHECK_VDOM_SPEC",
-    default=REACTPY_DEBUG_MODE,
-    validator=lambda x: bool(int(x)),
-)
-"""This immutable option turns on/off checks which ensure VDOM is rendered to spec
-
-The string values ``1`` and ``0`` are mapped to ``True`` and ``False`` respectively.
-
-By default this check is off. When ``REACTPY_DEBUG_MODE=1`` this will be turned on but can
-be manually disablled by setting ``REACTPY_CHECK_VDOM_SPEC=0`` in addition.
-
-For more info on the VDOM spec, see here: :ref:`VDOM JSON Schema`
-"""
-
-# Because these web modules will be linked dynamically at runtime this can be temporary
-_DEFAULT_WEB_MODULES_DIR = TemporaryDirectory()
-
-REACTPY_WEB_MODULES_DIR = _Option(
-    "REACTPY_WEB_MODULES_DIR",
-    default=Path(_DEFAULT_WEB_MODULES_DIR.name),
-    validator=Path,
-)
-"""The location ReactPy will use to store its client application
-
-This directory **MUST** be treated as a black box. Downstream applications **MUST NOT**
-assume anything about the structure of this directory see :mod:`reactpy.web.module` for a
-set of publicly available APIs for working with the client.
-"""
-
-REACTPY_TESTING_DEFAULT_TIMEOUT = _Option(
-    "REACTPY_TESTING_DEFAULT_TIMEOUT",
-    5.0,
-    mutable=False,
-    validator=float,
-)
-"""A default timeout for testing utilities in ReactPy"""
diff --git a/src/py/reactpy/reactpy/core/__init__.py b/src/py/reactpy/reactpy/core/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/reactpy/core/_f_back.py b/src/py/reactpy/reactpy/core/_f_back.py
deleted file mode 100644
index fe1a6c10c..000000000
--- a/src/py/reactpy/reactpy/core/_f_back.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from __future__ import annotations
-
-import inspect
-from types import FrameType
-
-
-def f_module_name(index: int = 0) -> str:
-    frame = f_back(index + 1)
-    if frame is None:
-        return ""  # nocov
-    name = frame.f_globals.get("__name__", "")
-    if not isinstance(name, str):
-        raise TypeError("Expected module name to be a string")  # nocov
-    return name
-
-
-def f_back(index: int = 0) -> FrameType | None:
-    frame = inspect.currentframe()
-    while frame is not None:
-        if index < 0:
-            return frame
-        frame = frame.f_back
-        index -= 1
-    return None  # nocov
diff --git a/src/py/reactpy/reactpy/core/_thread_local.py b/src/py/reactpy/reactpy/core/_thread_local.py
deleted file mode 100644
index b3d6a14b0..000000000
--- a/src/py/reactpy/reactpy/core/_thread_local.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from threading import Thread, current_thread
-from typing import Callable, Generic, TypeVar
-from weakref import WeakKeyDictionary
-
-_StateType = TypeVar("_StateType")
-
-
-class ThreadLocal(Generic[_StateType]):
-    """Utility for managing per-thread state information"""
-
-    def __init__(self, default: Callable[[], _StateType]):
-        self._default = default
-        self._state: WeakKeyDictionary[Thread, _StateType] = WeakKeyDictionary()
-
-    def get(self) -> _StateType:
-        thread = current_thread()
-        if thread not in self._state:
-            state = self._state[thread] = self._default()
-        else:
-            state = self._state[thread]
-        return state
diff --git a/src/py/reactpy/reactpy/core/component.py b/src/py/reactpy/reactpy/core/component.py
deleted file mode 100644
index f825aac71..000000000
--- a/src/py/reactpy/reactpy/core/component.py
+++ /dev/null
@@ -1,66 +0,0 @@
-from __future__ import annotations
-
-import inspect
-from functools import wraps
-from typing import Any, Callable
-
-from reactpy.core.types import ComponentType, VdomDict
-
-
-def component(
-    function: Callable[..., ComponentType | VdomDict | str | None]
-) -> Callable[..., Component]:
-    """A decorator for defining a new component.
-
-    Parameters:
-        function: The component's :meth:`reactpy.core.proto.ComponentType.render` function.
-    """
-    sig = inspect.signature(function)
-
-    if "key" in sig.parameters and sig.parameters["key"].kind in (
-        inspect.Parameter.KEYWORD_ONLY,
-        inspect.Parameter.POSITIONAL_OR_KEYWORD,
-    ):
-        msg = f"Component render function {function} uses reserved parameter 'key'"
-        raise TypeError(msg)
-
-    @wraps(function)
-    def constructor(*args: Any, key: Any | None = None, **kwargs: Any) -> Component:
-        return Component(function, key, args, kwargs, sig)
-
-    return constructor
-
-
-class Component:
-    """An object for rending component models."""
-
-    __slots__ = "__weakref__", "_func", "_args", "_kwargs", "_sig", "key", "type"
-
-    def __init__(
-        self,
-        function: Callable[..., ComponentType | VdomDict | str | None],
-        key: Any | None,
-        args: tuple[Any, ...],
-        kwargs: dict[str, Any],
-        sig: inspect.Signature,
-    ) -> None:
-        self.key = key
-        self.type = function
-        self._args = args
-        self._kwargs = kwargs
-        self._sig = sig
-
-    def render(self) -> ComponentType | VdomDict | str | None:
-        return self.type(*self._args, **self._kwargs)
-
-    def __repr__(self) -> str:
-        try:
-            args = self._sig.bind(*self._args, **self._kwargs).arguments
-        except TypeError:
-            return f"{self.type.__name__}(...)"
-        else:
-            items = ", ".join(f"{k}={v!r}" for k, v in args.items())
-            if items:
-                return f"{self.type.__name__}({id(self):02x}, {items})"
-            else:
-                return f"{self.type.__name__}({id(self):02x})"
diff --git a/src/py/reactpy/reactpy/core/events.py b/src/py/reactpy/reactpy/core/events.py
deleted file mode 100644
index acc2077b2..000000000
--- a/src/py/reactpy/reactpy/core/events.py
+++ /dev/null
@@ -1,220 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-from collections.abc import Sequence
-from typing import Any, Callable, Literal, overload
-
-from anyio import create_task_group
-
-from reactpy.core.types import EventHandlerFunc, EventHandlerType
-
-
-@overload
-def event(
-    function: Callable[..., Any],
-    *,
-    stop_propagation: bool = ...,
-    prevent_default: bool = ...,
-) -> EventHandler:
-    ...
-
-
-@overload
-def event(
-    function: Literal[None] = None,
-    *,
-    stop_propagation: bool = ...,
-    prevent_default: bool = ...,
-) -> Callable[[Callable[..., Any]], EventHandler]:
-    ...
-
-
-def event(
-    function: Callable[..., Any] | None = None,
-    *,
-    stop_propagation: bool = False,
-    prevent_default: bool = False,
-) -> EventHandler | Callable[[Callable[..., Any]], EventHandler]:
-    """A decorator for constructing an :class:`EventHandler`.
-
-    While you're always free to add callbacks by assigning them to an element's attributes
-
-    .. code-block:: python
-
-        element = reactpy.html.button({"onClick": my_callback})
-
-    You may want the ability to prevent the default action associated with the event
-    from taking place, or stopping the event from propagating up the DOM. This decorator
-    allows you to add that functionality to your callbacks.
-
-    .. code-block:: python
-
-        @event(stop_propagation=True, prevent_default=True)
-        def my_callback(*data):
-            ...
-
-        element = reactpy.html.button({"onClick": my_callback})
-
-    Parameters:
-        function:
-            A function or coroutine responsible for handling the event.
-        stop_propagation:
-            Block the event from propagating further up the DOM.
-        prevent_default:
-            Stops the default actional associate with the event from taking place.
-    """
-
-    def setup(function: Callable[..., Any]) -> EventHandler:
-        return EventHandler(
-            to_event_handler_function(function, positional_args=True),
-            stop_propagation,
-            prevent_default,
-        )
-
-    if function is not None:
-        return setup(function)
-    else:
-        return setup
-
-
-class EventHandler:
-    """Turn a function or coroutine into an event handler
-
-    Parameters:
-        function:
-            The function or coroutine which handles the event.
-        stop_propagation:
-            Block the event from propagating further up the DOM.
-        prevent_default:
-            Stops the default action associate with the event from taking place.
-        target:
-            A unique identifier for this event handler (auto-generated by default)
-    """
-
-    __slots__ = (
-        "__weakref__",
-        "function",
-        "prevent_default",
-        "stop_propagation",
-        "target",
-    )
-
-    def __init__(
-        self,
-        function: EventHandlerFunc,
-        stop_propagation: bool = False,
-        prevent_default: bool = False,
-        target: str | None = None,
-    ) -> None:
-        self.function = to_event_handler_function(function, positional_args=False)
-        self.prevent_default = prevent_default
-        self.stop_propagation = stop_propagation
-        self.target = target
-
-    def __eq__(self, other: Any) -> bool:
-        undefined = object()
-        for attr in (
-            "function",
-            "prevent_default",
-            "stop_propagation",
-            "target",
-        ):
-            if not attr.startswith("_"):
-                if not getattr(other, attr, undefined) == getattr(self, attr):
-                    return False
-        return True
-
-    def __repr__(self) -> str:
-        public_names = [name for name in self.__slots__ if not name.startswith("_")]
-        items = ", ".join([f"{n}={getattr(self, n)!r}" for n in public_names])
-        return f"{type(self).__name__}({items})"
-
-
-def to_event_handler_function(
-    function: Callable[..., Any],
-    positional_args: bool = True,
-) -> EventHandlerFunc:
-    """Make a :data:`~reactpy.core.proto.EventHandlerFunc` from a function or coroutine
-
-    Parameters:
-        function:
-            A function or coroutine accepting a number of positional arguments.
-        positional_args:
-            Whether to pass the event parameters a positional args or as a list.
-    """
-    if positional_args:
-        if asyncio.iscoroutinefunction(function):
-
-            async def wrapper(data: Sequence[Any]) -> None:
-                await function(*data)
-
-        else:
-
-            async def wrapper(data: Sequence[Any]) -> None:
-                function(*data)
-
-        return wrapper
-    elif not asyncio.iscoroutinefunction(function):
-
-        async def wrapper(data: Sequence[Any]) -> None:
-            function(data)
-
-        return wrapper
-    else:
-        return function
-
-
-def merge_event_handlers(
-    event_handlers: Sequence[EventHandlerType],
-) -> EventHandlerType:
-    """Merge multiple event handlers into one
-
-    Raises a ValueError if any handlers have conflicting
-    :attr:`~reactpy.core.proto.EventHandlerType.stop_propagation` or
-    :attr:`~reactpy.core.proto.EventHandlerType.prevent_default` attributes.
-    """
-    if not event_handlers:
-        msg = "No event handlers to merge"
-        raise ValueError(msg)
-    elif len(event_handlers) == 1:
-        return event_handlers[0]
-
-    first_handler = event_handlers[0]
-
-    stop_propagation = first_handler.stop_propagation
-    prevent_default = first_handler.prevent_default
-    target = first_handler.target
-
-    for handler in event_handlers:
-        if (
-            handler.stop_propagation != stop_propagation
-            or handler.prevent_default != prevent_default
-            or handler.target != target
-        ):
-            msg = "Cannot merge handlers - 'stop_propagation', 'prevent_default' or 'target' mismatch."
-            raise ValueError(msg)
-
-    return EventHandler(
-        merge_event_handler_funcs([h.function for h in event_handlers]),
-        stop_propagation,
-        prevent_default,
-        target,
-    )
-
-
-def merge_event_handler_funcs(
-    functions: Sequence[EventHandlerFunc],
-) -> EventHandlerFunc:
-    """Make one event handler function from many"""
-    if not functions:
-        msg = "No event handler functions to merge"
-        raise ValueError(msg)
-    elif len(functions) == 1:
-        return functions[0]
-
-    async def await_all_event_handlers(data: Sequence[Any]) -> None:
-        async with create_task_group() as group:
-            for func in functions:
-                group.start_soon(func, data)
-
-    return await_all_event_handlers
diff --git a/src/py/reactpy/reactpy/core/hooks.py b/src/py/reactpy/reactpy/core/hooks.py
deleted file mode 100644
index a8334458b..000000000
--- a/src/py/reactpy/reactpy/core/hooks.py
+++ /dev/null
@@ -1,750 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-from collections.abc import Awaitable, Sequence
-from logging import getLogger
-from types import FunctionType
-from typing import (
-    TYPE_CHECKING,
-    Any,
-    Callable,
-    Generic,
-    NewType,
-    Protocol,
-    TypeVar,
-    cast,
-    overload,
-)
-
-from typing_extensions import TypeAlias
-
-from reactpy.config import REACTPY_DEBUG_MODE
-from reactpy.core._thread_local import ThreadLocal
-from reactpy.core.types import ComponentType, Key, State, VdomDict
-from reactpy.utils import Ref
-
-if not TYPE_CHECKING:
-    # make flake8 think that this variable exists
-    ellipsis = type(...)
-
-
-__all__ = [
-    "use_state",
-    "use_effect",
-    "use_reducer",
-    "use_callback",
-    "use_ref",
-    "use_memo",
-]
-
-logger = getLogger(__name__)
-
-_Type = TypeVar("_Type")
-
-
-@overload
-def use_state(initial_value: Callable[[], _Type]) -> State[_Type]:
-    ...
-
-
-@overload
-def use_state(initial_value: _Type) -> State[_Type]:
-    ...
-
-
-def use_state(initial_value: _Type | Callable[[], _Type]) -> State[_Type]:
-    """See the full :ref:`Use State` docs for details
-
-    Parameters:
-        initial_value:
-            Defines the initial value of the state. A callable (accepting no arguments)
-            can be used as a constructor function to avoid re-creating the initial value
-            on each render.
-
-    Returns:
-        A tuple containing the current state and a function to update it.
-    """
-    current_state = _use_const(lambda: _CurrentState(initial_value))
-    return State(current_state.value, current_state.dispatch)
-
-
-class _CurrentState(Generic[_Type]):
-    __slots__ = "value", "dispatch"
-
-    def __init__(
-        self,
-        initial_value: _Type | Callable[[], _Type],
-    ) -> None:
-        if callable(initial_value):
-            self.value = initial_value()
-        else:
-            self.value = initial_value
-
-        hook = current_hook()
-
-        def dispatch(new: _Type | Callable[[_Type], _Type]) -> None:
-            if callable(new):
-                next_value = new(self.value)
-            else:
-                next_value = new
-            if not strictly_equal(next_value, self.value):
-                self.value = next_value
-                hook.schedule_render()
-
-        self.dispatch = dispatch
-
-
-_EffectCleanFunc: TypeAlias = "Callable[[], None]"
-_SyncEffectFunc: TypeAlias = "Callable[[], _EffectCleanFunc | None]"
-_AsyncEffectFunc: TypeAlias = "Callable[[], Awaitable[_EffectCleanFunc | None]]"
-_EffectApplyFunc: TypeAlias = "_SyncEffectFunc | _AsyncEffectFunc"
-
-
-@overload
-def use_effect(
-    function: None = None,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> Callable[[_EffectApplyFunc], None]:
-    ...
-
-
-@overload
-def use_effect(
-    function: _EffectApplyFunc,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> None:
-    ...
-
-
-def use_effect(
-    function: _EffectApplyFunc | None = None,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> Callable[[_EffectApplyFunc], None] | None:
-    """See the full :ref:`Use Effect` docs for details
-
-    Parameters:
-        function:
-            Applies the effect and can return a clean-up function
-        dependencies:
-            Dependencies for the effect. The effect will only trigger if the identity
-            of any value in the given sequence changes (i.e. their :func:`id` is
-            different). By default these are inferred based on local variables that are
-            referenced by the given function.
-
-    Returns:
-        If not function is provided, a decorator. Otherwise ``None``.
-    """
-    hook = current_hook()
-
-    dependencies = _try_to_infer_closure_values(function, dependencies)
-    memoize = use_memo(dependencies=dependencies)
-    last_clean_callback: Ref[_EffectCleanFunc | None] = use_ref(None)
-
-    def add_effect(function: _EffectApplyFunc) -> None:
-        if not asyncio.iscoroutinefunction(function):
-            sync_function = cast(_SyncEffectFunc, function)
-        else:
-            async_function = cast(_AsyncEffectFunc, function)
-
-            def sync_function() -> _EffectCleanFunc | None:
-                future = asyncio.ensure_future(async_function())
-
-                def clean_future() -> None:
-                    if not future.cancel():
-                        clean = future.result()
-                        if clean is not None:
-                            clean()
-
-                return clean_future
-
-        def effect() -> None:
-            if last_clean_callback.current is not None:
-                last_clean_callback.current()
-
-            clean = last_clean_callback.current = sync_function()
-            if clean is not None:
-                hook.add_effect(COMPONENT_WILL_UNMOUNT_EFFECT, clean)
-
-        return memoize(lambda: hook.add_effect(LAYOUT_DID_RENDER_EFFECT, effect))
-
-    if function is not None:
-        add_effect(function)
-        return None
-    else:
-        return add_effect
-
-
-def use_debug_value(
-    message: Any | Callable[[], Any],
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> None:
-    """Log debug information when the given message changes.
-
-    .. note::
-        This hook only logs if :data:`~reactpy.config.REACTPY_DEBUG_MODE` is active.
-
-    Unlike other hooks, a message is considered to have changed if the old and new
-    values are ``!=``. Because this comparison is performed on every render of the
-    component, it may be worth considering the performance cost in some situations.
-
-    Parameters:
-        message:
-            The value to log or a memoized function for generating the value.
-        dependencies:
-            Dependencies for the memoized function. The message will only be recomputed
-            if the identity of any value in the given sequence changes (i.e. their
-            :func:`id` is different). By default these are inferred based on local
-            variables that are referenced by the given function.
-    """
-    old: Ref[Any] = _use_const(lambda: Ref(object()))
-    memo_func = message if callable(message) else lambda: message
-    new = use_memo(memo_func, dependencies)
-
-    if REACTPY_DEBUG_MODE.current and old.current != new:
-        old.current = new
-        logger.debug(f"{current_hook().component} {new}")
-
-
-def create_context(default_value: _Type) -> Context[_Type]:
-    """Return a new context type for use in :func:`use_context`"""
-
-    def context(
-        *children: Any,
-        value: _Type = default_value,
-        key: Key | None = None,
-    ) -> ContextProvider[_Type]:
-        return ContextProvider(
-            *children,
-            value=value,
-            key=key,
-            type=context,
-        )
-
-    context.__qualname__ = "context"
-
-    return context
-
-
-class Context(Protocol[_Type]):
-    """Returns a :class:`ContextProvider` component"""
-
-    def __call__(
-        self,
-        *children: Any,
-        value: _Type = ...,
-        key: Key | None = ...,
-    ) -> ContextProvider[_Type]:
-        ...
-
-
-def use_context(context: Context[_Type]) -> _Type:
-    """Get the current value for the given context type.
-
-    See the full :ref:`Use Context` docs for more information.
-    """
-    hook = current_hook()
-    provider = hook.get_context_provider(context)
-
-    if provider is None:
-        # same assertions but with normal exceptions
-        if not isinstance(context, FunctionType):
-            raise TypeError(f"{context} is not a Context")  # nocov
-        if context.__kwdefaults__ is None:
-            raise TypeError(f"{context} has no 'value' kwarg")  # nocov
-        if "value" not in context.__kwdefaults__:
-            raise TypeError(f"{context} has no 'value' kwarg")  # nocov
-        return cast(_Type, context.__kwdefaults__["value"])
-
-    return provider._value
-
-
-class ContextProvider(Generic[_Type]):
-    def __init__(
-        self,
-        *children: Any,
-        value: _Type,
-        key: Key | None,
-        type: Context[_Type],
-    ) -> None:
-        self.children = children
-        self.key = key
-        self.type = type
-        self._value = value
-
-    def render(self) -> VdomDict:
-        current_hook().set_context_provider(self)
-        return {"tagName": "", "children": self.children}
-
-    def __repr__(self) -> str:
-        return f"{type(self).__name__}({self.type})"
-
-
-_ActionType = TypeVar("_ActionType")
-
-
-def use_reducer(
-    reducer: Callable[[_Type, _ActionType], _Type],
-    initial_value: _Type,
-) -> tuple[_Type, Callable[[_ActionType], None]]:
-    """See the full :ref:`Use Reducer` docs for details
-
-    Parameters:
-        reducer:
-            A function which applies an action to the current state in order to
-            produce the next state.
-        initial_value:
-            The initial state value (same as for :func:`use_state`)
-
-    Returns:
-        A tuple containing the current state and a function to change it with an action
-    """
-    state, set_state = use_state(initial_value)
-    return state, _use_const(lambda: _create_dispatcher(reducer, set_state))
-
-
-def _create_dispatcher(
-    reducer: Callable[[_Type, _ActionType], _Type],
-    set_state: Callable[[Callable[[_Type], _Type]], None],
-) -> Callable[[_ActionType], None]:
-    def dispatch(action: _ActionType) -> None:
-        set_state(lambda last_state: reducer(last_state, action))
-
-    return dispatch
-
-
-_CallbackFunc = TypeVar("_CallbackFunc", bound=Callable[..., Any])
-
-
-@overload
-def use_callback(
-    function: None = None,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> Callable[[_CallbackFunc], _CallbackFunc]:
-    ...
-
-
-@overload
-def use_callback(
-    function: _CallbackFunc,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> _CallbackFunc:
-    ...
-
-
-def use_callback(
-    function: _CallbackFunc | None = None,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> _CallbackFunc | Callable[[_CallbackFunc], _CallbackFunc]:
-    """See the full :ref:`Use Callback` docs for details
-
-    Parameters:
-        function:
-            The function whose identity will be preserved
-        dependencies:
-            Dependencies of the callback. The identity the ``function`` will be updated
-            if the identity of any value in the given sequence changes (i.e. their
-            :func:`id` is different). By default these are inferred based on local
-            variables that are referenced by the given function.
-
-    Returns:
-        The current function
-    """
-    dependencies = _try_to_infer_closure_values(function, dependencies)
-    memoize = use_memo(dependencies=dependencies)
-
-    def setup(function: _CallbackFunc) -> _CallbackFunc:
-        return memoize(lambda: function)
-
-    if function is not None:
-        return setup(function)
-    else:
-        return setup
-
-
-class _LambdaCaller(Protocol):
-    """MyPy doesn't know how to deal with TypeVars only used in function return"""
-
-    def __call__(self, func: Callable[[], _Type]) -> _Type:
-        ...
-
-
-@overload
-def use_memo(
-    function: None = None,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> _LambdaCaller:
-    ...
-
-
-@overload
-def use_memo(
-    function: Callable[[], _Type],
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> _Type:
-    ...
-
-
-def use_memo(
-    function: Callable[[], _Type] | None = None,
-    dependencies: Sequence[Any] | ellipsis | None = ...,
-) -> _Type | Callable[[Callable[[], _Type]], _Type]:
-    """See the full :ref:`Use Memo` docs for details
-
-    Parameters:
-        function:
-            The function to be memoized.
-        dependencies:
-            Dependencies for the memoized function. The memo will only be recomputed if
-            the identity of any value in the given sequence changes (i.e. their
-            :func:`id` is different). By default these are inferred based on local
-            variables that are referenced by the given function.
-
-    Returns:
-        The current state
-    """
-    dependencies = _try_to_infer_closure_values(function, dependencies)
-
-    memo: _Memo[_Type] = _use_const(_Memo)
-
-    if memo.empty():
-        # we need to initialize on the first run
-        changed = True
-        memo.deps = () if dependencies is None else dependencies
-    elif dependencies is None:
-        changed = True
-        memo.deps = ()
-    elif (
-        len(memo.deps) != len(dependencies)
-        # if deps are same length check identity for each item
-        or not all(
-            strictly_equal(current, new)
-            for current, new in zip(memo.deps, dependencies)
-        )
-    ):
-        memo.deps = dependencies
-        changed = True
-    else:
-        changed = False
-
-    setup: Callable[[Callable[[], _Type]], _Type]
-
-    if changed:
-
-        def setup(function: Callable[[], _Type]) -> _Type:
-            current_value = memo.value = function()
-            return current_value
-
-    else:
-
-        def setup(function: Callable[[], _Type]) -> _Type:
-            return memo.value
-
-    if function is not None:
-        return setup(function)
-    else:
-        return setup
-
-
-class _Memo(Generic[_Type]):
-    """Simple object for storing memoization data"""
-
-    __slots__ = "value", "deps"
-
-    value: _Type
-    deps: Sequence[Any]
-
-    def empty(self) -> bool:
-        try:
-            self.value  # noqa: B018
-        except AttributeError:
-            return True
-        else:
-            return False
-
-
-def use_ref(initial_value: _Type) -> Ref[_Type]:
-    """See the full :ref:`Use State` docs for details
-
-    Parameters:
-        initial_value: The value initially assigned to the reference.
-
-    Returns:
-        A :class:`Ref` object.
-    """
-    return _use_const(lambda: Ref(initial_value))
-
-
-def _use_const(function: Callable[[], _Type]) -> _Type:
-    return current_hook().use_state(function)
-
-
-def _try_to_infer_closure_values(
-    func: Callable[..., Any] | None,
-    values: Sequence[Any] | ellipsis | None,
-) -> Sequence[Any] | None:
-    if values is ...:
-        if isinstance(func, FunctionType):
-            return (
-                [cell.cell_contents for cell in func.__closure__]
-                if func.__closure__
-                else []
-            )
-        else:
-            return None
-    else:
-        return values
-
-
-def current_hook() -> LifeCycleHook:
-    """Get the current :class:`LifeCycleHook`"""
-    hook_stack = _hook_stack.get()
-    if not hook_stack:
-        msg = "No life cycle hook is active. Are you rendering in a layout?"
-        raise RuntimeError(msg)
-    return hook_stack[-1]
-
-
-_hook_stack: ThreadLocal[list[LifeCycleHook]] = ThreadLocal(list)
-
-
-EffectType = NewType("EffectType", str)
-"""Used in :meth:`LifeCycleHook.add_effect` to indicate what effect should be saved"""
-
-COMPONENT_DID_RENDER_EFFECT = EffectType("COMPONENT_DID_RENDER")
-"""An effect that will be triggered each time a component renders"""
-
-LAYOUT_DID_RENDER_EFFECT = EffectType("LAYOUT_DID_RENDER")
-"""An effect that will be triggered each time a layout renders"""
-
-COMPONENT_WILL_UNMOUNT_EFFECT = EffectType("COMPONENT_WILL_UNMOUNT")
-"""An effect that will be triggered just before the component is unmounted"""
-
-
-class LifeCycleHook:
-    """Defines the life cycle of a layout component.
-
-    Components can request access to their own life cycle events and state through hooks
-    while :class:`~reactpy.core.proto.LayoutType` objects drive drive the life cycle
-    forward by triggering events and rendering view changes.
-
-    Example:
-
-        If removed from the complexities of a layout, a very simplified full life cycle
-        for a single component with no child components would look a bit like this:
-
-        .. testcode::
-
-            from reactpy.core.hooks import (
-                current_hook,
-                LifeCycleHook,
-                COMPONENT_DID_RENDER_EFFECT,
-            )
-
-
-            # this function will come from a layout implementation
-            schedule_render = lambda: ...
-
-            # --- start life cycle ---
-
-            hook = LifeCycleHook(schedule_render)
-
-            # --- start render cycle ---
-
-            hook.affect_component_will_render(...)
-
-            hook.set_current()
-
-            try:
-                # render the component
-                ...
-
-                # the component may access the current hook
-                assert current_hook() is hook
-
-                # and save state or add effects
-                current_hook().use_state(lambda: ...)
-                current_hook().add_effect(COMPONENT_DID_RENDER_EFFECT, lambda: ...)
-            finally:
-                hook.unset_current()
-
-            hook.affect_component_did_render()
-
-            # This should only be called after the full set of changes associated with a
-            # given render have been completed.
-            hook.affect_layout_did_render()
-
-            # Typically an event occurs and a new render is scheduled, thus beginning
-            # the render cycle anew.
-            hook.schedule_render()
-
-
-            # --- end render cycle ---
-
-            hook.affect_component_will_unmount()
-            del hook
-
-            # --- end render cycle ---
-    """
-
-    __slots__ = (
-        "__weakref__",
-        "_context_providers",
-        "_current_state_index",
-        "_event_effects",
-        "_is_rendering",
-        "_rendered_atleast_once",
-        "_schedule_render_callback",
-        "_schedule_render_later",
-        "_state",
-        "component",
-    )
-
-    component: ComponentType
-
-    def __init__(
-        self,
-        schedule_render: Callable[[], None],
-    ) -> None:
-        self._context_providers: dict[Context[Any], ContextProvider[Any]] = {}
-        self._schedule_render_callback = schedule_render
-        self._schedule_render_later = False
-        self._is_rendering = False
-        self._rendered_atleast_once = False
-        self._current_state_index = 0
-        self._state: tuple[Any, ...] = ()
-        self._event_effects: dict[EffectType, list[Callable[[], None]]] = {
-            COMPONENT_DID_RENDER_EFFECT: [],
-            LAYOUT_DID_RENDER_EFFECT: [],
-            COMPONENT_WILL_UNMOUNT_EFFECT: [],
-        }
-
-    def schedule_render(self) -> None:
-        if self._is_rendering:
-            self._schedule_render_later = True
-        else:
-            self._schedule_render()
-
-    def use_state(self, function: Callable[[], _Type]) -> _Type:
-        if not self._rendered_atleast_once:
-            # since we're not initialized yet we're just appending state
-            result = function()
-            self._state += (result,)
-        else:
-            # once finalized we iterate over each succesively used piece of state
-            result = self._state[self._current_state_index]
-        self._current_state_index += 1
-        return result
-
-    def add_effect(self, effect_type: EffectType, function: Callable[[], None]) -> None:
-        """Trigger a function on the occurrence of the given effect type"""
-        self._event_effects[effect_type].append(function)
-
-    def set_context_provider(self, provider: ContextProvider[Any]) -> None:
-        self._context_providers[provider.type] = provider
-
-    def get_context_provider(
-        self, context: Context[_Type]
-    ) -> ContextProvider[_Type] | None:
-        return self._context_providers.get(context)
-
-    def affect_component_will_render(self, component: ComponentType) -> None:
-        """The component is about to render"""
-        self.component = component
-
-        self._is_rendering = True
-        self._event_effects[COMPONENT_WILL_UNMOUNT_EFFECT].clear()
-
-    def affect_component_did_render(self) -> None:
-        """The component completed a render"""
-        del self.component
-
-        component_did_render_effects = self._event_effects[COMPONENT_DID_RENDER_EFFECT]
-        for effect in component_did_render_effects:
-            try:
-                effect()
-            except Exception:
-                logger.exception(f"Component post-render effect {effect} failed")
-        component_did_render_effects.clear()
-
-        self._is_rendering = False
-        self._rendered_atleast_once = True
-        self._current_state_index = 0
-
-    def affect_layout_did_render(self) -> None:
-        """The layout completed a render"""
-        layout_did_render_effects = self._event_effects[LAYOUT_DID_RENDER_EFFECT]
-        for effect in layout_did_render_effects:
-            try:
-                effect()
-            except Exception:
-                logger.exception(f"Layout post-render effect {effect} failed")
-        layout_did_render_effects.clear()
-
-        if self._schedule_render_later:
-            self._schedule_render()
-        self._schedule_render_later = False
-
-    def affect_component_will_unmount(self) -> None:
-        """The component is about to be removed from the layout"""
-        will_unmount_effects = self._event_effects[COMPONENT_WILL_UNMOUNT_EFFECT]
-        for effect in will_unmount_effects:
-            try:
-                effect()
-            except Exception:
-                logger.exception(f"Pre-unmount effect {effect} failed")
-        will_unmount_effects.clear()
-
-    def set_current(self) -> None:
-        """Set this hook as the active hook in this thread
-
-        This method is called by a layout before entering the render method
-        of this hook's associated component.
-        """
-        hook_stack = _hook_stack.get()
-        if hook_stack:
-            parent = hook_stack[-1]
-            self._context_providers.update(parent._context_providers)
-        hook_stack.append(self)
-
-    def unset_current(self) -> None:
-        """Unset this hook as the active hook in this thread"""
-        if _hook_stack.get().pop() is not self:
-            raise RuntimeError("Hook stack is in an invalid state")  # nocov
-
-    def _schedule_render(self) -> None:
-        try:
-            self._schedule_render_callback()
-        except Exception:
-            logger.exception(
-                f"Failed to schedule render via {self._schedule_render_callback}"
-            )
-
-
-def strictly_equal(x: Any, y: Any) -> bool:
-    """Check if two values are identical or, for a limited set or types, equal.
-
-    Only the following types are checked for equality rather than identity:
-
-    - ``int``
-    - ``float``
-    - ``complex``
-    - ``str``
-    - ``bytes``
-    - ``bytearray``
-    - ``memoryview``
-    """
-    return x is y or (type(x) in _NUMERIC_TEXT_BINARY_TYPES and x == y)
-
-
-_NUMERIC_TEXT_BINARY_TYPES = {
-    # numeric
-    int,
-    float,
-    complex,
-    # text
-    str,
-    # binary types
-    bytes,
-    bytearray,
-    memoryview,
-}
diff --git a/src/py/reactpy/reactpy/core/layout.py b/src/py/reactpy/reactpy/core/layout.py
deleted file mode 100644
index 7c24e5ef7..000000000
--- a/src/py/reactpy/reactpy/core/layout.py
+++ /dev/null
@@ -1,698 +0,0 @@
-from __future__ import annotations
-
-import abc
-import asyncio
-from collections import Counter
-from collections.abc import Iterator
-from contextlib import ExitStack
-from logging import getLogger
-from typing import (
-    Any,
-    Callable,
-    Generic,
-    NamedTuple,
-    NewType,
-    TypeVar,
-    cast,
-)
-from uuid import uuid4
-from weakref import ref as weakref
-
-from reactpy.config import REACTPY_CHECK_VDOM_SPEC, REACTPY_DEBUG_MODE
-from reactpy.core.hooks import LifeCycleHook
-from reactpy.core.types import (
-    ComponentType,
-    EventHandlerDict,
-    LayoutEventMessage,
-    LayoutUpdateMessage,
-    VdomDict,
-    VdomJson,
-)
-from reactpy.core.vdom import validate_vdom_json
-from reactpy.utils import Ref
-
-logger = getLogger(__name__)
-
-
-class Layout:
-    """Responsible for "rendering" components. That is, turning them into VDOM."""
-
-    __slots__ = [
-        "root",
-        "_event_handlers",
-        "_rendering_queue",
-        "_root_life_cycle_state_id",
-        "_model_states_by_life_cycle_state_id",
-    ]
-
-    if not hasattr(abc.ABC, "__weakref__"):  # nocov
-        __slots__.append("__weakref__")
-
-    def __init__(self, root: ComponentType) -> None:
-        super().__init__()
-        if not isinstance(root, ComponentType):
-            msg = f"Expected a ComponentType, not {type(root)!r}."
-            raise TypeError(msg)
-        self.root = root
-
-    async def __aenter__(self) -> Layout:
-        # create attributes here to avoid access before entering context manager
-        self._event_handlers: EventHandlerDict = {}
-
-        self._rendering_queue: _ThreadSafeQueue[_LifeCycleStateId] = _ThreadSafeQueue()
-        root_model_state = _new_root_model_state(self.root, self._rendering_queue.put)
-
-        self._root_life_cycle_state_id = root_id = root_model_state.life_cycle_state.id
-        self._rendering_queue.put(root_id)
-
-        self._model_states_by_life_cycle_state_id = {root_id: root_model_state}
-
-        return self
-
-    async def __aexit__(self, *exc: Any) -> None:
-        root_csid = self._root_life_cycle_state_id
-        root_model_state = self._model_states_by_life_cycle_state_id[root_csid]
-        self._unmount_model_states([root_model_state])
-
-        # delete attributes here to avoid access after exiting context manager
-        del self._event_handlers
-        del self._rendering_queue
-        del self._root_life_cycle_state_id
-        del self._model_states_by_life_cycle_state_id
-
-    async def deliver(self, event: LayoutEventMessage) -> None:
-        """Dispatch an event to the targeted handler"""
-        # It is possible for an element in the frontend to produce an event
-        # associated with a backend model that has been deleted. We only handle
-        # events if the element and the handler exist in the backend. Otherwise
-        # we just ignore the event.
-        handler = self._event_handlers.get(event["target"])
-
-        if handler is not None:
-            try:
-                await handler.function(event["data"])
-            except Exception:
-                logger.exception(f"Failed to execute event handler {handler}")
-        else:
-            logger.info(
-                f"Ignored event - handler {event['target']!r} "
-                "does not exist or its component unmounted"
-            )
-
-    async def render(self) -> LayoutUpdateMessage:
-        """Await the next available render. This will block until a component is updated"""
-        while True:
-            model_state_id = await self._rendering_queue.get()
-            try:
-                model_state = self._model_states_by_life_cycle_state_id[model_state_id]
-            except KeyError:
-                logger.debug(
-                    "Did not render component with model state ID "
-                    f"{model_state_id!r} - component already unmounted"
-                )
-            else:
-                update = self._create_layout_update(model_state)
-                if REACTPY_CHECK_VDOM_SPEC.current:
-                    root_id = self._root_life_cycle_state_id
-                    root_model = self._model_states_by_life_cycle_state_id[root_id]
-                    validate_vdom_json(root_model.model.current)
-                return update
-
-    def _create_layout_update(self, old_state: _ModelState) -> LayoutUpdateMessage:
-        new_state = _copy_component_model_state(old_state)
-        component = new_state.life_cycle_state.component
-
-        with ExitStack() as exit_stack:
-            self._render_component(exit_stack, old_state, new_state, component)
-
-        return {
-            "type": "layout-update",
-            "path": new_state.patch_path,
-            "model": new_state.model.current,
-        }
-
-    def _render_component(
-        self,
-        exit_stack: ExitStack,
-        old_state: _ModelState | None,
-        new_state: _ModelState,
-        component: ComponentType,
-    ) -> None:
-        life_cycle_state = new_state.life_cycle_state
-        life_cycle_hook = life_cycle_state.hook
-
-        self._model_states_by_life_cycle_state_id[life_cycle_state.id] = new_state
-
-        life_cycle_hook.affect_component_will_render(component)
-        exit_stack.callback(life_cycle_hook.affect_layout_did_render)
-        life_cycle_hook.set_current()
-        try:
-            raw_model = component.render()
-            # wrap the model in a fragment (i.e. tagName="") to ensure components have
-            # a separate node in the model state tree. This could be removed if this
-            # components are given a node in the tree some other way
-            wrapper_model: VdomDict = {"tagName": ""}
-            if raw_model is not None:
-                wrapper_model["children"] = [raw_model]
-            self._render_model(exit_stack, old_state, new_state, wrapper_model)
-        except Exception as error:
-            logger.exception(f"Failed to render {component}")
-            new_state.model.current = {
-                "tagName": "",
-                "error": (
-                    f"{type(error).__name__}: {error}"
-                    if REACTPY_DEBUG_MODE.current
-                    else ""
-                ),
-            }
-        finally:
-            life_cycle_hook.unset_current()
-            life_cycle_hook.affect_component_did_render()
-
-        try:
-            parent = new_state.parent
-        except AttributeError:
-            pass  # only happens for root component
-        else:
-            key, index = new_state.key, new_state.index
-            parent.children_by_key[key] = new_state
-            # need to add this model to parent's children without mutating parent model
-            old_parent_model = parent.model.current
-            old_parent_children = old_parent_model["children"]
-            parent.model.current = {
-                **old_parent_model,  # type: ignore[misc]
-                "children": [
-                    *old_parent_children[:index],
-                    new_state.model.current,
-                    *old_parent_children[index + 1 :],
-                ],
-            }
-
-    def _render_model(
-        self,
-        exit_stack: ExitStack,
-        old_state: _ModelState | None,
-        new_state: _ModelState,
-        raw_model: Any,
-    ) -> None:
-        try:
-            new_state.model.current = {"tagName": raw_model["tagName"]}
-        except Exception as e:  # nocov
-            msg = f"Expected a VDOM element dict, not {raw_model}"
-            raise ValueError(msg) from e
-        if "key" in raw_model:
-            new_state.key = new_state.model.current["key"] = raw_model["key"]
-        if "importSource" in raw_model:
-            new_state.model.current["importSource"] = raw_model["importSource"]
-        self._render_model_attributes(old_state, new_state, raw_model)
-        self._render_model_children(
-            exit_stack, old_state, new_state, raw_model.get("children", [])
-        )
-
-    def _render_model_attributes(
-        self,
-        old_state: _ModelState | None,
-        new_state: _ModelState,
-        raw_model: dict[str, Any],
-    ) -> None:
-        # extract event handlers from 'eventHandlers' and 'attributes'
-        handlers_by_event: EventHandlerDict = raw_model.get("eventHandlers", {})
-
-        if "attributes" in raw_model:
-            attrs = raw_model["attributes"].copy()
-            new_state.model.current["attributes"] = attrs
-
-        if old_state is None:
-            self._render_model_event_handlers_without_old_state(
-                new_state, handlers_by_event
-            )
-            return None
-
-        for old_event in set(old_state.targets_by_event).difference(handlers_by_event):
-            old_target = old_state.targets_by_event[old_event]
-            del self._event_handlers[old_target]
-
-        if not handlers_by_event:
-            return None
-
-        model_event_handlers = new_state.model.current["eventHandlers"] = {}
-        for event, handler in handlers_by_event.items():
-            if event in old_state.targets_by_event:
-                target = old_state.targets_by_event[event]
-            else:
-                target = uuid4().hex if handler.target is None else handler.target
-            new_state.targets_by_event[event] = target
-            self._event_handlers[target] = handler
-            model_event_handlers[event] = {
-                "target": target,
-                "preventDefault": handler.prevent_default,
-                "stopPropagation": handler.stop_propagation,
-            }
-
-        return None
-
-    def _render_model_event_handlers_without_old_state(
-        self,
-        new_state: _ModelState,
-        handlers_by_event: EventHandlerDict,
-    ) -> None:
-        if not handlers_by_event:
-            return None
-
-        model_event_handlers = new_state.model.current["eventHandlers"] = {}
-        for event, handler in handlers_by_event.items():
-            target = uuid4().hex if handler.target is None else handler.target
-            new_state.targets_by_event[event] = target
-            self._event_handlers[target] = handler
-            model_event_handlers[event] = {
-                "target": target,
-                "preventDefault": handler.prevent_default,
-                "stopPropagation": handler.stop_propagation,
-            }
-
-        return None
-
-    def _render_model_children(
-        self,
-        exit_stack: ExitStack,
-        old_state: _ModelState | None,
-        new_state: _ModelState,
-        raw_children: Any,
-    ) -> None:
-        if not isinstance(raw_children, (list, tuple)):
-            raw_children = [raw_children]
-
-        if old_state is None:
-            if raw_children:
-                self._render_model_children_without_old_state(
-                    exit_stack, new_state, raw_children
-                )
-            return None
-        elif not raw_children:
-            self._unmount_model_states(list(old_state.children_by_key.values()))
-            return None
-
-        child_type_key_tuples = list(_process_child_type_and_key(raw_children))
-
-        new_keys = {item[2] for item in child_type_key_tuples}
-        if len(new_keys) != len(raw_children):
-            key_counter = Counter(item[2] for item in child_type_key_tuples)
-            duplicate_keys = [key for key, count in key_counter.items() if count > 1]
-            msg = f"Duplicate keys {duplicate_keys} at {new_state.patch_path or '/'!r}"
-            raise ValueError(msg)
-
-        old_keys = set(old_state.children_by_key).difference(new_keys)
-        if old_keys:
-            self._unmount_model_states(
-                [old_state.children_by_key[key] for key in old_keys]
-            )
-
-        new_state.model.current["children"] = []
-        for index, (child, child_type, key) in enumerate(child_type_key_tuples):
-            old_child_state = old_state.children_by_key.get(key)
-            if child_type is _DICT_TYPE:
-                old_child_state = old_state.children_by_key.get(key)
-                if old_child_state is None:
-                    new_child_state = _make_element_model_state(
-                        new_state,
-                        index,
-                        key,
-                    )
-                elif old_child_state.is_component_state:
-                    self._unmount_model_states([old_child_state])
-                    new_child_state = _make_element_model_state(
-                        new_state,
-                        index,
-                        key,
-                    )
-                    old_child_state = None
-                else:
-                    new_child_state = _update_element_model_state(
-                        old_child_state,
-                        new_state,
-                        index,
-                    )
-                self._render_model(exit_stack, old_child_state, new_child_state, child)
-                new_state.append_child(new_child_state.model.current)
-                new_state.children_by_key[key] = new_child_state
-            elif child_type is _COMPONENT_TYPE:
-                child = cast(ComponentType, child)
-                old_child_state = old_state.children_by_key.get(key)
-                if old_child_state is None:
-                    new_child_state = _make_component_model_state(
-                        new_state,
-                        index,
-                        key,
-                        child,
-                        self._rendering_queue.put,
-                    )
-                elif old_child_state.is_component_state and (
-                    old_child_state.life_cycle_state.component.type != child.type
-                ):
-                    self._unmount_model_states([old_child_state])
-                    old_child_state = None
-                    new_child_state = _make_component_model_state(
-                        new_state,
-                        index,
-                        key,
-                        child,
-                        self._rendering_queue.put,
-                    )
-                else:
-                    new_child_state = _update_component_model_state(
-                        old_child_state,
-                        new_state,
-                        index,
-                        child,
-                        self._rendering_queue.put,
-                    )
-                self._render_component(
-                    exit_stack, old_child_state, new_child_state, child
-                )
-            else:
-                old_child_state = old_state.children_by_key.get(key)
-                if old_child_state is not None:
-                    self._unmount_model_states([old_child_state])
-                new_state.append_child(child)
-
-    def _render_model_children_without_old_state(
-        self,
-        exit_stack: ExitStack,
-        new_state: _ModelState,
-        raw_children: list[Any],
-    ) -> None:
-        child_type_key_tuples = list(_process_child_type_and_key(raw_children))
-
-        new_keys = {item[2] for item in child_type_key_tuples}
-        if len(new_keys) != len(raw_children):
-            key_counter = Counter(item[2] for item in child_type_key_tuples)
-            duplicate_keys = [key for key, count in key_counter.items() if count > 1]
-            msg = f"Duplicate keys {duplicate_keys} at {new_state.patch_path or '/'!r}"
-            raise ValueError(msg)
-
-        new_state.model.current["children"] = []
-        for index, (child, child_type, key) in enumerate(child_type_key_tuples):
-            if child_type is _DICT_TYPE:
-                child_state = _make_element_model_state(new_state, index, key)
-                self._render_model(exit_stack, None, child_state, child)
-                new_state.append_child(child_state.model.current)
-                new_state.children_by_key[key] = child_state
-            elif child_type is _COMPONENT_TYPE:
-                child_state = _make_component_model_state(
-                    new_state, index, key, child, self._rendering_queue.put
-                )
-                self._render_component(exit_stack, None, child_state, child)
-            else:
-                new_state.append_child(child)
-
-    def _unmount_model_states(self, old_states: list[_ModelState]) -> None:
-        to_unmount = old_states[::-1]  # unmount in reversed order of rendering
-        while to_unmount:
-            model_state = to_unmount.pop()
-
-            for target in model_state.targets_by_event.values():
-                del self._event_handlers[target]
-
-            if model_state.is_component_state:
-                life_cycle_state = model_state.life_cycle_state
-                del self._model_states_by_life_cycle_state_id[life_cycle_state.id]
-                life_cycle_state.hook.affect_component_will_unmount()
-
-            to_unmount.extend(model_state.children_by_key.values())
-
-    def __repr__(self) -> str:
-        return f"{type(self).__name__}({self.root})"
-
-
-def _new_root_model_state(
-    component: ComponentType, schedule_render: Callable[[_LifeCycleStateId], None]
-) -> _ModelState:
-    return _ModelState(
-        parent=None,
-        index=-1,
-        key=None,
-        model=Ref(),
-        patch_path="",
-        children_by_key={},
-        targets_by_event={},
-        life_cycle_state=_make_life_cycle_state(component, schedule_render),
-    )
-
-
-def _make_component_model_state(
-    parent: _ModelState,
-    index: int,
-    key: Any,
-    component: ComponentType,
-    schedule_render: Callable[[_LifeCycleStateId], None],
-) -> _ModelState:
-    return _ModelState(
-        parent=parent,
-        index=index,
-        key=key,
-        model=Ref(),
-        patch_path=f"{parent.patch_path}/children/{index}",
-        children_by_key={},
-        targets_by_event={},
-        life_cycle_state=_make_life_cycle_state(component, schedule_render),
-    )
-
-
-def _copy_component_model_state(old_model_state: _ModelState) -> _ModelState:
-    # use try/except here because not having a parent is rare (only the root state)
-    try:
-        parent: _ModelState | None = old_model_state.parent
-    except AttributeError:
-        parent = None
-
-    return _ModelState(
-        parent=parent,
-        index=old_model_state.index,
-        key=old_model_state.key,
-        model=Ref(),  # does not copy the model
-        patch_path=old_model_state.patch_path,
-        children_by_key={},
-        targets_by_event={},
-        life_cycle_state=old_model_state.life_cycle_state,
-    )
-
-
-def _update_component_model_state(
-    old_model_state: _ModelState,
-    new_parent: _ModelState,
-    new_index: int,
-    new_component: ComponentType,
-    schedule_render: Callable[[_LifeCycleStateId], None],
-) -> _ModelState:
-    return _ModelState(
-        parent=new_parent,
-        index=new_index,
-        key=old_model_state.key,
-        model=Ref(),  # does not copy the model
-        patch_path=old_model_state.patch_path,
-        children_by_key={},
-        targets_by_event={},
-        life_cycle_state=(
-            _update_life_cycle_state(old_model_state.life_cycle_state, new_component)
-            if old_model_state.is_component_state
-            else _make_life_cycle_state(new_component, schedule_render)
-        ),
-    )
-
-
-def _make_element_model_state(
-    parent: _ModelState,
-    index: int,
-    key: Any,
-) -> _ModelState:
-    return _ModelState(
-        parent=parent,
-        index=index,
-        key=key,
-        model=Ref(),
-        patch_path=f"{parent.patch_path}/children/{index}",
-        children_by_key={},
-        targets_by_event={},
-    )
-
-
-def _update_element_model_state(
-    old_model_state: _ModelState,
-    new_parent: _ModelState,
-    new_index: int,
-) -> _ModelState:
-    return _ModelState(
-        parent=new_parent,
-        index=new_index,
-        key=old_model_state.key,
-        model=Ref(),  # does not copy the model
-        patch_path=old_model_state.patch_path,
-        children_by_key={},
-        targets_by_event={},
-    )
-
-
-class _ModelState:
-    """State that is bound to a particular element within the layout"""
-
-    __slots__ = (
-        "__weakref__",
-        "_parent_ref",
-        "children_by_key",
-        "index",
-        "key",
-        "life_cycle_state",
-        "model",
-        "patch_path",
-        "targets_by_event",
-    )
-
-    def __init__(
-        self,
-        parent: _ModelState | None,
-        index: int,
-        key: Any,
-        model: Ref[VdomJson],
-        patch_path: str,
-        children_by_key: dict[str, _ModelState],
-        targets_by_event: dict[str, str],
-        life_cycle_state: _LifeCycleState | None = None,
-    ):
-        self.index = index
-        """The index of the element amongst its siblings"""
-
-        self.key = key
-        """A key that uniquely identifies the element amongst its siblings"""
-
-        self.model = model
-        """The actual model of the element"""
-
-        self.patch_path = patch_path
-        """A "/" delimited path to the element within the greater layout"""
-
-        self.children_by_key = children_by_key
-        """Child model states indexed by their unique keys"""
-
-        self.targets_by_event = targets_by_event
-        """The element's event handler target strings indexed by their event name"""
-
-        # === Conditionally Available Attributes ===
-        # It's easier to conditionally assign than to force a null check on every usage
-
-        if parent is not None:
-            self._parent_ref = weakref(parent)
-            """The parent model state"""
-
-        if life_cycle_state is not None:
-            self.life_cycle_state = life_cycle_state
-            """The state for the element's component (if it has one)"""
-
-    @property
-    def is_component_state(self) -> bool:
-        return hasattr(self, "life_cycle_state")
-
-    @property
-    def parent(self) -> _ModelState:
-        parent = self._parent_ref()
-        if parent is None:
-            raise RuntimeError("detached model state")  # nocov
-        return parent
-
-    def append_child(self, child: Any) -> None:
-        self.model.current["children"].append(child)
-
-    def __repr__(self) -> str:  # nocov
-        return f"ModelState({ {s: getattr(self, s, None) for s in self.__slots__} })"
-
-
-def _make_life_cycle_state(
-    component: ComponentType,
-    schedule_render: Callable[[_LifeCycleStateId], None],
-) -> _LifeCycleState:
-    life_cycle_state_id = _LifeCycleStateId(uuid4().hex)
-    return _LifeCycleState(
-        life_cycle_state_id,
-        LifeCycleHook(lambda: schedule_render(life_cycle_state_id)),
-        component,
-    )
-
-
-def _update_life_cycle_state(
-    old_life_cycle_state: _LifeCycleState,
-    new_component: ComponentType,
-) -> _LifeCycleState:
-    return _LifeCycleState(
-        old_life_cycle_state.id,
-        # the hook is preserved across renders because it holds the state
-        old_life_cycle_state.hook,
-        new_component,
-    )
-
-
-_LifeCycleStateId = NewType("_LifeCycleStateId", str)
-
-
-class _LifeCycleState(NamedTuple):
-    """Component state for :class:`_ModelState`"""
-
-    id: _LifeCycleStateId
-    """A unique identifier used in the :class:`~reactpy.core.hooks.LifeCycleHook` callback"""
-
-    hook: LifeCycleHook
-    """The life cycle hook"""
-
-    component: ComponentType
-    """The current component instance"""
-
-
-_Type = TypeVar("_Type")
-
-
-class _ThreadSafeQueue(Generic[_Type]):
-    __slots__ = "_loop", "_queue", "_pending"
-
-    def __init__(self) -> None:
-        self._loop = asyncio.get_running_loop()
-        self._queue: asyncio.Queue[_Type] = asyncio.Queue()
-        self._pending: set[_Type] = set()
-
-    def put(self, value: _Type) -> None:
-        if value not in self._pending:
-            self._pending.add(value)
-            self._loop.call_soon_threadsafe(self._queue.put_nowait, value)
-
-    async def get(self) -> _Type:
-        while True:
-            value = await self._queue.get()
-            if value in self._pending:
-                break
-        self._pending.remove(value)
-        return value
-
-
-def _process_child_type_and_key(
-    children: list[Any],
-) -> Iterator[tuple[Any, _ElementType, Any]]:
-    for index, child in enumerate(children):
-        if isinstance(child, dict):
-            child_type = _DICT_TYPE
-            key = child.get("key")
-        elif isinstance(child, ComponentType):
-            child_type = _COMPONENT_TYPE
-            key = getattr(child, "key", None)
-        else:
-            child = f"{child}"
-            child_type = _STRING_TYPE
-            key = None
-
-        if key is None:
-            key = index
-
-        yield (child, child_type, key)
-
-
-# used in _process_child_type_and_key
-_ElementType = NewType("_ElementType", int)
-_DICT_TYPE = _ElementType(1)
-_COMPONENT_TYPE = _ElementType(2)
-_STRING_TYPE = _ElementType(3)
diff --git a/src/py/reactpy/reactpy/core/serve.py b/src/py/reactpy/reactpy/core/serve.py
deleted file mode 100644
index 61a7e4ce6..000000000
--- a/src/py/reactpy/reactpy/core/serve.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from __future__ import annotations
-
-from collections.abc import Awaitable
-from logging import getLogger
-from typing import Callable
-
-from anyio import create_task_group
-from anyio.abc import TaskGroup
-
-from reactpy.core.types import LayoutEventMessage, LayoutType, LayoutUpdateMessage
-
-logger = getLogger(__name__)
-
-
-SendCoroutine = Callable[[LayoutUpdateMessage], Awaitable[None]]
-"""Send model patches given by a dispatcher"""
-
-RecvCoroutine = Callable[[], Awaitable[LayoutEventMessage]]
-"""Called by a dispatcher to return a :class:`reactpy.core.layout.LayoutEventMessage`
-
-The event will then trigger an :class:`reactpy.core.proto.EventHandlerType` in a layout.
-"""
-
-
-class Stop(BaseException):
-    """Stop serving changes and events
-
-    Raising this error will tell dispatchers to gracefully exit. Typically this is
-    called by code running inside a layout to tell it to stop rendering.
-    """
-
-
-async def serve_layout(
-    layout: LayoutType[LayoutUpdateMessage, LayoutEventMessage],
-    send: SendCoroutine,
-    recv: RecvCoroutine,
-) -> None:
-    """Run a dispatch loop for a single view instance"""
-    async with layout:
-        try:
-            async with create_task_group() as task_group:
-                task_group.start_soon(_single_outgoing_loop, layout, send)
-                task_group.start_soon(_single_incoming_loop, task_group, layout, recv)
-        except Stop:
-            logger.info(f"Stopped serving {layout}")
-
-
-async def _single_outgoing_loop(
-    layout: LayoutType[LayoutUpdateMessage, LayoutEventMessage], send: SendCoroutine
-) -> None:
-    while True:
-        await send(await layout.render())
-
-
-async def _single_incoming_loop(
-    task_group: TaskGroup,
-    layout: LayoutType[LayoutUpdateMessage, LayoutEventMessage],
-    recv: RecvCoroutine,
-) -> None:
-    while True:
-        # We need to fire and forget here so that we avoid waiting on the completion
-        # of this event handler before receiving and running the next one.
-        task_group.start_soon(layout.deliver, await recv())
diff --git a/src/py/reactpy/reactpy/core/types.py b/src/py/reactpy/reactpy/core/types.py
deleted file mode 100644
index 45f300f4f..000000000
--- a/src/py/reactpy/reactpy/core/types.py
+++ /dev/null
@@ -1,235 +0,0 @@
-from __future__ import annotations
-
-import sys
-from collections import namedtuple
-from collections.abc import Mapping, Sequence
-from types import TracebackType
-from typing import (
-    TYPE_CHECKING,
-    Any,
-    Callable,
-    Generic,
-    Literal,
-    NamedTuple,
-    Protocol,
-    TypeVar,
-    overload,
-    runtime_checkable,
-)
-
-from typing_extensions import TypeAlias, TypedDict
-
-_Type = TypeVar("_Type")
-
-
-if TYPE_CHECKING or sys.version_info < (3, 9) or sys.version_info >= (3, 11):
-
-    class State(NamedTuple, Generic[_Type]):
-        value: _Type
-        set_value: Callable[[_Type | Callable[[_Type], _Type]], None]
-
-else:  # nocov
-    State = namedtuple("State", ("value", "set_value"))
-
-
-ComponentConstructor = Callable[..., "ComponentType"]
-"""Simple function returning a new component"""
-
-RootComponentConstructor = Callable[[], "ComponentType"]
-"""The root component should be constructed by a function accepting no arguments."""
-
-
-Key: TypeAlias = "str | int"
-
-
-_OwnType = TypeVar("_OwnType")
-
-
-@runtime_checkable
-class ComponentType(Protocol):
-    """The expected interface for all component-like objects"""
-
-    key: Key | None
-    """An identifier which is unique amongst a component's immediate siblings"""
-
-    type: Any
-    """The function or class defining the behavior of this component
-
-    This is used to see if two component instances share the same definition.
-    """
-
-    def render(self) -> VdomDict | ComponentType | str | None:
-        """Render the component's view model."""
-
-
-_Render = TypeVar("_Render", covariant=True)
-_Event = TypeVar("_Event", contravariant=True)
-
-
-@runtime_checkable
-class LayoutType(Protocol[_Render, _Event]):
-    """Renders and delivers, updates to views and events to handlers, respectively"""
-
-    async def render(self) -> _Render:
-        """Render an update to a view"""
-
-    async def deliver(self, event: _Event) -> None:
-        """Relay an event to its respective handler"""
-
-    async def __aenter__(self) -> LayoutType[_Render, _Event]:
-        """Prepare the layout for its first render"""
-
-    async def __aexit__(
-        self,
-        exc_type: type[Exception],
-        exc_value: Exception,
-        traceback: TracebackType,
-    ) -> bool | None:
-        """Clean up the view after its final render"""
-
-
-VdomAttributes = Mapping[str, Any]
-"""Describes the attributes of a :class:`VdomDict`"""
-
-VdomChild: TypeAlias = "ComponentType | VdomDict | str"
-"""A single child element of a :class:`VdomDict`"""
-
-VdomChildren: TypeAlias = "Sequence[VdomChild] | VdomChild"
-"""Describes a series of :class:`VdomChild` elements"""
-
-
-class _VdomDictOptional(TypedDict, total=False):
-    key: Key | None
-    children: Sequence[
-        # recursive types are not allowed yet:
-        # https://github.com/python/mypy/issues/731
-        ComponentType
-        | dict[str, Any]
-        | str
-        | Any
-    ]
-    attributes: VdomAttributes
-    eventHandlers: EventHandlerDict
-    importSource: ImportSourceDict
-
-
-class _VdomDictRequired(TypedDict, total=True):
-    tagName: str
-
-
-class VdomDict(_VdomDictRequired, _VdomDictOptional):
-    """A :ref:`VDOM` dictionary"""
-
-
-class ImportSourceDict(TypedDict):
-    source: str
-    fallback: Any
-    sourceType: str
-    unmountBeforeUpdate: bool
-
-
-class _OptionalVdomJson(TypedDict, total=False):
-    key: Key
-    error: str
-    children: list[Any]
-    attributes: dict[str, Any]
-    eventHandlers: dict[str, _JsonEventTarget]
-    importSource: _JsonImportSource
-
-
-class _RequiredVdomJson(TypedDict, total=True):
-    tagName: str
-
-
-class VdomJson(_RequiredVdomJson, _OptionalVdomJson):
-    """A JSON serializable form of :class:`VdomDict` matching the :data:`VDOM_JSON_SCHEMA`"""
-
-
-class _JsonEventTarget(TypedDict):
-    target: str
-    preventDefault: bool
-    stopPropagation: bool
-
-
-class _JsonImportSource(TypedDict):
-    source: str
-    fallback: Any
-
-
-EventHandlerMapping = Mapping[str, "EventHandlerType"]
-"""A generic mapping between event names to their handlers"""
-
-EventHandlerDict: TypeAlias = "dict[str, EventHandlerType]"
-"""A dict mapping between event names to their handlers"""
-
-
-class EventHandlerFunc(Protocol):
-    """A coroutine which can handle event data"""
-
-    async def __call__(self, data: Sequence[Any]) -> None:
-        ...
-
-
-@runtime_checkable
-class EventHandlerType(Protocol):
-    """Defines a handler for some event"""
-
-    prevent_default: bool
-    """Whether to block the event from propagating further up the DOM"""
-
-    stop_propagation: bool
-    """Stops the default action associate with the event from taking place."""
-
-    function: EventHandlerFunc
-    """A coroutine which can respond to an event and its data"""
-
-    target: str | None
-    """Typically left as ``None`` except when a static target is useful.
-
-    When testing, it may be useful to specify a static target ID so events can be
-    triggered programmatically.
-
-    .. note::
-
-        When ``None``, it is left to a :class:`LayoutType` to auto generate a unique ID.
-    """
-
-
-class VdomDictConstructor(Protocol):
-    """Standard function for constructing a :class:`VdomDict`"""
-
-    @overload
-    def __call__(self, attributes: VdomAttributes, *children: VdomChildren) -> VdomDict:
-        ...
-
-    @overload
-    def __call__(self, *children: VdomChildren) -> VdomDict:
-        ...
-
-    @overload
-    def __call__(
-        self, *attributes_and_children: VdomAttributes | VdomChildren
-    ) -> VdomDict:
-        ...
-
-
-class LayoutUpdateMessage(TypedDict):
-    """A message describing an update to a layout"""
-
-    type: Literal["layout-update"]
-    """The type of message"""
-    path: str
-    """JSON Pointer path to the model element being updated"""
-    model: VdomJson
-    """The model to assign at the given JSON Pointer path"""
-
-
-class LayoutEventMessage(TypedDict):
-    """Message describing an event originating from an element in the layout"""
-
-    type: Literal["layout-event"]
-    """The type of message"""
-    target: str
-    """The ID of the event handler."""
-    data: Sequence[Any]
-    """A list of event data passed to the event handler."""
diff --git a/src/py/reactpy/reactpy/core/vdom.py b/src/py/reactpy/reactpy/core/vdom.py
deleted file mode 100644
index 0548c6afc..000000000
--- a/src/py/reactpy/reactpy/core/vdom.py
+++ /dev/null
@@ -1,355 +0,0 @@
-from __future__ import annotations
-
-import logging
-from collections.abc import Mapping, Sequence
-from functools import wraps
-from typing import Any, Protocol, cast, overload
-
-from fastjsonschema import compile as compile_json_schema
-
-from reactpy._warnings import warn
-from reactpy.config import REACTPY_DEBUG_MODE
-from reactpy.core._f_back import f_module_name
-from reactpy.core.events import EventHandler, to_event_handler_function
-from reactpy.core.types import (
-    ComponentType,
-    EventHandlerDict,
-    EventHandlerType,
-    ImportSourceDict,
-    Key,
-    VdomAttributes,
-    VdomChild,
-    VdomChildren,
-    VdomDict,
-    VdomDictConstructor,
-    VdomJson,
-)
-
-logger = logging.getLogger()
-
-
-VDOM_JSON_SCHEMA = {
-    "$schema": "http://json-schema.org/draft-07/schema",
-    "$ref": "#/definitions/element",
-    "definitions": {
-        "element": {
-            "type": "object",
-            "properties": {
-                "tagName": {"type": "string"},
-                "key": {"type": ["string", "number", "null"]},
-                "error": {"type": "string"},
-                "children": {"$ref": "#/definitions/elementChildren"},
-                "attributes": {"type": "object"},
-                "eventHandlers": {"$ref": "#/definitions/elementEventHandlers"},
-                "importSource": {"$ref": "#/definitions/importSource"},
-            },
-            # The 'tagName' is required because its presence is a useful indicator of
-            # whether a dictionary describes a VDOM model or not.
-            "required": ["tagName"],
-            "dependentSchemas": {
-                # When 'error' is given, the 'tagName' should be empty.
-                "error": {"properties": {"tagName": {"maxLength": 0}}}
-            },
-        },
-        "elementChildren": {
-            "type": "array",
-            "items": {"$ref": "#/definitions/elementOrString"},
-        },
-        "elementEventHandlers": {
-            "type": "object",
-            "patternProperties": {
-                ".*": {"$ref": "#/definitions/eventHandler"},
-            },
-        },
-        "eventHandler": {
-            "type": "object",
-            "properties": {
-                "target": {"type": "string"},
-                "preventDefault": {"type": "boolean"},
-                "stopPropagation": {"type": "boolean"},
-            },
-            "required": ["target"],
-        },
-        "importSource": {
-            "type": "object",
-            "properties": {
-                "source": {"type": "string"},
-                "sourceType": {"enum": ["URL", "NAME"]},
-                "fallback": {
-                    "type": ["object", "string", "null"],
-                    "if": {"not": {"type": "null"}},
-                    "then": {"$ref": "#/definitions/elementOrString"},
-                },
-                "unmountBeforeUpdate": {"type": "boolean"},
-            },
-            "required": ["source"],
-        },
-        "elementOrString": {
-            "type": ["object", "string"],
-            "if": {"type": "object"},
-            "then": {"$ref": "#/definitions/element"},
-        },
-    },
-}
-"""JSON Schema describing serialized VDOM - see :ref:`VDOM` for more info"""
-
-
-# we can't add a docstring to this because Sphinx doesn't know how to find its source
-_COMPILED_VDOM_VALIDATOR = compile_json_schema(VDOM_JSON_SCHEMA)
-
-
-def validate_vdom_json(value: Any) -> VdomJson:
-    """Validate serialized VDOM - see :attr:`VDOM_JSON_SCHEMA` for more info"""
-    _COMPILED_VDOM_VALIDATOR(value)
-    return cast(VdomJson, value)
-
-
-def is_vdom(value: Any) -> bool:
-    """Return whether a value is a :class:`VdomDict`
-
-    This employs a very simple heuristic - something is VDOM if:
-
-    1. It is a ``dict`` instance
-    2. It contains the key ``"tagName"``
-    3. The value of the key ``"tagName"`` is a string
-
-    .. note::
-
-        Performing an ``isinstance(value, VdomDict)`` check is too restrictive since the
-        user would be forced to import ``VdomDict`` every time they needed to declare a
-        VDOM element. Giving the user more flexibility, at the cost of this check's
-        accuracy, is worth it.
-    """
-    return (
-        isinstance(value, dict)
-        and "tagName" in value
-        and isinstance(value["tagName"], str)
-    )
-
-
-@overload
-def vdom(tag: str, *children: VdomChildren) -> VdomDict:
-    ...
-
-
-@overload
-def vdom(tag: str, attributes: VdomAttributes, *children: VdomChildren) -> VdomDict:
-    ...
-
-
-def vdom(
-    tag: str,
-    *attributes_and_children: Any,
-    **kwargs: Any,
-) -> VdomDict:
-    """A helper function for creating VDOM elements.
-
-    Parameters:
-        tag:
-            The type of element (e.g. 'div', 'h1', 'img')
-        attributes_and_children:
-            An optional attribute mapping followed by any number of children or
-            iterables of children. The attribute mapping **must** precede the children,
-            or children which will be merged into their respective parts of the model.
-        key:
-            A string indicating the identity of a particular element. This is significant
-            to preserve event handlers across updates - without a key, a re-render would
-            cause these handlers to be deleted, but with a key, they would be redirected
-            to any newly defined handlers.
-        event_handlers:
-            Maps event types to coroutines that are responsible for handling those events.
-        import_source:
-            (subject to change) specifies javascript that, when evaluated returns a
-            React component.
-    """
-    if kwargs:  # nocov
-        if "key" in kwargs:
-            if attributes_and_children:
-                maybe_attributes, *children = attributes_and_children
-                if _is_attributes(maybe_attributes):
-                    attributes_and_children = (
-                        {**maybe_attributes, "key": kwargs.pop("key")},
-                        *children,
-                    )
-                else:
-                    attributes_and_children = (
-                        {"key": kwargs.pop("key")},
-                        maybe_attributes,
-                        *children,
-                    )
-            else:
-                attributes_and_children = ({"key": kwargs.pop("key")},)
-            warn(
-                "An element's 'key' must be declared in an attribute dict instead "
-                "of as a keyword argument. This will error in a future version.",
-                DeprecationWarning,
-            )
-
-        if kwargs:
-            msg = f"Extra keyword arguments {kwargs}"
-            raise ValueError(msg)
-
-    model: VdomDict = {"tagName": tag}
-
-    if not attributes_and_children:
-        return model
-
-    attributes, children = separate_attributes_and_children(attributes_and_children)
-    key = attributes.pop("key", None)
-    attributes, event_handlers = separate_attributes_and_event_handlers(attributes)
-
-    if attributes:
-        model["attributes"] = attributes
-
-    if children:
-        model["children"] = children
-
-    if key is not None:
-        model["key"] = key
-
-    if event_handlers:
-        model["eventHandlers"] = event_handlers
-
-    return model
-
-
-def make_vdom_constructor(
-    tag: str, allow_children: bool = True, import_source: ImportSourceDict | None = None
-) -> VdomDictConstructor:
-    """Return a constructor for VDOM dictionaries with the given tag name.
-
-    The resulting callable will have the same interface as :func:`vdom` but without its
-    first ``tag`` argument.
-    """
-
-    def constructor(*attributes_and_children: Any, **kwargs: Any) -> VdomDict:
-        model = vdom(tag, *attributes_and_children, **kwargs)
-        if not allow_children and "children" in model:
-            msg = f"{tag!r} nodes cannot have children."
-            raise TypeError(msg)
-        if import_source:
-            model["importSource"] = import_source
-        return model
-
-    # replicate common function attributes
-    constructor.__name__ = tag
-    constructor.__doc__ = (
-        "Return a new "
-        f"`<{tag}> <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/{tag}>`__ "
-        "element represented by a :class:`VdomDict`."
-    )
-
-    module_name = f_module_name(1)
-    if module_name:
-        constructor.__module__ = module_name
-        constructor.__qualname__ = f"{module_name}.{tag}"
-
-    return cast(VdomDictConstructor, constructor)
-
-
-def custom_vdom_constructor(func: _CustomVdomDictConstructor) -> VdomDictConstructor:
-    """Cast function to VdomDictConstructor"""
-
-    @wraps(func)
-    def wrapper(*attributes_and_children: Any) -> VdomDict:
-        attributes, children = separate_attributes_and_children(attributes_and_children)
-        key = attributes.pop("key", None)
-        attributes, event_handlers = separate_attributes_and_event_handlers(attributes)
-        return func(attributes, children, key, event_handlers)
-
-    return cast(VdomDictConstructor, wrapper)
-
-
-def separate_attributes_and_children(
-    values: Sequence[Any],
-) -> tuple[dict[str, Any], list[Any]]:
-    if not values:
-        return {}, []
-
-    attributes: dict[str, Any]
-    children_or_iterables: Sequence[Any]
-    if _is_attributes(values[0]):
-        attributes, *children_or_iterables = values
-    else:
-        attributes = {}
-        children_or_iterables = values
-
-    children: list[Any] = []
-    for child in children_or_iterables:
-        if _is_single_child(child):
-            children.append(child)
-        else:
-            children.extend(child)
-
-    return attributes, children
-
-
-def separate_attributes_and_event_handlers(
-    attributes: Mapping[str, Any]
-) -> tuple[dict[str, Any], EventHandlerDict]:
-    separated_attributes = {}
-    separated_event_handlers: dict[str, EventHandlerType] = {}
-
-    for k, v in attributes.items():
-        handler: EventHandlerType
-
-        if callable(v):
-            handler = EventHandler(to_event_handler_function(v))
-        elif (
-            # isinstance check on protocols is slow - use function attr pre-check as a
-            # quick filter before actually performing slow EventHandlerType type check
-            hasattr(v, "function")
-            and isinstance(v, EventHandlerType)
-        ):
-            handler = v
-        else:
-            separated_attributes[k] = v
-            continue
-
-        separated_event_handlers[k] = handler
-
-    return separated_attributes, dict(separated_event_handlers.items())
-
-
-def _is_attributes(value: Any) -> bool:
-    return isinstance(value, Mapping) and "tagName" not in value
-
-
-def _is_single_child(value: Any) -> bool:
-    if isinstance(value, (str, Mapping)) or not hasattr(value, "__iter__"):
-        return True
-    if REACTPY_DEBUG_MODE.current:
-        _validate_child_key_integrity(value)
-    return False
-
-
-def _validate_child_key_integrity(value: Any) -> None:
-    if hasattr(value, "__iter__") and not hasattr(value, "__len__"):
-        logger.error(
-            f"Did not verify key-path integrity of children in generator {value} "
-            "- pass a sequence (i.e. list of finite length) in order to verify"
-        )
-    else:
-        for child in value:
-            if isinstance(child, ComponentType) and child.key is None:
-                logger.error(f"Key not specified for child in list {child}")
-            elif isinstance(child, Mapping) and "key" not in child:
-                # remove 'children' to reduce log spam
-                child_copy = {**child, "children": _EllipsisRepr()}
-                logger.error(f"Key not specified for child in list {child_copy}")
-
-
-class _CustomVdomDictConstructor(Protocol):
-    def __call__(
-        self,
-        attributes: VdomAttributes,
-        children: Sequence[VdomChild],
-        key: Key | None,
-        event_handlers: EventHandlerDict,
-    ) -> VdomDict:
-        ...
-
-
-class _EllipsisRepr:
-    def __repr__(self) -> str:
-        return "..."
diff --git a/src/py/reactpy/reactpy/future.py b/src/py/reactpy/reactpy/future.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/reactpy/html.py b/src/py/reactpy/reactpy/html.py
deleted file mode 100644
index 22d318639..000000000
--- a/src/py/reactpy/reactpy/html.py
+++ /dev/null
@@ -1,544 +0,0 @@
-"""
-
-**Fragment**
-
-- :func:`_`
-
-**Document metadata**
-
-- :func:`base`
-- :func:`head`
-- :func:`link`
-- :func:`meta`
-- :func:`style`
-- :func:`title`
-
-**Content sectioning**
-
-- :func:`address`
-- :func:`article`
-- :func:`aside`
-- :func:`footer`
-- :func:`header`
-- :func:`h1`
-- :func:`h2`
-- :func:`h3`
-- :func:`h4`
-- :func:`h5`
-- :func:`h6`
-- :func:`main`
-- :func:`nav`
-- :func:`section`
-
-**Text content**
-
-- :func:`blockquote`
-- :func:`dd`
-- :func:`div`
-- :func:`dl`
-- :func:`dt`
-- :func:`figcaption`
-- :func:`figure`
-- :func:`hr`
-- :func:`li`
-- :func:`ol`
-- :func:`p`
-- :func:`pre`
-- :func:`ul`
-
-**Inline text semantics**
-
-- :func:`a`
-- :func:`abbr`
-- :func:`b`
-- :func:`bdi`
-- :func:`bdo`
-- :func:`br`
-- :func:`cite`
-- :func:`code`
-- :func:`data`
-- :func:`em`
-- :func:`i`
-- :func:`kbd`
-- :func:`mark`
-- :func:`q`
-- :func:`rp`
-- :func:`rt`
-- :func:`ruby`
-- :func:`s`
-- :func:`samp`
-- :func:`small`
-- :func:`span`
-- :func:`strong`
-- :func:`sub`
-- :func:`sup`
-- :func:`time`
-- :func:`u`
-- :func:`var`
-- :func:`wbr`
-
-**Image and video**
-
-- :func:`area`
-- :func:`audio`
-- :func:`img`
-- :func:`map`
-- :func:`track`
-- :func:`video`
-
-**Embedded content**
-
-- :func:`embed`
-- :func:`iframe`
-- :func:`object`
-- :func:`param`
-- :func:`picture`
-- :func:`portal`
-- :func:`source`
-
-**SVG and MathML**
-
-- :func:`svg`
-- :func:`math`
-
-**Scripting**
-
-- :func:`canvas`
-- :func:`noscript`
-- :func:`script`
-
-**Demarcating edits**
-
-- :func:`del_`
-- :func:`ins`
-
-**Table content**
-
-- :func:`caption`
-- :func:`col`
-- :func:`colgroup`
-- :func:`table`
-- :func:`tbody`
-- :func:`td`
-- :func:`tfoot`
-- :func:`th`
-- :func:`thead`
-- :func:`tr`
-
-**Forms**
-
-- :func:`button`
-- :func:`fieldset`
-- :func:`form`
-- :func:`input`
-- :func:`label`
-- :func:`legend`
-- :func:`meter`
-- :func:`option`
-- :func:`output`
-- :func:`progress`
-- :func:`select`
-- :func:`textarea`
-
-**Interactive elements**
-
-- :func:`details`
-- :func:`dialog`
-- :func:`menu`
-- :func:`menuitem`
-- :func:`summary`
-
-**Web components**
-
-- :func:`slot`
-- :func:`template`
-
-.. autofunction:: _
-"""
-
-from __future__ import annotations
-
-from collections.abc import Sequence
-
-from reactpy.core.types import (
-    EventHandlerDict,
-    Key,
-    VdomAttributes,
-    VdomChild,
-    VdomDict,
-)
-from reactpy.core.vdom import custom_vdom_constructor, make_vdom_constructor
-
-__all__ = (
-    "_",
-    "a",
-    "abbr",
-    "address",
-    "area",
-    "article",
-    "aside",
-    "audio",
-    "b",
-    "base",
-    "bdi",
-    "bdo",
-    "blockquote",
-    "br",
-    "button",
-    "canvas",
-    "caption",
-    "cite",
-    "code",
-    "col",
-    "colgroup",
-    "data",
-    "dd",
-    "del_",
-    "details",
-    "dialog",
-    "div",
-    "dl",
-    "dt",
-    "em",
-    "embed",
-    "fieldset",
-    "figcaption",
-    "figure",
-    "footer",
-    "form",
-    "h1",
-    "h2",
-    "h3",
-    "h4",
-    "h5",
-    "h6",
-    "head",
-    "header",
-    "hr",
-    "i",
-    "iframe",
-    "img",
-    "input",
-    "ins",
-    "kbd",
-    "label",
-    "legend",
-    "li",
-    "link",
-    "main",
-    "map",
-    "mark",
-    "math",
-    "menu",
-    "menuitem",
-    "meta",
-    "meter",
-    "nav",
-    "noscript",
-    "object",
-    "ol",
-    "option",
-    "output",
-    "p",
-    "param",
-    "picture",
-    "portal",
-    "pre",
-    "progress",
-    "q",
-    "rp",
-    "rt",
-    "ruby",
-    "s",
-    "samp",
-    "script",
-    "section",
-    "select",
-    "slot",
-    "small",
-    "source",
-    "span",
-    "strong",
-    "style",
-    "sub",
-    "summary",
-    "sup",
-    "svg",
-    "table",
-    "tbody",
-    "td",
-    "template",
-    "textarea",
-    "tfoot",
-    "th",
-    "thead",
-    "time",
-    "title",
-    "tr",
-    "track",
-    "u",
-    "ul",
-    "var",
-    "video",
-    "wbr",
-)
-
-
-def _fragment(
-    attributes: VdomAttributes,
-    children: Sequence[VdomChild],
-    key: Key | None,
-    event_handlers: EventHandlerDict,
-) -> VdomDict:
-    """An HTML fragment - this element will not appear in the DOM"""
-    if attributes or event_handlers:
-        msg = "Fragments cannot have attributes besides 'key'"
-        raise TypeError(msg)
-    model: VdomDict = {"tagName": ""}
-
-    if children:
-        model["children"] = children
-
-    if key is not None:
-        model["key"] = key
-
-    return model
-
-
-# FIXME: https://github.com/PyCQA/pylint/issues/5784
-_ = custom_vdom_constructor(_fragment)
-
-
-# Document metadata
-base = make_vdom_constructor("base")
-head = make_vdom_constructor("head")
-link = make_vdom_constructor("link")
-meta = make_vdom_constructor("meta")
-style = make_vdom_constructor("style")
-title = make_vdom_constructor("title")
-
-# Content sectioning
-address = make_vdom_constructor("address")
-article = make_vdom_constructor("article")
-aside = make_vdom_constructor("aside")
-footer = make_vdom_constructor("footer")
-header = make_vdom_constructor("header")
-h1 = make_vdom_constructor("h1")
-h2 = make_vdom_constructor("h2")
-h3 = make_vdom_constructor("h3")
-h4 = make_vdom_constructor("h4")
-h5 = make_vdom_constructor("h5")
-h6 = make_vdom_constructor("h6")
-main = make_vdom_constructor("main")
-nav = make_vdom_constructor("nav")
-section = make_vdom_constructor("section")
-
-# Text content
-blockquote = make_vdom_constructor("blockquote")
-dd = make_vdom_constructor("dd")
-div = make_vdom_constructor("div")
-dl = make_vdom_constructor("dl")
-dt = make_vdom_constructor("dt")
-figcaption = make_vdom_constructor("figcaption")
-figure = make_vdom_constructor("figure")
-hr = make_vdom_constructor("hr", allow_children=False)
-li = make_vdom_constructor("li")
-ol = make_vdom_constructor("ol")
-p = make_vdom_constructor("p")
-pre = make_vdom_constructor("pre")
-ul = make_vdom_constructor("ul")
-
-# Inline text semantics
-a = make_vdom_constructor("a")
-abbr = make_vdom_constructor("abbr")
-b = make_vdom_constructor("b")
-bdi = make_vdom_constructor("bdi")
-bdo = make_vdom_constructor("bdo")
-br = make_vdom_constructor("br", allow_children=False)
-cite = make_vdom_constructor("cite")
-code = make_vdom_constructor("code")
-data = make_vdom_constructor("data")
-em = make_vdom_constructor("em")
-i = make_vdom_constructor("i")
-kbd = make_vdom_constructor("kbd")
-mark = make_vdom_constructor("mark")
-q = make_vdom_constructor("q")
-rp = make_vdom_constructor("rp")
-rt = make_vdom_constructor("rt")
-ruby = make_vdom_constructor("ruby")
-s = make_vdom_constructor("s")
-samp = make_vdom_constructor("samp")
-small = make_vdom_constructor("small")
-span = make_vdom_constructor("span")
-strong = make_vdom_constructor("strong")
-sub = make_vdom_constructor("sub")
-sup = make_vdom_constructor("sup")
-time = make_vdom_constructor("time")
-u = make_vdom_constructor("u")
-var = make_vdom_constructor("var")
-wbr = make_vdom_constructor("wbr")
-
-# Image and video
-area = make_vdom_constructor("area", allow_children=False)
-audio = make_vdom_constructor("audio")
-img = make_vdom_constructor("img", allow_children=False)
-map = make_vdom_constructor("map")  # noqa: A001
-track = make_vdom_constructor("track")
-video = make_vdom_constructor("video")
-
-# Embedded content
-embed = make_vdom_constructor("embed", allow_children=False)
-iframe = make_vdom_constructor("iframe", allow_children=False)
-object = make_vdom_constructor("object")  # noqa: A001
-param = make_vdom_constructor("param")
-picture = make_vdom_constructor("picture")
-portal = make_vdom_constructor("portal", allow_children=False)
-source = make_vdom_constructor("source", allow_children=False)
-
-# SVG and MathML
-svg = make_vdom_constructor("svg")
-math = make_vdom_constructor("math")
-
-# Scripting
-canvas = make_vdom_constructor("canvas")
-noscript = make_vdom_constructor("noscript")
-
-
-def _script(
-    attributes: VdomAttributes,
-    children: Sequence[VdomChild],
-    key: Key | None,
-    event_handlers: EventHandlerDict,
-) -> VdomDict:
-    """Create a new `<script> <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script>`__ element.
-
-    .. warning::
-
-        Be careful to sanitize data from untrusted sources before using it in a script.
-        See the "Notes" for more details
-
-    This behaves slightly differently than a normal script element in that it may be run
-    multiple times if its key changes (depending on specific browser behaviors). If no
-    key is given, the key is inferred to be the content of the script or, lastly its
-    'src' attribute if that is given.
-
-    If no attributes are given, the content of the script may evaluate to a function.
-    This function will be called when the script is initially created or when the
-    content of the script changes. The function may itself optionally return a teardown
-    function that is called when the script element is removed from the tree, or when
-    the script content changes.
-
-    Notes:
-        Do not use unsanitized data from untrusted sources anywhere in your script.
-        Doing so may allow for malicious code injection. Consider this **insecure**
-        code:
-
-        .. code-block::
-
-            my_script = html.script(f"console.log('{user_bio}');")
-
-        A clever attacker could construct ``user_bio`` such that they could escape the
-        string and execute arbitrary code to perform cross-site scripting
-        (`XSS <https://en.wikipedia.org/wiki/Cross-site_scripting>`__`). For example,
-        what if ``user_bio`` were of the form:
-
-        .. code-block:: text
-
-            '); attackerCodeHere(); ('
-
-        This would allow the following Javascript code to be executed client-side:
-
-        .. code-block:: js
-
-            console.log(''); attackerCodeHere(); ('');
-
-        One way to avoid this could be to escape ``user_bio`` so as to prevent the
-        injection of Javascript code. For example:
-
-        .. code-block:: python
-
-            import json
-            my_script = html.script(f"console.log({json.dumps(user_bio)});")
-
-        This would prevent the injection of Javascript code by escaping the ``user_bio``
-        string. In this case, the following client-side code would be executed instead:
-
-        .. code-block:: js
-
-            console.log("'); attackerCodeHere(); ('");
-
-        This is a very simple example, but it illustrates the point that you should
-        always be careful when using unsanitized data from untrusted sources.
-    """
-    model: VdomDict = {"tagName": "script"}
-
-    if event_handlers:
-        msg = "'script' elements do not support event handlers"
-        raise ValueError(msg)
-
-    if children:
-        if len(children) > 1:
-            msg = "'script' nodes may have, at most, one child."
-            raise ValueError(msg)
-        elif not isinstance(children[0], str):
-            msg = "The child of a 'script' must be a string."
-            raise ValueError(msg)
-        else:
-            model["children"] = children
-            if key is None:
-                key = children[0]
-
-    if attributes:
-        model["attributes"] = attributes
-        if key is None and not children and "src" in attributes:
-            key = attributes["src"]
-
-    if key is not None:
-        model["key"] = key
-
-    return model
-
-
-# FIXME: https://github.com/PyCQA/pylint/issues/5784
-script = custom_vdom_constructor(_script)
-
-# Demarcating edits
-del_ = make_vdom_constructor("del")
-ins = make_vdom_constructor("ins")
-
-# Table content
-caption = make_vdom_constructor("caption")
-col = make_vdom_constructor("col")
-colgroup = make_vdom_constructor("colgroup")
-table = make_vdom_constructor("table")
-tbody = make_vdom_constructor("tbody")
-td = make_vdom_constructor("td")
-tfoot = make_vdom_constructor("tfoot")
-th = make_vdom_constructor("th")
-thead = make_vdom_constructor("thead")
-tr = make_vdom_constructor("tr")
-
-# Forms
-button = make_vdom_constructor("button")
-fieldset = make_vdom_constructor("fieldset")
-form = make_vdom_constructor("form")
-input = make_vdom_constructor("input", allow_children=False)  # noqa: A001
-label = make_vdom_constructor("label")
-legend = make_vdom_constructor("legend")
-meter = make_vdom_constructor("meter")
-option = make_vdom_constructor("option")
-output = make_vdom_constructor("output")
-progress = make_vdom_constructor("progress")
-select = make_vdom_constructor("select")
-textarea = make_vdom_constructor("textarea")
-
-# Interactive elements
-details = make_vdom_constructor("details")
-dialog = make_vdom_constructor("dialog")
-menu = make_vdom_constructor("menu")
-menuitem = make_vdom_constructor("menuitem")
-summary = make_vdom_constructor("summary")
-
-# Web components
-slot = make_vdom_constructor("slot")
-template = make_vdom_constructor("template")
diff --git a/src/py/reactpy/reactpy/logging.py b/src/py/reactpy/reactpy/logging.py
deleted file mode 100644
index f10414cb6..000000000
--- a/src/py/reactpy/reactpy/logging.py
+++ /dev/null
@@ -1,42 +0,0 @@
-import logging
-import sys
-from logging.config import dictConfig
-
-from reactpy.config import REACTPY_DEBUG_MODE
-
-dictConfig(
-    {
-        "version": 1,
-        "disable_existing_loggers": False,
-        "loggers": {
-            "reactpy": {"handlers": ["console"]},
-        },
-        "handlers": {
-            "console": {
-                "class": "logging.StreamHandler",
-                "formatter": "generic",
-                "stream": sys.stdout,
-            }
-        },
-        "formatters": {
-            "generic": {
-                "format": "%(asctime)s | %(log_color)s%(levelname)s%(reset)s | %(message)s",
-                "datefmt": r"%Y-%m-%dT%H:%M:%S%z",
-                "class": "colorlog.ColoredFormatter",
-            }
-        },
-    }
-)
-
-
-ROOT_LOGGER = logging.getLogger("reactpy")
-"""ReactPy's root logger instance"""
-
-
-@REACTPY_DEBUG_MODE.subscribe
-def _set_debug_level(debug: bool) -> None:
-    if debug:
-        ROOT_LOGGER.setLevel("DEBUG")
-        ROOT_LOGGER.debug("ReactPy is in debug mode")
-    else:
-        ROOT_LOGGER.setLevel("INFO")
diff --git a/src/py/reactpy/reactpy/py.typed b/src/py/reactpy/reactpy/py.typed
deleted file mode 100644
index 7632ecf77..000000000
--- a/src/py/reactpy/reactpy/py.typed
+++ /dev/null
@@ -1 +0,0 @@
-# Marker file for PEP 561
diff --git a/src/py/reactpy/reactpy/sample.py b/src/py/reactpy/reactpy/sample.py
deleted file mode 100644
index 8509c773d..000000000
--- a/src/py/reactpy/reactpy/sample.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from __future__ import annotations
-
-from reactpy import html
-from reactpy.core.component import component
-from reactpy.core.types import VdomDict
-
-
-@component
-def SampleApp() -> VdomDict:
-    return html.div(
-        {"id": "sample", "style": {"padding": "15px"}},
-        html.h1("Sample Application"),
-        html.p(
-            "This is a basic application made with ReactPy. Click ",
-            html.a(
-                {"href": "https://pypi.org/project/reactpy/", "target": "_blank"},
-                "here",
-            ),
-            " to learn more.",
-        ),
-    )
diff --git a/src/py/reactpy/reactpy/svg.py b/src/py/reactpy/reactpy/svg.py
deleted file mode 100644
index ebfe58ee6..000000000
--- a/src/py/reactpy/reactpy/svg.py
+++ /dev/null
@@ -1,139 +0,0 @@
-from reactpy.core.vdom import make_vdom_constructor
-
-__all__ = (
-    "a",
-    "animate",
-    "animate_motion",
-    "animate_transform",
-    "circle",
-    "clip_path",
-    "defs",
-    "desc",
-    "discard",
-    "ellipse",
-    "fe_blend",
-    "fe_color_matrix",
-    "fe_component_transfer",
-    "fe_composite",
-    "fe_convolve_matrix",
-    "fe_diffuse_lighting",
-    "fe_displacement_map",
-    "fe_distant_light",
-    "fe_drop_shadow",
-    "fe_flood",
-    "fe_func_a",
-    "fe_func_b",
-    "fe_func_g",
-    "fe_func_r",
-    "fe_gaussian_blur",
-    "fe_image",
-    "fe_merge",
-    "fe_merge_node",
-    "fe_morphology",
-    "fe_offset",
-    "fe_point_light",
-    "fe_specular_lighting",
-    "fe_spot_light",
-    "fe_tile",
-    "fe_turbulence",
-    "filter",
-    "foreign_object",
-    "g",
-    "hatch",
-    "hatchpath",
-    "image",
-    "line",
-    "linear_gradient",
-    "marker",
-    "mask",
-    "metadata",
-    "mpath",
-    "path",
-    "pattern",
-    "polygon",
-    "polyline",
-    "radial_gradient",
-    "rect",
-    "script",
-    "set",
-    "stop",
-    "style",
-    "svg",
-    "switch",
-    "symbol",
-    "text",
-    "text_path",
-    "title",
-    "tspan",
-    "use",
-    "view",
-)
-
-a = make_vdom_constructor("a")
-animate = make_vdom_constructor("animate", allow_children=False)
-animate_motion = make_vdom_constructor("animateMotion", allow_children=False)
-animate_transform = make_vdom_constructor("animateTransform", allow_children=False)
-circle = make_vdom_constructor("circle", allow_children=False)
-clip_path = make_vdom_constructor("clipPath")
-defs = make_vdom_constructor("defs")
-desc = make_vdom_constructor("desc", allow_children=False)
-discard = make_vdom_constructor("discard", allow_children=False)
-ellipse = make_vdom_constructor("ellipse", allow_children=False)
-fe_blend = make_vdom_constructor("feBlend", allow_children=False)
-fe_color_matrix = make_vdom_constructor("feColorMatrix", allow_children=False)
-fe_component_transfer = make_vdom_constructor(
-    "feComponentTransfer", allow_children=False
-)
-fe_composite = make_vdom_constructor("feComposite", allow_children=False)
-fe_convolve_matrix = make_vdom_constructor("feConvolveMatrix", allow_children=False)
-fe_diffuse_lighting = make_vdom_constructor("feDiffuseLighting", allow_children=False)
-fe_displacement_map = make_vdom_constructor("feDisplacementMap", allow_children=False)
-fe_distant_light = make_vdom_constructor("feDistantLight", allow_children=False)
-fe_drop_shadow = make_vdom_constructor("feDropShadow", allow_children=False)
-fe_flood = make_vdom_constructor("feFlood", allow_children=False)
-fe_func_a = make_vdom_constructor("feFuncA", allow_children=False)
-fe_func_b = make_vdom_constructor("feFuncB", allow_children=False)
-fe_func_g = make_vdom_constructor("feFuncG", allow_children=False)
-fe_func_r = make_vdom_constructor("feFuncR", allow_children=False)
-fe_gaussian_blur = make_vdom_constructor("feGaussianBlur", allow_children=False)
-fe_image = make_vdom_constructor("feImage", allow_children=False)
-fe_merge = make_vdom_constructor("feMerge", allow_children=False)
-fe_merge_node = make_vdom_constructor("feMergeNode", allow_children=False)
-fe_morphology = make_vdom_constructor("feMorphology", allow_children=False)
-fe_offset = make_vdom_constructor("feOffset", allow_children=False)
-fe_point_light = make_vdom_constructor("fePointLight", allow_children=False)
-fe_specular_lighting = make_vdom_constructor("feSpecularLighting", allow_children=False)
-fe_spot_light = make_vdom_constructor("feSpotLight", allow_children=False)
-fe_tile = make_vdom_constructor("feTile", allow_children=False)
-fe_turbulence = make_vdom_constructor("feTurbulence", allow_children=False)
-filter = make_vdom_constructor("filter", allow_children=False)  # noqa: A001
-foreign_object = make_vdom_constructor("foreignObject", allow_children=False)
-g = make_vdom_constructor("g")
-hatch = make_vdom_constructor("hatch", allow_children=False)
-hatchpath = make_vdom_constructor("hatchpath", allow_children=False)
-image = make_vdom_constructor("image", allow_children=False)
-line = make_vdom_constructor("line", allow_children=False)
-linear_gradient = make_vdom_constructor("linearGradient", allow_children=False)
-marker = make_vdom_constructor("marker")
-mask = make_vdom_constructor("mask")
-metadata = make_vdom_constructor("metadata", allow_children=False)
-mpath = make_vdom_constructor("mpath", allow_children=False)
-path = make_vdom_constructor("path", allow_children=False)
-pattern = make_vdom_constructor("pattern")
-polygon = make_vdom_constructor("polygon", allow_children=False)
-polyline = make_vdom_constructor("polyline", allow_children=False)
-radial_gradient = make_vdom_constructor("radialGradient", allow_children=False)
-rect = make_vdom_constructor("rect", allow_children=False)
-script = make_vdom_constructor("script", allow_children=False)
-set = make_vdom_constructor("set", allow_children=False)  # noqa: A001
-stop = make_vdom_constructor("stop", allow_children=False)
-style = make_vdom_constructor("style", allow_children=False)
-svg = make_vdom_constructor("svg")
-switch = make_vdom_constructor("switch")
-symbol = make_vdom_constructor("symbol")
-text = make_vdom_constructor("text", allow_children=False)
-text_path = make_vdom_constructor("textPath", allow_children=False)
-title = make_vdom_constructor("title", allow_children=False)
-tspan = make_vdom_constructor("tspan", allow_children=False)
-use = make_vdom_constructor("use", allow_children=False)
-view = make_vdom_constructor("view", allow_children=False)
diff --git a/src/py/reactpy/reactpy/testing/__init__.py b/src/py/reactpy/reactpy/testing/__init__.py
deleted file mode 100644
index 9f61cec57..000000000
--- a/src/py/reactpy/reactpy/testing/__init__.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from reactpy.testing.backend import BackendFixture
-from reactpy.testing.common import (
-    HookCatcher,
-    StaticEventHandler,
-    clear_reactpy_web_modules_dir,
-    poll,
-)
-from reactpy.testing.display import DisplayFixture
-from reactpy.testing.logs import (
-    LogAssertionError,
-    assert_reactpy_did_log,
-    assert_reactpy_did_not_log,
-    capture_reactpy_logs,
-)
-
-__all__ = [
-    "assert_reactpy_did_not_log",
-    "assert_reactpy_did_log",
-    "capture_reactpy_logs",
-    "clear_reactpy_web_modules_dir",
-    "DisplayFixture",
-    "HookCatcher",
-    "LogAssertionError",
-    "poll",
-    "BackendFixture",
-    "StaticEventHandler",
-]
diff --git a/src/py/reactpy/reactpy/testing/backend.py b/src/py/reactpy/reactpy/testing/backend.py
deleted file mode 100644
index 549e16056..000000000
--- a/src/py/reactpy/reactpy/testing/backend.py
+++ /dev/null
@@ -1,230 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import logging
-from contextlib import AsyncExitStack
-from types import TracebackType
-from typing import Any, Callable
-from urllib.parse import urlencode, urlunparse
-
-from reactpy.backend import default as default_server
-from reactpy.backend.types import BackendImplementation
-from reactpy.backend.utils import find_available_port
-from reactpy.config import REACTPY_TESTING_DEFAULT_TIMEOUT
-from reactpy.core.component import component
-from reactpy.core.hooks import use_callback, use_effect, use_state
-from reactpy.core.types import ComponentConstructor
-from reactpy.testing.logs import (
-    LogAssertionError,
-    capture_reactpy_logs,
-    list_logged_exceptions,
-)
-from reactpy.utils import Ref
-
-
-class BackendFixture:
-    """A test fixture for running a server and imperatively displaying views
-
-    This fixture is typically used alongside async web drivers like ``playwight``.
-
-    Example:
-        .. code-block::
-
-            async with BackendFixture() as server:
-                server.mount(MyComponent)
-    """
-
-    _records: list[logging.LogRecord]
-    _server_future: asyncio.Task[Any]
-    _exit_stack = AsyncExitStack()
-
-    def __init__(
-        self,
-        host: str = "127.0.0.1",
-        port: int | None = None,
-        app: Any | None = None,
-        implementation: BackendImplementation[Any] | None = None,
-        options: Any | None = None,
-        timeout: float | None = None,
-    ) -> None:
-        self.host = host
-        self.port = port or find_available_port(host, allow_reuse_waiting_ports=False)
-        self.mount, self._root_component = _hotswap()
-        self.timeout = (
-            REACTPY_TESTING_DEFAULT_TIMEOUT.current if timeout is None else timeout
-        )
-
-        if app is not None:
-            if implementation is None:
-                msg = "If an application instance its corresponding server implementation must be provided too."
-                raise ValueError(msg)
-
-        self._app = app
-        self.implementation = implementation or default_server
-        self._options = options
-
-    @property
-    def log_records(self) -> list[logging.LogRecord]:
-        """A list of captured log records"""
-        return self._records
-
-    def url(self, path: str = "", query: Any | None = None) -> str:
-        """Return a URL string pointing to the host and point of the server
-
-        Args:
-            path: the path to a resource on the server
-            query: a dictionary or list of query parameters
-        """
-        return urlunparse(
-            [
-                "http",
-                f"{self.host}:{self.port}",
-                path,
-                "",
-                urlencode(query or ()),
-                "",
-            ]
-        )
-
-    def list_logged_exceptions(
-        self,
-        pattern: str = "",
-        types: type[Any] | tuple[type[Any], ...] = Exception,
-        log_level: int = logging.ERROR,
-        del_log_records: bool = True,
-    ) -> list[BaseException]:
-        """Return a list of logged exception matching the given criteria
-
-        Args:
-            log_level: The level of log to check
-            exclude_exc_types: Any exception types to ignore
-            del_log_records: Whether to delete the log records for yielded exceptions
-        """
-        return list_logged_exceptions(
-            self.log_records,
-            pattern,
-            types,
-            log_level,
-            del_log_records,
-        )
-
-    async def __aenter__(self) -> BackendFixture:
-        self._exit_stack = AsyncExitStack()
-        self._records = self._exit_stack.enter_context(capture_reactpy_logs())
-
-        app = self._app or self.implementation.create_development_app()
-        self.implementation.configure(app, self._root_component, self._options)
-
-        started = asyncio.Event()
-        server_future = asyncio.create_task(
-            self.implementation.serve_development_app(
-                app, self.host, self.port, started
-            )
-        )
-
-        async def stop_server() -> None:
-            server_future.cancel()
-            try:
-                await asyncio.wait_for(server_future, timeout=self.timeout)
-            except asyncio.CancelledError:
-                pass
-
-        self._exit_stack.push_async_callback(stop_server)
-
-        try:
-            await asyncio.wait_for(started.wait(), timeout=self.timeout)
-        except Exception:  # nocov
-            # see if we can await the future for a more helpful error
-            await asyncio.wait_for(server_future, timeout=self.timeout)
-            raise
-
-        return self
-
-    async def __aexit__(
-        self,
-        exc_type: type[BaseException] | None,
-        exc_value: BaseException | None,
-        traceback: TracebackType | None,
-    ) -> None:
-        await self._exit_stack.aclose()
-
-        self.mount(None)  # reset the view
-
-        logged_errors = self.list_logged_exceptions(del_log_records=False)
-        if logged_errors:  # nocov
-            msg = "Unexpected logged exception"
-            raise LogAssertionError(msg) from logged_errors[0]
-
-
-_MountFunc = Callable[["Callable[[], Any] | None"], None]
-
-
-def _hotswap(update_on_change: bool = False) -> tuple[_MountFunc, ComponentConstructor]:
-    """Swap out components from a layout on the fly.
-
-    Since you can't change the component functions used to create a layout
-    in an imperative manner, you can use ``hotswap`` to do this so
-    long as you set things up ahead of time.
-
-    Parameters:
-        update_on_change: Whether or not all views of the layout should be updated on a swap.
-
-    Example:
-        .. code-block:: python
-
-            import reactpy
-
-            show, root = reactpy.hotswap()
-            PerClientStateServer(root).run_in_thread("localhost", 8765)
-
-            @reactpy.component
-            def DivOne(self):
-                return {"tagName": "div", "children": [1]}
-
-            show(DivOne)
-
-            # displaying the output now will show DivOne
-
-            @reactpy.component
-            def DivTwo(self):
-                return {"tagName": "div", "children": [2]}
-
-            show(DivTwo)
-
-            # displaying the output now will show DivTwo
-    """
-    constructor_ref: Ref[Callable[[], Any]] = Ref(lambda: None)
-
-    if update_on_change:
-        set_constructor_callbacks: set[Callable[[Callable[[], Any]], None]] = set()
-
-        @component
-        def HotSwap() -> Any:
-            # new displays will adopt the latest constructor and arguments
-            constructor, _set_constructor = use_state(lambda: constructor_ref.current)
-            set_constructor = use_callback(lambda new: _set_constructor(lambda _: new))
-
-            def add_callback() -> Callable[[], None]:
-                set_constructor_callbacks.add(set_constructor)
-                return lambda: set_constructor_callbacks.remove(set_constructor)
-
-            use_effect(add_callback)
-
-            return constructor()
-
-        def swap(constructor: Callable[[], Any] | None) -> None:
-            constructor = constructor_ref.current = constructor or (lambda: None)
-
-            for set_constructor in set_constructor_callbacks:
-                set_constructor(constructor)
-
-    else:
-
-        @component
-        def HotSwap() -> Any:
-            return constructor_ref.current()
-
-        def swap(constructor: Callable[[], Any] | None) -> None:
-            constructor_ref.current = constructor or (lambda: None)
-
-    return swap, HotSwap
diff --git a/src/py/reactpy/reactpy/testing/common.py b/src/py/reactpy/reactpy/testing/common.py
deleted file mode 100644
index 945c1c31d..000000000
--- a/src/py/reactpy/reactpy/testing/common.py
+++ /dev/null
@@ -1,212 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import inspect
-import shutil
-import time
-from collections.abc import Awaitable
-from functools import wraps
-from typing import Any, Callable, Generic, TypeVar, cast
-from uuid import uuid4
-from weakref import ref
-
-from typing_extensions import ParamSpec
-
-from reactpy.config import REACTPY_TESTING_DEFAULT_TIMEOUT, REACTPY_WEB_MODULES_DIR
-from reactpy.core.events import EventHandler, to_event_handler_function
-from reactpy.core.hooks import LifeCycleHook, current_hook
-
-
-def clear_reactpy_web_modules_dir() -> None:
-    """Clear the directory where ReactPy stores registered web modules"""
-    for path in REACTPY_WEB_MODULES_DIR.current.iterdir():
-        shutil.rmtree(path) if path.is_dir() else path.unlink()
-
-
-_P = ParamSpec("_P")
-_R = TypeVar("_R")
-_RC = TypeVar("_RC", covariant=True)
-
-
-_DEFAULT_POLL_DELAY = 0.1
-
-
-class poll(Generic[_R]):  # noqa: N801
-    """Wait until the result of an sync or async function meets some condition"""
-
-    def __init__(
-        self,
-        function: Callable[_P, Awaitable[_R] | _R],
-        *args: _P.args,
-        **kwargs: _P.kwargs,
-    ) -> None:
-        coro: Callable[_P, Awaitable[_R]]
-        if not inspect.iscoroutinefunction(function):
-
-            async def coro(*args: _P.args, **kwargs: _P.kwargs) -> _R:
-                return cast(_R, function(*args, **kwargs))
-
-        else:
-            coro = cast(Callable[_P, Awaitable[_R]], function)
-        self._func = coro
-        self._args = args
-        self._kwargs = kwargs
-
-    async def until(
-        self,
-        condition: Callable[[_R], bool],
-        timeout: float = REACTPY_TESTING_DEFAULT_TIMEOUT.current,
-        delay: float = _DEFAULT_POLL_DELAY,
-        description: str = "condition to be true",
-    ) -> None:
-        """Check that the coroutines result meets a condition within the timeout"""
-        started_at = time.time()
-        while True:
-            await asyncio.sleep(delay)
-            result = await self._func(*self._args, **self._kwargs)
-            if condition(result):
-                break
-            elif (time.time() - started_at) > timeout:  # nocov
-                msg = f"Expected {description} after {timeout} seconds - last value was {result!r}"
-                raise TimeoutError(msg)
-
-    async def until_is(
-        self,
-        right: _R,
-        timeout: float = REACTPY_TESTING_DEFAULT_TIMEOUT.current,
-        delay: float = _DEFAULT_POLL_DELAY,
-    ) -> None:
-        """Wait until the result is identical to the given value"""
-        return await self.until(
-            lambda left: left is right,
-            timeout,
-            delay,
-            f"value to be identical to {right!r}",
-        )
-
-    async def until_equals(
-        self,
-        right: _R,
-        timeout: float = REACTPY_TESTING_DEFAULT_TIMEOUT.current,
-        delay: float = _DEFAULT_POLL_DELAY,
-    ) -> None:
-        """Wait until the result is equal to the given value"""
-        return await self.until(
-            lambda left: left == right,
-            timeout,
-            delay,
-            f"value to equal {right!r}",
-        )
-
-
-class HookCatcher:
-    """Utility for capturing a LifeCycleHook from a component
-
-    Example:
-        .. code-block::
-
-            hooks = HookCatcher(index_by_kwarg="thing")
-
-            @reactpy.component
-            @hooks.capture
-            def MyComponent(thing):
-                ...
-
-            ...  # render the component
-
-            # grab the last render of where MyComponent(thing='something')
-            hooks.index["something"]
-            # or grab the hook from the component's last render
-            hooks.latest
-
-        After the first render of ``MyComponent`` the ``HookCatcher`` will have
-        captured the component's ``LifeCycleHook``.
-    """
-
-    latest: LifeCycleHook
-
-    def __init__(self, index_by_kwarg: str | None = None):
-        self.index_by_kwarg = index_by_kwarg
-        self.index: dict[Any, LifeCycleHook] = {}
-
-    def capture(self, render_function: Callable[..., Any]) -> Callable[..., Any]:
-        """Decorator for capturing a ``LifeCycleHook`` on each render of a component"""
-
-        # The render function holds a reference to `self` and, via the `LifeCycleHook`,
-        # the component. Some tests check whether components are garbage collected, thus
-        # we must use a `ref` here to ensure these checks pass once the catcher itself
-        # has been collected.
-        self_ref = ref(self)
-
-        @wraps(render_function)
-        def wrapper(*args: Any, **kwargs: Any) -> Any:
-            self = self_ref()
-            if self is None:
-                raise RuntimeError("Hook catcher has been garbage collected")
-
-            hook = current_hook()
-            if self.index_by_kwarg is not None:
-                self.index[kwargs[self.index_by_kwarg]] = hook
-            self.latest = hook
-            return render_function(*args, **kwargs)
-
-        return wrapper
-
-
-class StaticEventHandler:
-    """Utility for capturing the target of one event handler
-
-    Example:
-        .. code-block::
-
-            static_handler = StaticEventHandler()
-
-            @reactpy.component
-            def MyComponent():
-                state, set_state = reactpy.hooks.use_state(0)
-                handler = static_handler.use(lambda event: set_state(state + 1))
-                return reactpy.html.button({"onClick": handler}, "Click me!")
-
-            # gives the target ID for onClick where from the last render of MyComponent
-            static_handlers.target
-
-        If you need to capture event handlers from different instances of a component
-        the you should create multiple ``StaticEventHandler`` instances.
-
-        .. code-block::
-
-            static_handlers_by_key = {
-                "first": StaticEventHandler(),
-                "second": StaticEventHandler(),
-            }
-
-            @reactpy.component
-            def Parent():
-                return reactpy.html.div(Child(key="first"), Child(key="second"))
-
-            @reactpy.component
-            def Child(key):
-                state, set_state = reactpy.hooks.use_state(0)
-                handler = static_handlers_by_key[key].use(lambda event: set_state(state + 1))
-                return reactpy.html.button({"onClick": handler}, "Click me!")
-
-            # grab the individual targets for each instance above
-            first_target = static_handlers_by_key["first"].target
-            second_target = static_handlers_by_key["second"].target
-    """
-
-    def __init__(self) -> None:
-        self.target = uuid4().hex
-
-    def use(
-        self,
-        function: Callable[..., Any],
-        stop_propagation: bool = False,
-        prevent_default: bool = False,
-    ) -> EventHandler:
-        return EventHandler(
-            to_event_handler_function(function),
-            stop_propagation,
-            prevent_default,
-            self.target,
-        )
diff --git a/src/py/reactpy/reactpy/testing/display.py b/src/py/reactpy/reactpy/testing/display.py
deleted file mode 100644
index bb0d8351d..000000000
--- a/src/py/reactpy/reactpy/testing/display.py
+++ /dev/null
@@ -1,91 +0,0 @@
-from __future__ import annotations
-
-from contextlib import AsyncExitStack
-from types import TracebackType
-from typing import Any
-
-from playwright.async_api import (
-    Browser,
-    BrowserContext,
-    ElementHandle,
-    Page,
-    async_playwright,
-)
-
-from reactpy.config import REACTPY_TESTING_DEFAULT_TIMEOUT
-from reactpy.testing.backend import BackendFixture
-from reactpy.types import RootComponentConstructor
-
-
-class DisplayFixture:
-    """A fixture for running web-based tests using ``playwright``"""
-
-    _exit_stack: AsyncExitStack
-
-    def __init__(
-        self,
-        backend: BackendFixture | None = None,
-        driver: Browser | BrowserContext | Page | None = None,
-        url_prefix: str = "",
-    ) -> None:
-        if backend is not None:
-            self.backend = backend
-        if driver is not None:
-            if isinstance(driver, Page):
-                self.page = driver
-            else:
-                self._browser = driver
-        self.url_prefix = url_prefix
-
-    async def show(
-        self,
-        component: RootComponentConstructor,
-    ) -> None:
-        self.backend.mount(component)
-        await self.goto("/")
-        await self.root_element()  # check that root element is attached
-
-    async def goto(
-        self, path: str, query: Any | None = None, add_url_prefix: bool = True
-    ) -> None:
-        await self.page.goto(
-            self.backend.url(
-                f"{self.url_prefix}{path}" if add_url_prefix else path, query
-            )
-        )
-
-    async def root_element(self) -> ElementHandle:
-        element = await self.page.wait_for_selector("#app", state="attached")
-        if element is None:  # nocov
-            msg = "Root element not attached"
-            raise RuntimeError(msg)
-        return element
-
-    async def __aenter__(self) -> DisplayFixture:
-        es = self._exit_stack = AsyncExitStack()
-
-        browser: Browser | BrowserContext
-        if not hasattr(self, "page"):
-            if not hasattr(self, "_browser"):
-                pw = await es.enter_async_context(async_playwright())
-                browser = await pw.chromium.launch()
-            else:
-                browser = self._browser
-            self.page = await browser.new_page()
-
-        self.page.set_default_timeout(REACTPY_TESTING_DEFAULT_TIMEOUT.current * 1000)
-
-        if not hasattr(self, "backend"):
-            self.backend = BackendFixture()
-            await es.enter_async_context(self.backend)
-
-        return self
-
-    async def __aexit__(
-        self,
-        exc_type: type[BaseException] | None,
-        exc_value: BaseException | None,
-        traceback: TracebackType | None,
-    ) -> None:
-        self.backend.mount(None)
-        await self._exit_stack.aclose()
diff --git a/src/py/reactpy/reactpy/testing/logs.py b/src/py/reactpy/reactpy/testing/logs.py
deleted file mode 100644
index e9337b19c..000000000
--- a/src/py/reactpy/reactpy/testing/logs.py
+++ /dev/null
@@ -1,178 +0,0 @@
-from __future__ import annotations
-
-import logging
-import re
-from collections.abc import Iterator
-from contextlib import contextmanager
-from traceback import format_exception
-from typing import Any, NoReturn
-
-from reactpy.logging import ROOT_LOGGER
-
-
-class LogAssertionError(AssertionError):
-    """An assertion error raised in relation to log messages."""
-
-
-@contextmanager
-def assert_reactpy_did_log(
-    match_message: str = "",
-    error_type: type[Exception] | None = None,
-    match_error: str = "",
-) -> Iterator[None]:
-    """Assert that ReactPy produced a log matching the described message or error.
-
-    Args:
-        match_message: Must match a logged message.
-        error_type: Checks the type of logged exceptions.
-        match_error: Must match an error message.
-    """
-    message_pattern = re.compile(match_message)
-    error_pattern = re.compile(match_error)
-
-    with capture_reactpy_logs() as log_records:
-        try:
-            yield None
-        except Exception:
-            raise
-        else:
-            for record in list(log_records):
-                if (
-                    # record message matches
-                    message_pattern.findall(record.getMessage())
-                    # error type matches
-                    and (
-                        error_type is None
-                        or (
-                            record.exc_info is not None
-                            and record.exc_info[0] is not None
-                            and issubclass(record.exc_info[0], error_type)
-                        )
-                    )
-                    # error message pattern matches
-                    and (
-                        not match_error
-                        or (
-                            record.exc_info is not None
-                            and error_pattern.findall(
-                                "".join(format_exception(*record.exc_info))
-                            )
-                        )
-                    )
-                ):
-                    break
-            else:  # nocov
-                _raise_log_message_error(
-                    "Could not find a log record matching the given",
-                    match_message,
-                    error_type,
-                    match_error,
-                )
-
-
-@contextmanager
-def assert_reactpy_did_not_log(
-    match_message: str = "",
-    error_type: type[Exception] | None = None,
-    match_error: str = "",
-) -> Iterator[None]:
-    """Assert the inverse of :func:`assert_reactpy_logged`"""
-    try:
-        with assert_reactpy_did_log(match_message, error_type, match_error):
-            yield None
-    except LogAssertionError:
-        pass
-    else:
-        _raise_log_message_error(
-            "Did find a log record matching the given",
-            match_message,
-            error_type,
-            match_error,
-        )
-
-
-def list_logged_exceptions(
-    log_records: list[logging.LogRecord],
-    pattern: str = "",
-    types: type[Any] | tuple[type[Any], ...] = Exception,
-    log_level: int = logging.ERROR,
-    del_log_records: bool = True,
-) -> list[BaseException]:
-    """Return a list of logged exception matching the given criteria
-
-    Args:
-        log_level: The level of log to check
-        exclude_exc_types: Any exception types to ignore
-        del_log_records: Whether to delete the log records for yielded exceptions
-    """
-    found: list[BaseException] = []
-    compiled_pattern = re.compile(pattern)
-    for index, record in enumerate(log_records):
-        if record.levelno >= log_level and record.exc_info:
-            error = record.exc_info[1]
-            if (
-                error is not None
-                and isinstance(error, types)
-                and compiled_pattern.search(str(error))
-            ):
-                if del_log_records:
-                    del log_records[index - len(found)]
-                found.append(error)
-    return found
-
-
-@contextmanager
-def capture_reactpy_logs() -> Iterator[list[logging.LogRecord]]:
-    """Capture logs from ReactPy
-
-    Any logs produced in this context are cleared afterwards
-    """
-    original_level = ROOT_LOGGER.level
-    ROOT_LOGGER.setLevel(logging.DEBUG)
-    try:
-        if _LOG_RECORD_CAPTOR in ROOT_LOGGER.handlers:
-            start_index = len(_LOG_RECORD_CAPTOR.records)
-            try:
-                yield _LOG_RECORD_CAPTOR.records
-            finally:
-                end_index = len(_LOG_RECORD_CAPTOR.records)
-                _LOG_RECORD_CAPTOR.records[start_index:end_index] = []
-            return None
-
-        ROOT_LOGGER.addHandler(_LOG_RECORD_CAPTOR)
-        try:
-            yield _LOG_RECORD_CAPTOR.records
-        finally:
-            ROOT_LOGGER.removeHandler(_LOG_RECORD_CAPTOR)
-            _LOG_RECORD_CAPTOR.records.clear()
-    finally:
-        ROOT_LOGGER.setLevel(original_level)
-
-
-class _LogRecordCaptor(logging.NullHandler):
-    def __init__(self) -> None:
-        self.records: list[logging.LogRecord] = []
-        super().__init__()
-
-    def handle(self, record: logging.LogRecord) -> bool:
-        self.records.append(record)
-        return True
-
-
-_LOG_RECORD_CAPTOR = _LogRecordCaptor()
-
-
-def _raise_log_message_error(
-    prefix: str,
-    match_message: str = "",
-    error_type: type[Exception] | None = None,
-    match_error: str = "",
-) -> NoReturn:
-    conditions = []
-    if match_message:
-        conditions.append(f"log message pattern {match_message!r}")
-    if error_type:
-        conditions.append(f"exception type {error_type}")
-    if match_error:
-        conditions.append(f"error message pattern {match_error!r}")
-    raise LogAssertionError(prefix + " " + " and ".join(conditions))
diff --git a/src/py/reactpy/reactpy/types.py b/src/py/reactpy/reactpy/types.py
deleted file mode 100644
index 715b66fff..000000000
--- a/src/py/reactpy/reactpy/types.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""Exports common types from:
-
-- :mod:`reactpy.core.types`
-- :mod:`reactpy.backend.types`
-"""
-
-from reactpy.backend.types import BackendImplementation, Connection, Location
-from reactpy.core.component import Component
-from reactpy.core.hooks import Context
-from reactpy.core.types import (
-    ComponentConstructor,
-    ComponentType,
-    EventHandlerDict,
-    EventHandlerFunc,
-    EventHandlerMapping,
-    EventHandlerType,
-    ImportSourceDict,
-    Key,
-    LayoutType,
-    RootComponentConstructor,
-    State,
-    VdomAttributes,
-    VdomChild,
-    VdomChildren,
-    VdomDict,
-    VdomJson,
-)
-
-__all__ = [
-    "BackendImplementation",
-    "Component",
-    "ComponentConstructor",
-    "ComponentType",
-    "Connection",
-    "Context",
-    "EventHandlerDict",
-    "EventHandlerFunc",
-    "EventHandlerMapping",
-    "EventHandlerType",
-    "ImportSourceDict",
-    "Key",
-    "LayoutType",
-    "Location",
-    "RootComponentConstructor",
-    "State",
-    "VdomAttributes",
-    "VdomChild",
-    "VdomChildren",
-    "VdomDict",
-    "VdomJson",
-]
diff --git a/src/py/reactpy/reactpy/utils.py b/src/py/reactpy/reactpy/utils.py
deleted file mode 100644
index 0bfc604bf..000000000
--- a/src/py/reactpy/reactpy/utils.py
+++ /dev/null
@@ -1,322 +0,0 @@
-from __future__ import annotations
-
-import inspect
-import os
-import re
-from collections.abc import Iterable
-from itertools import chain
-from typing import Any, Callable, Generic, TypeVar, cast
-
-from lxml import etree
-from lxml.html import fromstring, tostring
-
-from reactpy.core.types import VdomDict
-from reactpy.core.vdom import vdom
-
-_RefValue = TypeVar("_RefValue")
-_ModelTransform = Callable[[VdomDict], Any]
-_UNDEFINED: Any = object()
-
-
-class Ref(Generic[_RefValue]):
-    """Hold a reference to a value
-
-    This is used in imperative code to mutate the state of this object in order to
-    incur side effects. Generally refs should be avoided if possible, but sometimes
-    they are required.
-
-    Notes:
-        You can compare the contents for two ``Ref`` objects using the ``==`` operator.
-    """
-
-    __slots__ = "current"
-
-    def __init__(self, initial_value: _RefValue = _UNDEFINED) -> None:
-        if initial_value is not _UNDEFINED:
-            self.current = initial_value
-            """The present value"""
-
-    def set_current(self, new: _RefValue) -> _RefValue:
-        """Set the current value and return what is now the old value
-
-        This is nice to use in ``lambda`` functions.
-        """
-        old = self.current
-        self.current = new
-        return old
-
-    def __eq__(self, other: Any) -> bool:
-        try:
-            return isinstance(other, Ref) and (other.current == self.current)
-        except AttributeError:
-            # attribute error occurs for uninitialized refs
-            return False
-
-    def __repr__(self) -> str:
-        try:
-            current = repr(self.current)
-        except AttributeError:
-            # attribute error occurs for uninitialized refs
-            current = "<undefined>"
-        return f"{type(self).__name__}({current})"
-
-
-def vdom_to_html(vdom: VdomDict) -> str:
-    """Convert a VDOM dictionary into an HTML string
-
-    Only the following keys are translated to HTML:
-
-    - ``tagName``
-    - ``attributes``
-    - ``children`` (must be strings or more VDOM dicts)
-
-    Parameters:
-        vdom: The VdomDict element to convert to HTML
-    """
-    temp_root = etree.Element("__temp__")
-    _add_vdom_to_etree(temp_root, vdom)
-    html = cast(bytes, tostring(temp_root)).decode()
-    # strip out temp root <__temp__> element
-    return html[10:-11]
-
-
-def html_to_vdom(
-    html: str, *transforms: _ModelTransform, strict: bool = True
-) -> VdomDict:
-    """Transform HTML into a DOM model. Unique keys can be provided to HTML elements
-    using a ``key=...`` attribute within your HTML tag.
-
-    Parameters:
-        html:
-            The raw HTML as a string
-        transforms:
-            Functions of the form ``transform(old) -> new`` where ``old`` is a VDOM
-            dictionary which will be replaced by ``new``. For example, you could use a
-            transform function to add highlighting to a ``<code/>`` block.
-        strict:
-            If ``True``, raise an exception if the HTML does not perfectly follow HTML5
-            syntax.
-    """
-    if not isinstance(html, str):  # nocov
-        msg = f"Expected html to be a string, not {type(html).__name__}"
-        raise TypeError(msg)
-
-    # If the user provided a string, convert it to a list of lxml.etree nodes
-    try:
-        root_node: etree._Element = fromstring(
-            html.strip(),
-            parser=etree.HTMLParser(
-                remove_comments=True,
-                remove_pis=True,
-                remove_blank_text=True,
-                recover=not strict,
-            ),
-        )
-    except etree.XMLSyntaxError as e:
-        if not strict:
-            raise e  # nocov
-        msg = "An error has occurred while parsing the HTML.\n\nThis HTML may be malformatted, or may not perfectly adhere to HTML5.\nIf you believe the exception above was due to something intentional, you can disable the strict parameter on html_to_vdom().\nOtherwise, repair your broken HTML and try again."
-        raise HTMLParseError(msg) from e
-
-    return _etree_to_vdom(root_node, transforms)
-
-
-class HTMLParseError(etree.LxmlSyntaxError):  # type: ignore[misc]
-    """Raised when an HTML document cannot be parsed using strict parsing."""
-
-
-def _etree_to_vdom(
-    node: etree._Element, transforms: Iterable[_ModelTransform]
-) -> VdomDict:
-    """Transform an lxml etree node into a DOM model
-
-    Parameters:
-        node:
-            The ``lxml.etree._Element`` node
-        transforms:
-            Functions of the form ``transform(old) -> new`` where ``old`` is a VDOM
-            dictionary which will be replaced by ``new``. For example, you could use a
-            transform function to add highlighting to a ``<code/>`` block.
-    """
-    if not isinstance(node, etree._Element):  # nocov
-        msg = f"Expected node to be a etree._Element, not {type(node).__name__}"
-        raise TypeError(msg)
-
-    # Recursively call _etree_to_vdom() on all children
-    children = _generate_vdom_children(node, transforms)
-
-    # Convert the lxml node to a VDOM dict
-    el = vdom(node.tag, dict(node.items()), *children)
-
-    # Perform any necessary mutations on the VDOM attributes to meet VDOM spec
-    _mutate_vdom(el)
-
-    # Apply any provided transforms.
-    for transform in transforms:
-        el = transform(el)
-
-    return el
-
-
-def _add_vdom_to_etree(parent: etree._Element, vdom: VdomDict | dict[str, Any]) -> None:
-    try:
-        tag = vdom["tagName"]
-    except KeyError as e:
-        msg = f"Expected a VDOM dict, not {vdom}"
-        raise TypeError(msg) from e
-    else:
-        vdom = cast(VdomDict, vdom)
-
-    if tag:
-        element = etree.SubElement(parent, tag)
-        element.attrib.update(
-            _vdom_attr_to_html_str(k, v) for k, v in vdom.get("attributes", {}).items()
-        )
-    else:
-        element = parent
-
-    for c in vdom.get("children", []):
-        if isinstance(c, dict):
-            _add_vdom_to_etree(element, c)
-        else:
-            """
-            LXML handles string children by storing them under `text` and `tail`
-            attributes of Element objects. The `text` attribute, if present, effectively
-            becomes that element's first child. Then the `tail` attribute, if present,
-            becomes a sibling that follows that element. For example, consider the
-            following HTML:
-
-                <p><a>hello</a>world</p>
-
-            In this code sample, "hello" is the `text` attribute of the `<a>` element
-            and "world" is the `tail` attribute of that same `<a>` element. It's for
-            this reason that, depending on whether the element being constructed has
-            non-string a child element, we need to assign a `text` vs `tail` attribute
-            to that element or the last non-string child respectively.
-            """
-            if len(element):
-                last_child = element[-1]
-                last_child.tail = f"{last_child.tail or ''}{c}"
-            else:
-                element.text = f"{element.text or ''}{c}"
-
-
-def _mutate_vdom(vdom: VdomDict) -> None:
-    """Performs any necessary mutations on the VDOM attributes to meet VDOM spec.
-
-    Currently, this function only transforms the ``style`` attribute into a dictionary whose keys are
-    camelCase so as to be renderable by React.
-
-    This function may be extended in the future.
-    """
-    # Determine if the style attribute needs to be converted to a dict
-    if (
-        "attributes" in vdom
-        and "style" in vdom["attributes"]
-        and isinstance(vdom["attributes"]["style"], str)
-    ):
-        # Convince type checker that it's safe to mutate attributes
-        assert isinstance(vdom["attributes"], dict)  # noqa: S101
-
-        # Convert style attribute from str -> dict with camelCase keys
-        vdom["attributes"]["style"] = {
-            key.strip().replace("-", "_"): value.strip()
-            for key, value in (
-                part.split(":", 1)
-                for part in vdom["attributes"]["style"].split(";")
-                if ":" in part
-            )
-        }
-
-
-def _generate_vdom_children(
-    node: etree._Element, transforms: Iterable[_ModelTransform]
-) -> list[VdomDict | str]:
-    """Generates a list of VDOM children from an lxml node.
-
-    Inserts inner text and/or tail text in between VDOM children, if necessary.
-    """
-    return (  # Get the inner text of the current node
-        [node.text] if node.text else []
-    ) + list(
-        chain(
-            *(
-                # Recursively convert each child node to VDOM
-                [_etree_to_vdom(child, transforms)]
-                # Insert the tail text between each child node
-                + ([child.tail] if child.tail else [])
-                for child in node.iterchildren(None)
-            )
-        )
-    )
-
-
-def del_html_head_body_transform(vdom: VdomDict) -> VdomDict:
-    """Transform intended for use with `html_to_vdom`.
-
-    Removes `<html>`, `<head>`, and `<body>` while preserving their children.
-
-    Parameters:
-        vdom:
-            The VDOM dictionary to transform.
-    """
-    if vdom["tagName"] in {"html", "body", "head"}:
-        return {"tagName": "", "children": vdom["children"]}
-    return vdom
-
-
-def _vdom_attr_to_html_str(key: str, value: Any) -> tuple[str, str]:
-    if key == "style":
-        if isinstance(value, dict):
-            value = ";".join(
-                # We lower only to normalize - CSS is case-insensitive:
-                # https://www.w3.org/TR/css-fonts-3/#font-family-casing
-                f"{_CAMEL_CASE_SUB_PATTERN.sub('-', k).lower()}:{v}"
-                for k, v in value.items()
-            )
-    elif (
-        # camel to data-* attributes
-        key.startswith("data_")
-        # camel to aria-* attributes
-        or key.startswith("aria_")
-        # handle special cases
-        or key in DASHED_HTML_ATTRS
-    ):
-        key = key.replace("_", "-")
-    elif (
-        # camel to data-* attributes
-        key.startswith("data")
-        # camel to aria-* attributes
-        or key.startswith("aria")
-        # handle special cases
-        or key in DASHED_HTML_ATTRS
-    ):
-        key = _CAMEL_CASE_SUB_PATTERN.sub("-", key)
-
-    if callable(value):  # nocov
-        raise TypeError(f"Cannot convert callable attribute {key}={value} to HTML")
-
-    # Again, we lower the attribute name only to normalize - HTML is case-insensitive:
-    # http://w3c.github.io/html-reference/documents.html#case-insensitivity
-    return key.lower(), str(value)
-
-
-# see list of HTML attributes with dashes in them:
-# https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#attribute_list
-DASHED_HTML_ATTRS = {"accept_charset", "acceptCharset", "http_equiv", "httpEquiv"}
-
-# Pattern for delimitting camelCase names (e.g. camelCase to camel-case)
-_CAMEL_CASE_SUB_PATTERN = re.compile(r"(?<!^)(?=[A-Z])")
-
-
-def _read_docs_css():
-    """Reads a CSS file in the docs with the same relative path."""
-    py_path = os.path.abspath((inspect.stack()[1])[1])
-    css_path = (
-        py_path.replace("/python/", "/css/")
-        .replace("\\python\\", "\\css\\")
-        .replace(".py", ".css")
-    )
-
-    with open(css_path, encoding="UTF-8") as css_file:
-        return css_file.read()
diff --git a/src/py/reactpy/reactpy/web/__init__.py b/src/py/reactpy/reactpy/web/__init__.py
deleted file mode 100644
index 308429dbb..000000000
--- a/src/py/reactpy/reactpy/web/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from reactpy.web.module import (
-    export,
-    module_from_file,
-    module_from_string,
-    module_from_template,
-    module_from_url,
-)
-
-__all__ = [
-    "module_from_file",
-    "module_from_string",
-    "module_from_template",
-    "module_from_url",
-    "export",
-]
diff --git a/src/py/reactpy/reactpy/web/module.py b/src/py/reactpy/reactpy/web/module.py
deleted file mode 100644
index 48322fe24..000000000
--- a/src/py/reactpy/reactpy/web/module.py
+++ /dev/null
@@ -1,390 +0,0 @@
-from __future__ import annotations
-
-import filecmp
-import logging
-import shutil
-from dataclasses import dataclass
-from pathlib import Path
-from string import Template
-from typing import Any, NewType, overload
-from urllib.parse import urlparse
-
-from reactpy._warnings import warn
-from reactpy.config import REACTPY_DEBUG_MODE, REACTPY_WEB_MODULES_DIR
-from reactpy.core.types import ImportSourceDict, VdomDictConstructor
-from reactpy.core.vdom import make_vdom_constructor
-from reactpy.web.utils import (
-    module_name_suffix,
-    resolve_module_exports_from_file,
-    resolve_module_exports_from_url,
-)
-
-logger = logging.getLogger(__name__)
-
-SourceType = NewType("SourceType", str)
-
-NAME_SOURCE = SourceType("NAME")
-"""A named source - usually a Javascript package name"""
-
-URL_SOURCE = SourceType("URL")
-"""A source loaded from a URL, usually a CDN"""
-
-
-def module_from_url(
-    url: str,
-    fallback: Any | None = None,
-    resolve_exports: bool | None = None,
-    resolve_exports_depth: int = 5,
-    unmount_before_update: bool = False,
-) -> WebModule:
-    """Load a :class:`WebModule` from a :data:`URL_SOURCE`
-
-    Parameters:
-        url:
-            Where the javascript module will be loaded from which conforms to the
-            interface for :ref:`Custom Javascript Components`
-        fallback:
-            What to temporarily display while the module is being loaded.
-        resolve_imports:
-            Whether to try and find all the named exports of this module.
-        resolve_exports_depth:
-            How deeply to search for those exports.
-        unmount_before_update:
-            Cause the component to be unmounted before each update. This option should
-            only be used if the imported package fails to re-render when props change.
-            Using this option has negative performance consequences since all DOM
-            elements must be changed on each render. See :issue:`461` for more info.
-    """
-    return WebModule(
-        source=url,
-        source_type=URL_SOURCE,
-        default_fallback=fallback,
-        file=None,
-        export_names=(
-            resolve_module_exports_from_url(url, resolve_exports_depth)
-            if (
-                resolve_exports
-                if resolve_exports is not None
-                else REACTPY_DEBUG_MODE.current
-            )
-            else None
-        ),
-        unmount_before_update=unmount_before_update,
-    )
-
-
-_FROM_TEMPLATE_DIR = "__from_template__"
-
-
-def module_from_template(
-    template: str,
-    package: str,
-    cdn: str = "https://esm.sh",
-    fallback: Any | None = None,
-    resolve_exports: bool | None = None,
-    resolve_exports_depth: int = 5,
-    unmount_before_update: bool = False,
-) -> WebModule:
-    """Create a :class:`WebModule` from a framework template
-
-    This is useful for experimenting with component libraries that do not already
-    support ReactPy's :ref:`Custom Javascript Component` interface.
-
-    .. warning::
-
-        This approach is not recommended for use in a production setting because the
-        framework templates may use unpinned dependencies that could change without
-        warning. It's best to author a module adhering to the
-        :ref:`Custom Javascript Component` interface instead.
-
-    **Templates**
-
-    - ``react``: for modules exporting React components
-
-    Parameters:
-        template:
-            The name of the framework template to use with the given ``package``.
-        package:
-            The name of a package to load. May include a file extension (defaults to
-            ``.js`` if not given)
-        cdn:
-            Where the package should be loaded from. The CDN must distribute ESM modules
-        fallback:
-            What to temporarily display while the module is being loaded.
-        resolve_imports:
-            Whether to try and find all the named exports of this module.
-        resolve_exports_depth:
-            How deeply to search for those exports.
-        unmount_before_update:
-            Cause the component to be unmounted before each update. This option should
-            only be used if the imported package fails to re-render when props change.
-            Using this option has negative performance consequences since all DOM
-            elements must be changed on each render. See :issue:`461` for more info.
-    """
-    warn(
-        "module_from_template() is deprecated due to instability - use the Javascript "
-        "Components API instead. This function will be removed in a future release.",
-        DeprecationWarning,
-    )
-    template_name, _, template_version = template.partition("@")
-    template_version = "@" + template_version if template_version else ""
-
-    # We do this since the package may be any valid URL path. Thus we may need to strip
-    # object parameters or query information so we save the resulting template under the
-    # correct file name.
-    package_name = urlparse(package).path
-
-    # downstream code assumes no trailing slash
-    cdn = cdn.rstrip("/")
-
-    template_file_name = template_name + module_name_suffix(package_name)
-
-    template_file = Path(__file__).parent / "templates" / template_file_name
-    if not template_file.exists():
-        msg = f"No template for {template_file_name!r} exists"
-        raise ValueError(msg)
-
-    variables = {"PACKAGE": package, "CDN": cdn, "VERSION": template_version}
-    content = Template(template_file.read_text()).substitute(variables)
-
-    return module_from_string(
-        _FROM_TEMPLATE_DIR + "/" + package_name,
-        content,
-        fallback,
-        resolve_exports,
-        resolve_exports_depth,
-        unmount_before_update=unmount_before_update,
-    )
-
-
-def module_from_file(
-    name: str,
-    file: str | Path,
-    fallback: Any | None = None,
-    resolve_exports: bool | None = None,
-    resolve_exports_depth: int = 5,
-    unmount_before_update: bool = False,
-    symlink: bool = False,
-) -> WebModule:
-    """Load a :class:`WebModule` from a given ``file``
-
-    Parameters:
-        name:
-            The name of the package
-        file:
-            The file from which the content of the web module will be created.
-        fallback:
-            What to temporarily display while the module is being loaded.
-        resolve_imports:
-            Whether to try and find all the named exports of this module.
-        resolve_exports_depth:
-            How deeply to search for those exports.
-        unmount_before_update:
-            Cause the component to be unmounted before each update. This option should
-            only be used if the imported package fails to re-render when props change.
-            Using this option has negative performance consequences since all DOM
-            elements must be changed on each render. See :issue:`461` for more info.
-        symlink:
-            Whether the web module should be saved as a symlink to the given ``file``.
-    """
-    name += module_name_suffix(name)
-
-    source_file = Path(file).resolve()
-    target_file = _web_module_path(name)
-    if not source_file.exists():
-        msg = f"Source file does not exist: {source_file}"
-        raise FileNotFoundError(msg)
-
-    if not target_file.exists():
-        _copy_file(target_file, source_file, symlink)
-    elif not _equal_files(source_file, target_file):
-        logger.info(
-            f"Existing web module {name!r} will "
-            f"be replaced with {target_file.resolve()}"
-        )
-        target_file.unlink()
-        _copy_file(target_file, source_file, symlink)
-
-    return WebModule(
-        source=name,
-        source_type=NAME_SOURCE,
-        default_fallback=fallback,
-        file=target_file,
-        export_names=(
-            resolve_module_exports_from_file(source_file, resolve_exports_depth)
-            if (
-                resolve_exports
-                if resolve_exports is not None
-                else REACTPY_DEBUG_MODE.current
-            )
-            else None
-        ),
-        unmount_before_update=unmount_before_update,
-    )
-
-
-def _equal_files(f1: Path, f2: Path) -> bool:
-    f1 = f1.resolve()
-    f2 = f2.resolve()
-    return (
-        (f1.is_symlink() or f2.is_symlink()) and (f1.resolve() == f2.resolve())
-    ) or filecmp.cmp(str(f1), str(f2), shallow=False)
-
-
-def _copy_file(target: Path, source: Path, symlink: bool) -> None:
-    target.parent.mkdir(parents=True, exist_ok=True)
-    if symlink:
-        target.symlink_to(source)
-    else:
-        shutil.copy(source, target)
-
-
-def module_from_string(
-    name: str,
-    content: str,
-    fallback: Any | None = None,
-    resolve_exports: bool | None = None,
-    resolve_exports_depth: int = 5,
-    unmount_before_update: bool = False,
-) -> WebModule:
-    """Load a :class:`WebModule` whose ``content`` comes from a string.
-
-    Parameters:
-        name:
-            The name of the package
-        content:
-            The contents of the web module
-        fallback:
-            What to temporarily display while the module is being loaded.
-        resolve_imports:
-            Whether to try and find all the named exports of this module.
-        resolve_exports_depth:
-            How deeply to search for those exports.
-        unmount_before_update:
-            Cause the component to be unmounted before each update. This option should
-            only be used if the imported package fails to re-render when props change.
-            Using this option has negative performance consequences since all DOM
-            elements must be changed on each render. See :issue:`461` for more info.
-    """
-    name += module_name_suffix(name)
-
-    target_file = _web_module_path(name)
-
-    if target_file.exists() and target_file.read_text() != content:
-        logger.info(
-            f"Existing web module {name!r} will "
-            f"be replaced with {target_file.resolve()}"
-        )
-        target_file.unlink()
-
-    target_file.parent.mkdir(parents=True, exist_ok=True)
-    target_file.write_text(content)
-
-    return WebModule(
-        source=name,
-        source_type=NAME_SOURCE,
-        default_fallback=fallback,
-        file=target_file,
-        export_names=(
-            resolve_module_exports_from_file(target_file, resolve_exports_depth)
-            if (
-                resolve_exports
-                if resolve_exports is not None
-                else REACTPY_DEBUG_MODE.current
-            )
-            else None
-        ),
-        unmount_before_update=unmount_before_update,
-    )
-
-
-@dataclass(frozen=True)
-class WebModule:
-    source: str
-    source_type: SourceType
-    default_fallback: Any | None
-    export_names: set[str] | None
-    file: Path | None
-    unmount_before_update: bool
-
-
-@overload
-def export(
-    web_module: WebModule,
-    export_names: str,
-    fallback: Any | None = ...,
-    allow_children: bool = ...,
-) -> VdomDictConstructor:
-    ...
-
-
-@overload
-def export(
-    web_module: WebModule,
-    export_names: list[str] | tuple[str, ...],
-    fallback: Any | None = ...,
-    allow_children: bool = ...,
-) -> list[VdomDictConstructor]:
-    ...
-
-
-def export(
-    web_module: WebModule,
-    export_names: str | list[str] | tuple[str, ...],
-    fallback: Any | None = None,
-    allow_children: bool = True,
-) -> VdomDictConstructor | list[VdomDictConstructor]:
-    """Return one or more VDOM constructors from a :class:`WebModule`
-
-    Parameters:
-        export_names:
-            One or more names to export. If given as a string, a single component
-            will be returned. If a list is given, then a list of components will be
-            returned.
-        fallback:
-            What to temporarily display while the module is being loaded.
-        allow_children:
-            Whether or not these components can have children.
-    """
-    if isinstance(export_names, str):
-        if (
-            web_module.export_names is not None
-            and export_names not in web_module.export_names
-        ):
-            msg = f"{web_module.source!r} does not export {export_names!r}"
-            raise ValueError(msg)
-        return _make_export(web_module, export_names, fallback, allow_children)
-    else:
-        if web_module.export_names is not None:
-            missing = sorted(set(export_names).difference(web_module.export_names))
-            if missing:
-                msg = f"{web_module.source!r} does not export {missing!r}"
-                raise ValueError(msg)
-        return [
-            _make_export(web_module, name, fallback, allow_children)
-            for name in export_names
-        ]
-
-
-def _make_export(
-    web_module: WebModule,
-    name: str,
-    fallback: Any | None,
-    allow_children: bool,
-) -> VdomDictConstructor:
-    return make_vdom_constructor(
-        name,
-        allow_children=allow_children,
-        import_source=ImportSourceDict(
-            source=web_module.source,
-            sourceType=web_module.source_type,
-            fallback=(fallback or web_module.default_fallback),
-            unmountBeforeUpdate=web_module.unmount_before_update,
-        ),
-    )
-
-
-def _web_module_path(name: str) -> Path:
-    directory = REACTPY_WEB_MODULES_DIR.current
-    path = directory.joinpath(*name.split("/"))
-    return path.with_suffix(path.suffix)
diff --git a/src/py/reactpy/reactpy/web/templates/react.js b/src/py/reactpy/reactpy/web/templates/react.js
deleted file mode 100644
index 5c6a45743..000000000
--- a/src/py/reactpy/reactpy/web/templates/react.js
+++ /dev/null
@@ -1,60 +0,0 @@
-export * from "$CDN/$PACKAGE";
-
-import * as React from "$CDN/react$VERSION";
-import * as ReactDOM from "$CDN/react-dom$VERSION";
-
-export default ({ children, ...props }) => {
-  const [{ component }, setComponent] = React.useState({});
-  React.useEffect(() => {
-    import("$CDN/$PACKAGE").then((module) => {
-      // dynamically load the default export since we don't know if it's exported.
-      setComponent({ component: module.default });
-    });
-  });
-  return component
-    ? React.createElement(component, props, ...(children || []))
-    : null;
-};
-
-export function bind(node, config) {
-  return {
-    create: (component, props, children) =>
-      React.createElement(component, wrapEventHandlers(props), ...children),
-    render: (element) => ReactDOM.render(element, node),
-    unmount: () => ReactDOM.unmountComponentAtNode(node),
-  };
-}
-
-function wrapEventHandlers(props) {
-  const newProps = Object.assign({}, props);
-  for (const [key, value] of Object.entries(props)) {
-    if (typeof value === "function") {
-      newProps[key] = makeJsonSafeEventHandler(value);
-    }
-  }
-  return newProps;
-}
-
-function makeJsonSafeEventHandler(oldHandler) {
-  // Since we can't really know what the event handlers get passed we have to check if
-  // they are JSON serializable or not. We can allow normal synthetic events to pass
-  // through since the original handler already knows how to serialize those for us.
-  return function safeEventHandler() {
-    oldHandler(
-      ...Array.from(arguments).filter((value) => {
-        if (typeof value === "object" && value.nativeEvent) {
-          // this is probably a standard React synthetic event
-          return true;
-        } else {
-          try {
-            JSON.stringify(value);
-          } catch (err) {
-            console.error("Failed to serialize some event data");
-            return false;
-          }
-          return true;
-        }
-      }),
-    );
-  };
-}
diff --git a/src/py/reactpy/reactpy/web/utils.py b/src/py/reactpy/reactpy/web/utils.py
deleted file mode 100644
index cf8b8638b..000000000
--- a/src/py/reactpy/reactpy/web/utils.py
+++ /dev/null
@@ -1,155 +0,0 @@
-import logging
-import re
-from pathlib import Path, PurePosixPath
-from urllib.parse import urlparse
-
-import requests
-
-logger = logging.getLogger(__name__)
-
-
-def module_name_suffix(name: str) -> str:
-    if name.startswith("@"):
-        name = name[1:]
-    head, _, tail = name.partition("@")  # handle version identifier
-    version, _, tail = tail.partition("/")  # get section after version
-    return PurePosixPath(tail or head).suffix or ".js"
-
-
-def resolve_module_exports_from_file(
-    file: Path,
-    max_depth: int,
-    is_re_export: bool = False,
-) -> set[str]:
-    if max_depth == 0:
-        logger.warning(f"Did not resolve all exports for {file} - max depth reached")
-        return set()
-    elif not file.exists():
-        logger.warning(f"Did not resolve exports for unknown file {file}")
-        return set()
-
-    export_names, references = resolve_module_exports_from_source(
-        file.read_text(), exclude_default=is_re_export
-    )
-
-    for ref in references:
-        if urlparse(ref).scheme:  # is an absolute URL
-            export_names.update(
-                resolve_module_exports_from_url(ref, max_depth - 1, is_re_export=True)
-            )
-        else:
-            path = file.parent.joinpath(*ref.split("/"))
-            export_names.update(
-                resolve_module_exports_from_file(path, max_depth - 1, is_re_export=True)
-            )
-
-    return export_names
-
-
-def resolve_module_exports_from_url(
-    url: str,
-    max_depth: int,
-    is_re_export: bool = False,
-) -> set[str]:
-    if max_depth == 0:
-        logger.warning(f"Did not resolve all exports for {url} - max depth reached")
-        return set()
-
-    try:
-        text = requests.get(url, timeout=5).text
-    except requests.exceptions.ConnectionError as error:
-        reason = "" if error is None else " - {error.errno}"
-        logger.warning("Did not resolve exports for url " + url + reason)
-        return set()
-
-    export_names, references = resolve_module_exports_from_source(
-        text, exclude_default=is_re_export
-    )
-
-    for ref in references:
-        url = _resolve_relative_url(url, ref)
-        export_names.update(
-            resolve_module_exports_from_url(url, max_depth - 1, is_re_export=True)
-        )
-
-    return export_names
-
-
-def resolve_module_exports_from_source(
-    content: str, exclude_default: bool
-) -> tuple[set[str], set[str]]:
-    names: set[str] = set()
-    references: set[str] = set()
-
-    if _JS_DEFAULT_EXPORT_PATTERN.search(content):
-        names.add("default")
-
-    # Exporting functions and classes
-    names.update(_JS_FUNC_OR_CLS_EXPORT_PATTERN.findall(content))
-
-    for export in _JS_GENERAL_EXPORT_PATTERN.findall(content):
-        export = export.rstrip(";").strip()
-        # Exporting individual features
-        if export.startswith("let "):
-            names.update(let.split("=", 1)[0] for let in export[4:].split(","))
-        # Renaming exports and export list
-        elif export.startswith("{") and export.endswith("}"):
-            names.update(
-                item.split(" as ", 1)[-1] for item in export.strip("{}").split(",")
-            )
-        # Exporting destructured assignments with renaming
-        elif export.startswith("const "):
-            names.update(
-                item.split(":", 1)[0]
-                for item in export[6:].split("=", 1)[0].strip("{}").split(",")
-            )
-        # Default exports
-        elif export.startswith("default "):
-            names.add("default")
-        # Aggregating modules
-        elif export.startswith("* as "):
-            names.add(export[5:].split(" from ", 1)[0])
-        elif export.startswith("* "):
-            references.add(export[2:].split("from ", 1)[-1].strip("'\""))
-        elif export.startswith("{") and " from " in export:
-            names.update(
-                item.split(" as ", 1)[-1]
-                for item in export.split(" from ")[0].strip("{}").split(",")
-            )
-        elif not (export.startswith("function ") or export.startswith("class ")):
-            logger.warning(f"Unknown export type {export!r}")
-
-    names = {n.strip() for n in names}
-    references = {r.strip() for r in references}
-
-    if exclude_default and "default" in names:
-        names.remove("default")
-
-    return names, references
-
-
-def _resolve_relative_url(base_url: str, rel_url: str) -> str:
-    if not rel_url.startswith("."):
-        return rel_url
-
-    base_url = base_url.rsplit("/", 1)[0]
-
-    if rel_url.startswith("./"):
-        return base_url + rel_url[1:]
-
-    while rel_url.startswith("../"):
-        base_url = base_url.rsplit("/", 1)[0]
-        rel_url = rel_url[3:]
-
-    return f"{base_url}/{rel_url}"
-
-
-_JS_DEFAULT_EXPORT_PATTERN = re.compile(
-    r";?\s*export\s+default\s",
-)
-_JS_FUNC_OR_CLS_EXPORT_PATTERN = re.compile(
-    r";?\s*export\s+(?:function|class)\s+([a-zA-Z_$][0-9a-zA-Z_$]*)"
-)
-_JS_GENERAL_EXPORT_PATTERN = re.compile(
-    r"(?:^|;|})\s*export(?=\s+|{)(.*?)(?=;|$)", re.MULTILINE
-)
diff --git a/src/py/reactpy/reactpy/widgets.py b/src/py/reactpy/reactpy/widgets.py
deleted file mode 100644
index cc19be04d..000000000
--- a/src/py/reactpy/reactpy/widgets.py
+++ /dev/null
@@ -1,103 +0,0 @@
-from __future__ import annotations
-
-from base64 import b64encode
-from collections.abc import Sequence
-from typing import TYPE_CHECKING, Any, Callable, Protocol, TypeVar
-
-import reactpy
-from reactpy import html
-from reactpy._warnings import warn
-from reactpy.core.types import ComponentConstructor, VdomDict
-
-
-def image(
-    format: str,
-    value: str | bytes = "",
-    attributes: dict[str, Any] | None = None,
-) -> VdomDict:
-    """Utility for constructing an image from a string or bytes
-
-    The source value will automatically be encoded to base64
-    """
-    if format == "svg":
-        format = "svg+xml"  # noqa: A001
-
-    if isinstance(value, str):
-        bytes_value = value.encode()
-    else:
-        bytes_value = value
-
-    base64_value = b64encode(bytes_value).decode()
-    src = f"data:image/{format};base64,{base64_value}"
-
-    return {"tagName": "img", "attributes": {"src": src, **(attributes or {})}}
-
-
-_Value = TypeVar("_Value")
-
-
-def use_linked_inputs(
-    attributes: Sequence[dict[str, Any]],
-    on_change: Callable[[_Value], None] = lambda value: None,
-    cast: _CastFunc[_Value] = lambda value: value,
-    initial_value: str = "",
-    ignore_empty: bool = True,
-) -> list[VdomDict]:
-    """Return a list of linked inputs equal to the number of given attributes.
-
-    Parameters:
-        attributes:
-            That attributes of each returned input element. If the number of generated
-            inputs is variable, you may need to assign each one a
-            :ref:`key <Organizing Items With Keys>` by including a ``"key"`` in each
-            attribute dictionary.
-        on_change:
-            A callback which is triggered when any input is changed. This callback need
-            not update the 'value' field in the attributes of the inputs since that is
-            handled automatically.
-        cast:
-            Cast the 'value' of changed inputs that is passed to ``on_change``.
-        initial_value:
-            Initialize the 'value' field of the inputs.
-        ignore_empty:
-            Do not trigger ``on_change`` if the 'value' is an empty string.
-    """
-    value, set_value = reactpy.hooks.use_state(initial_value)
-
-    def sync_inputs(event: dict[str, Any]) -> None:
-        new_value = event["target"]["value"]
-        set_value(new_value)
-        if not new_value and ignore_empty:
-            return None
-        on_change(cast(new_value))
-
-    inputs: list[VdomDict] = []
-    for attrs in attributes:
-        inputs.append(html.input({**attrs, "on_change": sync_inputs, "value": value}))
-
-    return inputs
-
-
-_CastTo = TypeVar("_CastTo", covariant=True)
-
-
-class _CastFunc(Protocol[_CastTo]):
-    def __call__(self, value: str) -> _CastTo:
-        ...
-
-
-if TYPE_CHECKING:
-    from reactpy.testing.backend import _MountFunc
-
-
-def hotswap(
-    update_on_change: bool = False,
-) -> tuple[_MountFunc, ComponentConstructor]:  # nocov
-    warn(
-        "The 'hotswap' function is deprecated and will be removed in a future release",
-        DeprecationWarning,
-        stacklevel=2,
-    )
-    from reactpy.testing.backend import _hotswap
-
-    return _hotswap(update_on_change)
diff --git a/src/py/reactpy/tests/__init__.py b/src/py/reactpy/tests/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/tests/conftest.py b/src/py/reactpy/tests/conftest.py
deleted file mode 100644
index 21b23c12e..000000000
--- a/src/py/reactpy/tests/conftest.py
+++ /dev/null
@@ -1,80 +0,0 @@
-from __future__ import annotations
-
-import asyncio
-import os
-
-import pytest
-from _pytest.config import Config
-from _pytest.config.argparsing import Parser
-from playwright.async_api import async_playwright
-
-from reactpy.config import REACTPY_TESTING_DEFAULT_TIMEOUT
-from reactpy.testing import (
-    BackendFixture,
-    DisplayFixture,
-    capture_reactpy_logs,
-    clear_reactpy_web_modules_dir,
-)
-from tests.tooling.loop import open_event_loop
-
-
-def pytest_addoption(parser: Parser) -> None:
-    parser.addoption(
-        "--headed",
-        dest="headed",
-        action="store_true",
-        help="Open a browser window when running web-based tests",
-    )
-
-
-@pytest.fixture
-async def display(server, page):
-    async with DisplayFixture(server, page) as display:
-        yield display
-
-
-@pytest.fixture(scope="session")
-async def server():
-    async with BackendFixture() as server:
-        yield server
-
-
-@pytest.fixture(scope="session")
-async def page(browser):
-    pg = await browser.new_page()
-    pg.set_default_timeout(REACTPY_TESTING_DEFAULT_TIMEOUT.current * 1000)
-    try:
-        yield pg
-    finally:
-        await pg.close()
-
-
-@pytest.fixture(scope="session")
-async def browser(pytestconfig: Config):
-    async with async_playwright() as pw:
-        yield await pw.chromium.launch(headless=not bool(pytestconfig.option.headed))
-
-
-@pytest.fixture(scope="session")
-def event_loop():
-    if os.name == "nt":  # nocov
-        asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
-    with open_event_loop() as loop:
-        yield loop
-
-
-@pytest.fixture(autouse=True)
-def clear_web_modules_dir_after_test():
-    clear_reactpy_web_modules_dir()
-
-
-@pytest.fixture(autouse=True)
-def assert_no_logged_exceptions():
-    with capture_reactpy_logs() as records:
-        yield
-        try:
-            for r in records:
-                if r.exc_info is not None:
-                    raise r.exc_info[1]
-        finally:
-            records.clear()
diff --git a/src/py/reactpy/tests/test__console/__init__.py b/src/py/reactpy/tests/test__console/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/tests/test__console/test_rewrite_camel_case_props.py b/src/py/reactpy/tests/test__console/test_rewrite_camel_case_props.py
deleted file mode 100644
index 47b8baabc..000000000
--- a/src/py/reactpy/tests/test__console/test_rewrite_camel_case_props.py
+++ /dev/null
@@ -1,118 +0,0 @@
-import sys
-from pathlib import Path
-from textwrap import dedent
-
-import pytest
-from click.testing import CliRunner
-
-from reactpy._console.rewrite_camel_case_props import (
-    generate_rewrite,
-    rewrite_camel_case_props,
-)
-
-if sys.version_info < (3, 9):
-    pytestmark = pytest.mark.skip(reason="ast.unparse is Python>=3.9")
-
-
-def test_rewrite_camel_case_props_declarations(tmp_path):
-    runner = CliRunner()
-
-    tempfile: Path = tmp_path / "temp.py"
-    tempfile.write_text("html.div(dict(camelCase='test'))")
-    result = runner.invoke(
-        rewrite_camel_case_props,
-        args=[str(tmp_path)],
-        catch_exceptions=False,
-    )
-
-    assert result.exit_code == 0
-    assert tempfile.read_text() == "html.div(dict(camel_case='test'))"
-
-
-def test_rewrite_camel_case_props_declarations_no_files():
-    runner = CliRunner()
-
-    result = runner.invoke(
-        rewrite_camel_case_props,
-        args=["directory-does-no-exist"],
-        catch_exceptions=False,
-    )
-
-    assert result.exit_code != 0
-
-
-@pytest.mark.parametrize(
-    "source, expected",
-    [
-        (
-            "html.div(dict(camelCase='test'))",
-            "html.div(dict(camel_case='test'))",
-        ),
-        (
-            "reactpy.html.button({'onClick': block_forever})",
-            "reactpy.html.button({'on_click': block_forever})",
-        ),
-        (
-            "html.div(dict(style={'testThing': test}))",
-            "html.div(dict(style={'test_thing': test}))",
-        ),
-        (
-            "html.div(dict(style=dict(testThing=test)))",
-            "html.div(dict(style=dict(test_thing=test)))",
-        ),
-        (
-            "vdom('tag', dict(camelCase='test'))",
-            "vdom('tag', dict(camel_case='test'))",
-        ),
-        (
-            "vdom('tag', dict(camelCase='test', **props))",
-            "vdom('tag', dict(camel_case='test', **props))",
-        ),
-        (
-            "html.div({'camelCase': test, 'data-thing': test})",
-            "html.div({'camel_case': test, 'data-thing': test})",
-        ),
-        (
-            "html.div({'camelCase': test, ignore: this})",
-            "html.div({'camel_case': test, ignore: this})",
-        ),
-        # no rewrite
-        (
-            "html.div({'snake_case': test})",
-            None,
-        ),
-        (
-            "html.div({'data-case': test})",
-            None,
-        ),
-        (
-            "html.div(dict(snake_case='test'))",
-            None,
-        ),
-        (
-            "html.div()",
-            None,
-        ),
-        (
-            "vdom('tag')",
-            None,
-        ),
-        (
-            "html.div('child')",
-            None,
-        ),
-        (
-            "vdom('tag', 'child')",
-            None,
-        ),
-    ],
-    ids=lambda item: " ".join(map(str.strip, item.split()))
-    if isinstance(item, str)
-    else item,
-)
-def test_generate_rewrite(source, expected):
-    actual = generate_rewrite(Path("test.py"), dedent(source).strip())
-    if isinstance(expected, str):
-        expected = dedent(expected).strip()
-
-    assert actual == expected
diff --git a/src/py/reactpy/tests/test__console/test_rewrite_keys.py b/src/py/reactpy/tests/test__console/test_rewrite_keys.py
deleted file mode 100644
index da0b26c4f..000000000
--- a/src/py/reactpy/tests/test__console/test_rewrite_keys.py
+++ /dev/null
@@ -1,237 +0,0 @@
-import sys
-from pathlib import Path
-from textwrap import dedent
-
-import pytest
-from click.testing import CliRunner
-
-from reactpy._console.rewrite_keys import generate_rewrite, rewrite_keys
-
-if sys.version_info < (3, 9):
-    pytestmark = pytest.mark.skip(reason="ast.unparse is Python>=3.9")
-
-
-def test_rewrite_key_declarations(tmp_path):
-    runner = CliRunner()
-
-    tempfile: Path = tmp_path / "temp.py"
-    tempfile.write_text("html.div(key='test')")
-    result = runner.invoke(
-        rewrite_keys,
-        args=[str(tmp_path)],
-        catch_exceptions=False,
-    )
-
-    assert result.exit_code == 0
-    assert tempfile.read_text() == "html.div({'key': 'test'})"
-
-
-def test_rewrite_key_declarations_no_files():
-    runner = CliRunner()
-
-    result = runner.invoke(
-        rewrite_keys,
-        args=["directory-does-no-exist"],
-        catch_exceptions=False,
-    )
-
-    assert result.exit_code != 0
-
-
-@pytest.mark.parametrize(
-    "source, expected",
-    [
-        (
-            "html.div(key='test')",
-            "html.div({'key': 'test'})",
-        ),
-        (
-            "html.div('something', key='test')",
-            "html.div({'key': 'test'}, 'something')",
-        ),
-        (
-            "html.div({'some_attr': 1}, child_1, child_2, key='test')",
-            "html.div({'some_attr': 1, 'key': 'test'}, child_1, child_2)",
-        ),
-        (
-            "vdom('div', key='test')",
-            "vdom('div', {'key': 'test'})",
-        ),
-        (
-            "vdom('div', 'something', key='test')",
-            "vdom('div', {'key': 'test'}, 'something')",
-        ),
-        (
-            "vdom('div', {'some_attr': 1}, child_1, child_2, key='test')",
-            "vdom('div', {'some_attr': 1, 'key': 'test'}, child_1, child_2)",
-        ),
-        (
-            "html.div(dict(some_attr=1), child_1, child_2, key='test')",
-            "html.div(dict(some_attr=1, key='test'), child_1, child_2)",
-        ),
-        (
-            "vdom('div', dict(some_attr=1), child_1, child_2, key='test')",
-            "vdom('div', dict(some_attr=1, key='test'), child_1, child_2)",
-        ),
-        # avoid unnecessary changes
-        (
-            """
-            def my_function():
-                x = 1  # some comment
-                return html.div(key='test')
-            """,
-            """
-            def my_function():
-                x = 1  # some comment
-                return html.div({'key': 'test'})
-            """,
-        ),
-        (
-            """
-            if condition:
-                # some comment
-                dom = html.div(key='test')
-            """,
-            """
-            if condition:
-                # some comment
-                dom = html.div({'key': 'test'})
-            """,
-        ),
-        (
-            """
-            [
-                html.div(key='test'),
-                html.div(key='test'),
-            ]
-            """,
-            """
-            [
-                html.div({'key': 'test'}),
-                html.div({'key': 'test'}),
-            ]
-            """,
-        ),
-        (
-            """
-            @deco(
-                html.div(key='test'),
-                html.div(key='test'),
-            )
-            def func():
-                # comment
-                x = [
-                    1
-                ]
-            """,
-            """
-            @deco(
-                html.div({'key': 'test'}),
-                html.div({'key': 'test'}),
-            )
-            def func():
-                # comment
-                x = [
-                    1
-                ]
-            """,
-        ),
-        (
-            """
-            @deco(html.div(key='test'), html.div(key='test'))
-            def func():
-                # comment
-                x = [
-                    1
-                ]
-            """,
-            """
-            @deco(html.div({'key': 'test'}), html.div({'key': 'test'}))
-            def func():
-                # comment
-                x = [
-                    1
-                ]
-            """,
-        ),
-        (
-            """
-            (
-                result
-                if condition
-                else html.div(key='test')
-            )
-            """,
-            """
-            (
-                result
-                if condition
-                else html.div({'key': 'test'})
-            )
-            """,
-        ),
-        # best effort to preserve comments
-        (
-            """
-            x = 1
-            html.div(
-                "hello",
-                # comment 1
-                html.div(key='test'),
-                # comment 2
-                key='test',
-            )
-            """,
-            """
-            x = 1
-            # comment 1
-            # comment 2
-            html.div({'key': 'test'}, 'hello', html.div({'key': 'test'}))
-            """,
-        ),
-        # no rewrites
-        (
-            "html.no_an_element(key='test')",
-            None,
-        ),
-        (
-            "not_html.div(key='test')",
-            None,
-        ),
-        (
-            "html.div()",
-            None,
-        ),
-        (
-            "html.div(not_key='something')",
-            None,
-        ),
-        (
-            "vdom()",
-            None,
-        ),
-        (
-            "(some + expr)(key='test')",
-            None,
-        ),
-        ("html.div()", None),
-        # too ambiguous to rewrite
-        (
-            "html.div(child_1, child_2, key='test')",  # unclear if child_1 is attr dict
-            None,
-        ),
-        (
-            "vdom('div', child_1, child_2, key='test')",  # unclear if child_1 is attr dict
-            None,
-        ),
-    ],
-    ids=lambda item: " ".join(map(str.strip, item.split()))
-    if isinstance(item, str)
-    else item,
-)
-def test_generate_rewrite(source, expected):
-    actual = generate_rewrite(Path("test.py"), dedent(source).strip())
-    if isinstance(expected, str):
-        expected = dedent(expected).strip()
-
-    assert actual == expected
diff --git a/src/py/reactpy/tests/test__option.py b/src/py/reactpy/tests/test__option.py
deleted file mode 100644
index 63f2fada8..000000000
--- a/src/py/reactpy/tests/test__option.py
+++ /dev/null
@@ -1,111 +0,0 @@
-import os
-from unittest import mock
-
-import pytest
-
-from reactpy._option import DeprecatedOption, Option
-
-
-def test_option_repr():
-    opt = Option("A_FAKE_OPTION", "some-value")
-    assert opt.name == "A_FAKE_OPTION"
-    assert repr(opt) == "Option(A_FAKE_OPTION='some-value')"
-
-
-@mock.patch.dict(os.environ, {"A_FAKE_OPTION": "value-from-environ"})
-def test_option_from_os_environ():
-    opt = Option("A_FAKE_OPTION", "default-value")
-    assert opt.current == "value-from-environ"
-
-
-def test_option_from_default():
-    opt = Option("A_FAKE_OPTION", "default-value")
-    assert opt.current == "default-value"
-    assert opt.current is opt.default
-
-
-@mock.patch.dict(os.environ, {"A_FAKE_OPTION": "1"})
-def test_option_validator():
-    opt = Option("A_FAKE_OPTION", False, validator=lambda x: bool(int(x)))
-
-    assert opt.current is True
-
-    opt.current = "0"
-    assert opt.current is False
-
-    with pytest.raises(ValueError, match="invalid literal for int"):
-        opt.current = "not-an-int"
-
-
-def test_immutable_option():
-    opt = Option("A_FAKE_OPTION", "default-value", mutable=False)
-    assert not opt.mutable
-    with pytest.raises(TypeError, match="cannot be modified after initial load"):
-        opt.current = "a-new-value"
-    with pytest.raises(TypeError, match="cannot be modified after initial load"):
-        opt.unset()
-
-
-def test_option_reset():
-    opt = Option("A_FAKE_OPTION", "default-value")
-    opt.current = "a-new-value"
-    opt.unset()
-    assert opt.current is opt.default
-    assert not opt.is_set()
-
-
-@mock.patch.dict(os.environ, {"A_FAKE_OPTION": "value-from-environ"})
-def test_option_reload():
-    opt = Option("A_FAKE_OPTION", "default-value")
-    opt.current = "some-other-value"
-    opt.reload()
-    assert opt.current == "value-from-environ"
-
-
-def test_option_set():
-    opt = Option("A_FAKE_OPTION", "default-value")
-    assert not opt.is_set()
-    opt.current = "a-new-value"
-    assert opt.is_set()
-
-
-def test_option_set_default():
-    opt = Option("A_FAKE_OPTION", "default-value")
-    assert not opt.is_set()
-    assert opt.set_default("new-value") == "new-value"
-    assert opt.is_set()
-
-
-def test_cannot_subscribe_immutable_option():
-    opt = Option("A_FAKE_OPTION", "default", mutable=False)
-    with pytest.raises(TypeError, match="Immutable options cannot be subscribed to"):
-        opt.subscribe(lambda value: None)
-
-
-def test_option_subscribe():
-    opt = Option("A_FAKE_OPTION", "default")
-
-    calls = []
-    opt.subscribe(calls.append)
-    assert calls == ["default"]
-
-    opt.current = "default"
-    # value did not change, so no trigger
-    assert calls == ["default"]
-
-    opt.current = "new-1"
-    opt.current = "new-2"
-    assert calls == ["default", "new-1", "new-2"]
-
-    opt.unset()
-    assert calls == ["default", "new-1", "new-2", "default"]
-
-
-def test_deprecated_option():
-    opt = DeprecatedOption("is deprecated!", "A_FAKE_OPTION", None)
-
-    with pytest.warns(DeprecationWarning, match="is deprecated!"):
-        assert opt.current is None
-
-    with pytest.warns(DeprecationWarning, match="is deprecated!"):
-        opt.current = "something"
diff --git a/src/py/reactpy/tests/test_backend/__init__.py b/src/py/reactpy/tests/test_backend/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/tests/test_backend/test__common.py b/src/py/reactpy/tests/test_backend/test__common.py
deleted file mode 100644
index 248bf9451..000000000
--- a/src/py/reactpy/tests/test_backend/test__common.py
+++ /dev/null
@@ -1,70 +0,0 @@
-import pytest
-
-from reactpy import html
-from reactpy.backend._common import (
-    CommonOptions,
-    traversal_safe_path,
-    vdom_head_elements_to_html,
-)
-
-
-def test_common_options_url_prefix_starts_with_slash():
-    # no prefix specified
-    CommonOptions(url_prefix="")
-
-    with pytest.raises(ValueError, match="start with '/'"):
-        CommonOptions(url_prefix="not-start-withslash")
-
-
-@pytest.mark.parametrize(
-    "bad_path",
-    [
-        "../escaped",
-        "ok/../../escaped",
-        "ok/ok-again/../../ok-yet-again/../../../escaped",
-    ],
-)
-def test_catch_unsafe_relative_path_traversal(tmp_path, bad_path):
-    with pytest.raises(ValueError, match="Unsafe path"):
-        traversal_safe_path(tmp_path, *bad_path.split("/"))
-
-
-@pytest.mark.parametrize(
-    "vdom_in, html_out",
-    [
-        (
-            "<title>example</title>",
-            "<title>example</title>",
-        ),
-        (
-            # We do not modify strings given by user. If given as VDOM we would have
-            # striped this head element, but since provided as string, we leav as-is.
-            "<head></head>",
-            "<head></head>",
-        ),
-        (
-            html.head(
-                html.meta({"charset": "utf-8"}),
-                html.title("example"),
-            ),
-            # we strip the head element
-            '<meta charset="utf-8"><title>example</title>',
-        ),
-        (
-            html._(
-                html.meta({"charset": "utf-8"}),
-                html.title("example"),
-            ),
-            '<meta charset="utf-8"><title>example</title>',
-        ),
-        (
-            [
-                html.meta({"charset": "utf-8"}),
-                html.title("example"),
-            ],
-            '<meta charset="utf-8"><title>example</title>',
-        ),
-    ],
-)
-def test_vdom_head_elements_to_html(vdom_in, html_out):
-    assert vdom_head_elements_to_html(vdom_in) == html_out
diff --git a/src/py/reactpy/tests/test_backend/test_all.py b/src/py/reactpy/tests/test_backend/test_all.py
deleted file mode 100644
index 11b9693a2..000000000
--- a/src/py/reactpy/tests/test_backend/test_all.py
+++ /dev/null
@@ -1,174 +0,0 @@
-from collections.abc import MutableMapping
-
-import pytest
-
-import reactpy
-from reactpy import html
-from reactpy.backend import default as default_implementation
-from reactpy.backend._common import PATH_PREFIX
-from reactpy.backend.types import BackendImplementation, Connection, Location
-from reactpy.backend.utils import all_implementations
-from reactpy.testing import BackendFixture, DisplayFixture, poll
-
-
-@pytest.fixture(
-    params=[*list(all_implementations()), default_implementation],
-    ids=lambda imp: imp.__name__,
-    scope="module",
-)
-async def display(page, request):
-    imp: BackendImplementation = request.param
-
-    # we do this to check that route priorities for each backend are correct
-    if imp is default_implementation:
-        url_prefix = ""
-        opts = None
-    else:
-        url_prefix = str(PATH_PREFIX)
-        opts = imp.Options(url_prefix=url_prefix)
-
-    async with BackendFixture(implementation=imp, options=opts) as server:
-        async with DisplayFixture(
-            backend=server,
-            driver=page,
-            url_prefix=url_prefix,
-        ) as display:
-            yield display
-
-
-async def test_display_simple_hello_world(display: DisplayFixture):
-    @reactpy.component
-    def Hello():
-        return reactpy.html.p({"id": "hello"}, ["Hello World"])
-
-    await display.show(Hello)
-
-    await display.page.wait_for_selector("#hello")
-
-    # test that we can reconnect successfully
-    await display.page.reload()
-
-    await display.page.wait_for_selector("#hello")
-
-
-async def test_display_simple_click_counter(display: DisplayFixture):
-    @reactpy.component
-    def Counter():
-        count, set_count = reactpy.hooks.use_state(0)
-        return reactpy.html.button(
-            {
-                "id": "counter",
-                "on_click": lambda event: set_count(lambda old_count: old_count + 1),
-            },
-            f"Count: {count}",
-        )
-
-    await display.show(Counter)
-
-    counter = await display.page.wait_for_selector("#counter")
-
-    for i in range(5):
-        await poll(counter.text_content).until_equals(f"Count: {i}")
-        await counter.click()
-
-
-async def test_module_from_template(display: DisplayFixture):
-    victory = reactpy.web.module_from_template("react", "victory-bar@35.4.0")
-    VictoryBar = reactpy.web.export(victory, "VictoryBar")
-    await display.show(VictoryBar)
-    await display.page.wait_for_selector(".VictoryContainer")
-
-
-async def test_use_connection(display: DisplayFixture):
-    conn = reactpy.Ref()
-
-    @reactpy.component
-    def ShowScope():
-        conn.current = reactpy.use_connection()
-        return html.pre({"id": "scope"}, str(conn.current))
-
-    await display.show(ShowScope)
-
-    await display.page.wait_for_selector("#scope")
-    assert isinstance(conn.current, Connection)
-
-
-async def test_use_scope(display: DisplayFixture):
-    scope = reactpy.Ref()
-
-    @reactpy.component
-    def ShowScope():
-        scope.current = reactpy.use_scope()
-        return html.pre({"id": "scope"}, str(scope.current))
-
-    await display.show(ShowScope)
-
-    await display.page.wait_for_selector("#scope")
-    assert isinstance(scope.current, MutableMapping)
-
-
-async def test_use_location(display: DisplayFixture):
-    location = reactpy.Ref()
-
-    @poll
-    async def poll_location():
-        """This needs to be async to allow the server to respond"""
-        return location.current
-
-    @reactpy.component
-    def ShowRoute():
-        location.current = reactpy.use_location()
-        return html.pre(str(location.current))
-
-    await display.show(ShowRoute)
-
-    await poll_location.until_equals(Location("/", ""))
-
-    for loc in [
-        Location("/something", ""),
-        Location("/something/file.txt", ""),
-        Location("/another/something", ""),
-        Location("/another/something/file.txt", ""),
-        Location("/another/something/file.txt", "?key=value"),
-        Location("/another/something/file.txt", "?key1=value1&key2=value2"),
-    ]:
-        await display.goto(loc.pathname + loc.search)
-        await poll_location.until_equals(loc)
-
-
-@pytest.mark.parametrize("hook_name", ["use_request", "use_websocket"])
-async def test_use_request(display: DisplayFixture, hook_name):
-    hook = getattr(display.backend.implementation, hook_name, None)
-    if hook is None:
-        pytest.skip(f"{display.backend.implementation} has no '{hook_name}' hook")
-
-    hook_val = reactpy.Ref()
-
-    @reactpy.component
-    def ShowRoute():
-        hook_val.current = hook()
-        return html.pre({"id": "hook"}, str(hook_val.current))
-
-    await display.show(ShowRoute)
-
-    await display.page.wait_for_selector("#hook")
-
-    # we can't easily narrow this check
-    assert hook_val.current is not None
-
-
-@pytest.mark.parametrize("imp", all_implementations())
-async def test_customized_head(imp: BackendImplementation, page):
-    custom_title = f"Custom Title for {imp.__name__}"
-
-    @reactpy.component
-    def sample():
-        return html.h1(f"^ Page title is customized to: '{custom_title}'")
-
-    async with BackendFixture(
-        implementation=imp,
-        options=imp.Options(head=html.title(custom_title)),
-    ) as server:
-        async with DisplayFixture(backend=server, driver=page) as display:
-            await display.show(sample)
-            assert (await display.page.title()) == custom_title
diff --git a/src/py/reactpy/tests/test_backend/test_utils.py b/src/py/reactpy/tests/test_backend/test_utils.py
deleted file mode 100644
index 2a58dc62a..000000000
--- a/src/py/reactpy/tests/test_backend/test_utils.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import threading
-import time
-from contextlib import ExitStack
-
-import pytest
-from playwright.async_api import Page
-
-from reactpy.backend import flask as flask_implementation
-from reactpy.backend.utils import find_available_port
-from reactpy.backend.utils import run as sync_run
-from reactpy.sample import SampleApp
-
-
-@pytest.fixture
-def exit_stack():
-    with ExitStack() as es:
-        yield es
-
-
-def test_find_available_port():
-    assert find_available_port("localhost", port_min=5000, port_max=6000)
-    with pytest.raises(RuntimeError, match="no available port"):
-        # check that if port range is exhausted we raise
-        find_available_port("localhost", port_min=0, port_max=0)
-
-
-async def test_run(page: Page):
-    host = "127.0.0.1"
-    port = find_available_port(host)
-    url = f"http://{host}:{port}"
-
-    threading.Thread(
-        target=lambda: sync_run(
-            SampleApp,
-            host,
-            port,
-            implementation=flask_implementation,
-        ),
-        daemon=True,
-    ).start()
-
-    # give the server a moment to start
-    time.sleep(0.5)
-
-    await page.goto(url)
-    await page.wait_for_selector("#sample")
diff --git a/src/py/reactpy/tests/test_client.py b/src/py/reactpy/tests/test_client.py
deleted file mode 100644
index 3c7250e48..000000000
--- a/src/py/reactpy/tests/test_client.py
+++ /dev/null
@@ -1,161 +0,0 @@
-import asyncio
-from contextlib import AsyncExitStack
-from pathlib import Path
-
-from playwright.async_api import Browser
-
-import reactpy
-from reactpy.backend.utils import find_available_port
-from reactpy.testing import BackendFixture, DisplayFixture, poll
-from tests.tooling.common import DEFAULT_TYPE_DELAY
-from tests.tooling.hooks import use_counter
-
-JS_DIR = Path(__file__).parent / "js"
-
-
-async def test_automatic_reconnect(browser: Browser):
-    port = find_available_port("localhost")
-    page = await browser.new_page()
-
-    # we need to wait longer here because the automatic reconnect is not instant
-    page.set_default_timeout(10000)
-
-    @reactpy.component
-    def SomeComponent():
-        count, incr_count = use_counter(0)
-        return reactpy.html._(
-            reactpy.html.p({"data_count": count, "id": "count"}, "count", count),
-            reactpy.html.button(
-                {"on_click": lambda e: incr_count(), "id": "incr"}, "incr"
-            ),
-        )
-
-    async with AsyncExitStack() as exit_stack:
-        server = await exit_stack.enter_async_context(BackendFixture(port=port))
-        display = await exit_stack.enter_async_context(
-            DisplayFixture(server, driver=page)
-        )
-
-        await display.show(SomeComponent)
-
-        count = await page.wait_for_selector("#count")
-        incr = await page.wait_for_selector("#incr")
-
-        for i in range(3):
-            assert (await count.get_attribute("data-count")) == str(i)
-            await incr.click()
-
-    # the server is disconnected but the last view state is still shown
-    await page.wait_for_selector("#count")
-
-    async with AsyncExitStack() as exit_stack:
-        server = await exit_stack.enter_async_context(BackendFixture(port=port))
-        display = await exit_stack.enter_async_context(
-            DisplayFixture(server, driver=page)
-        )
-
-        # use mount instead of show to avoid a page refresh
-        display.backend.mount(SomeComponent)
-
-        async def get_count():
-            # need to refetch element because may unmount on reconnect
-            count = await page.wait_for_selector("#count")
-            return await count.get_attribute("data-count")
-
-        for i in range(3):
-            # it may take a moment for the websocket to reconnect so need to poll
-            await poll(get_count).until_equals(str(i))
-
-            # need to refetch element because may unmount on reconnect
-            incr = await page.wait_for_selector("#incr")
-
-            await incr.click()
-
-
-async def test_style_can_be_changed(display: DisplayFixture):
-    """This test was introduced to verify the client does not mutate the model
-
-    A bug was introduced where the client-side model was mutated and React was relying
-    on the model to have been copied in order to determine if something had changed.
-
-    See for more info: https://github.com/reactive-python/reactpy/issues/480
-    """
-
-    @reactpy.component
-    def ButtonWithChangingColor():
-        color_toggle, set_color_toggle = reactpy.hooks.use_state(True)
-        color = "red" if color_toggle else "blue"
-        return reactpy.html.button(
-            {
-                "id": "my-button",
-                "on_click": lambda event: set_color_toggle(not color_toggle),
-                "style": {"background_color": color, "color": "white"},
-            },
-            f"color: {color}",
-        )
-
-    await display.show(ButtonWithChangingColor)
-
-    button = await display.page.wait_for_selector("#my-button")
-
-    assert (await _get_style(button))["background-color"] == "red"
-
-    for color in ["blue", "red"] * 2:
-        await button.click()
-        assert (await _get_style(button))["background-color"] == color
-
-
-async def _get_style(element):
-    items = (await element.get_attribute("style")).split(";")
-    pairs = [item.split(":", 1) for item in map(str.strip, items) if item]
-    return {key.strip(): value.strip() for key, value in pairs}
-
-
-async def test_slow_server_response_on_input_change(display: DisplayFixture):
-    """A delay server-side could cause input values to be overwritten.
-
-    For more info see: https://github.com/reactive-python/reactpy/issues/684
-    """
-
-    delay = 0.2
-
-    @reactpy.component
-    def SomeComponent():
-        value, set_value = reactpy.hooks.use_state("")
-
-        async def handle_change(event):
-            await asyncio.sleep(delay)
-            set_value(event["target"]["value"])
-
-        return reactpy.html.input({"on_change": handle_change, "id": "test-input"})
-
-    await display.show(SomeComponent)
-
-    inp = await display.page.wait_for_selector("#test-input")
-    await inp.type("hello", delay=DEFAULT_TYPE_DELAY)
-
-    assert (await inp.evaluate("node => node.value")) == "hello"
-
-
-async def test_snake_case_attributes(display: DisplayFixture):
-    @reactpy.component
-    def SomeComponent():
-        return reactpy.html.h1(
-            {
-                "id": "my-title",
-                "style": {"background_color": "blue"},
-                "class_name": "hello",
-                "data_some_thing": "some-data",
-                "aria_some_thing": "some-aria",
-            },
-            "title with some attributes",
-        )
-
-    await display.show(SomeComponent)
-
-    title = await display.page.wait_for_selector("#my-title")
-
-    assert await title.get_attribute("class") == "hello"
-    assert await title.get_attribute("style") == "background-color: blue;"
-    assert await title.get_attribute("data-some-thing") == "some-data"
-    assert await title.get_attribute("aria-some-thing") == "some-aria"
diff --git a/src/py/reactpy/tests/test_config.py b/src/py/reactpy/tests/test_config.py
deleted file mode 100644
index ecbbb998c..000000000
--- a/src/py/reactpy/tests/test_config.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import pytest
-
-from reactpy import config
-from reactpy._option import Option
-
-
-@pytest.fixture(autouse=True)
-def reset_options():
-    options = [value for value in config.__dict__.values() if isinstance(value, Option)]
-
-    should_unset = object()
-    original_values = []
-    for opt in options:
-        original_values.append(opt.current if opt.is_set() else should_unset)
-
-    yield
-
-    for opt, val in zip(options, original_values):
-        if val is should_unset:
-            if opt.is_set():
-                opt.unset()
-        else:
-            opt.current = val
-
-
-def test_reactpy_debug_mode_toggle():
-    # just check that nothing breaks
-    config.REACTPY_DEBUG_MODE.current = True
-    config.REACTPY_DEBUG_MODE.current = False
diff --git a/src/py/reactpy/tests/test_core/__init__.py b/src/py/reactpy/tests/test_core/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/tests/test_core/test_component.py b/src/py/reactpy/tests/test_core/test_component.py
deleted file mode 100644
index aa8996d4e..000000000
--- a/src/py/reactpy/tests/test_core/test_component.py
+++ /dev/null
@@ -1,73 +0,0 @@
-import reactpy
-from reactpy.testing import DisplayFixture
-
-
-def test_component_repr():
-    @reactpy.component
-    def MyComponent(a, *b, **c):
-        pass
-
-    mc1 = MyComponent(1, 2, 3, x=4, y=5)
-
-    expected = f"MyComponent({id(mc1):02x}, a=1, b=(2, 3), c={{'x': 4, 'y': 5}})"
-    assert repr(mc1) == expected
-
-    # not enough args supplied to function
-    assert repr(MyComponent()) == "MyComponent(...)"
-
-
-async def test_simple_component():
-    @reactpy.component
-    def SimpleDiv():
-        return reactpy.html.div()
-
-    assert SimpleDiv().render() == {"tagName": "div"}
-
-
-async def test_simple_parameterized_component():
-    @reactpy.component
-    def SimpleParamComponent(tag):
-        return reactpy.vdom(tag)
-
-    assert SimpleParamComponent("div").render() == {"tagName": "div"}
-
-
-async def test_component_with_var_args():
-    @reactpy.component
-    def ComponentWithVarArgsAndKwargs(*args, **kwargs):
-        return reactpy.html.div(kwargs, args)
-
-    assert ComponentWithVarArgsAndKwargs("hello", "world", my_attr=1).render() == {
-        "tagName": "div",
-        "attributes": {"my_attr": 1},
-        "children": ["hello", "world"],
-    }
-
-
-async def test_display_simple_hello_world(display: DisplayFixture):
-    @reactpy.component
-    def Hello():
-        return reactpy.html.p({"id": "hello"}, ["Hello World"])
-
-    await display.show(Hello)
-
-    await display.page.wait_for_selector("#hello")
-
-
-async def test_pre_tags_are_rendered_correctly(display: DisplayFixture):
-    @reactpy.component
-    def PreFormatted():
-        return reactpy.html.pre(
-            {"id": "pre-form-test"},
-            reactpy.html.span("this", reactpy.html.span("is"), "some"),
-            "pre-formatted",
-            " text",
-        )
-
-    await display.show(PreFormatted)
-
-    pre = await display.page.wait_for_selector("#pre-form-test")
-
-    assert (
-        await pre.evaluate("node => node.innerHTML")
-    ) == "<span>this<span>is</span>some</span>pre-formatted text"
diff --git a/src/py/reactpy/tests/test_core/test_events.py b/src/py/reactpy/tests/test_core/test_events.py
deleted file mode 100644
index 237c9d4ed..000000000
--- a/src/py/reactpy/tests/test_core/test_events.py
+++ /dev/null
@@ -1,223 +0,0 @@
-import pytest
-
-import reactpy
-from reactpy.core.events import (
-    EventHandler,
-    merge_event_handler_funcs,
-    merge_event_handlers,
-    to_event_handler_function,
-)
-from reactpy.testing import DisplayFixture, poll
-from tests.tooling.common import DEFAULT_TYPE_DELAY
-
-
-def test_event_handler_repr():
-    handler = EventHandler(lambda: None)
-    assert repr(handler) == (
-        f"EventHandler(function={handler.function}, prevent_default=False, "
-        f"stop_propagation=False, target={handler.target!r})"
-    )
-
-
-def test_event_handler_props():
-    handler_0 = EventHandler(lambda data: None)
-    assert handler_0.stop_propagation is False
-    assert handler_0.prevent_default is False
-    assert handler_0.target is None
-
-    handler_1 = EventHandler(lambda data: None, prevent_default=True)
-    assert handler_1.stop_propagation is False
-    assert handler_1.prevent_default is True
-    assert handler_1.target is None
-
-    handler_2 = EventHandler(lambda data: None, stop_propagation=True)
-    assert handler_2.stop_propagation is True
-    assert handler_2.prevent_default is False
-    assert handler_2.target is None
-
-    handler_3 = EventHandler(lambda data: None, target="123")
-    assert handler_3.stop_propagation is False
-    assert handler_3.prevent_default is False
-    assert handler_3.target == "123"
-
-
-def test_event_handler_equivalence():
-    async def func(data):
-        return None
-
-    assert EventHandler(func) == EventHandler(func)
-
-    assert EventHandler(lambda data: None) != EventHandler(lambda data: None)
-
-    assert EventHandler(func, stop_propagation=True) != EventHandler(
-        func, stop_propagation=False
-    )
-
-    assert EventHandler(func, prevent_default=True) != EventHandler(
-        func, prevent_default=False
-    )
-
-    assert EventHandler(func, target="123") != EventHandler(func, target="456")
-
-
-async def test_to_event_handler_function():
-    call_args = reactpy.Ref(None)
-
-    async def coro(*args):
-        call_args.current = args
-
-    def func(*args):
-        call_args.current = args
-
-    await to_event_handler_function(coro, positional_args=True)([1, 2, 3])
-    assert call_args.current == (1, 2, 3)
-
-    await to_event_handler_function(func, positional_args=True)([1, 2, 3])
-    assert call_args.current == (1, 2, 3)
-
-    await to_event_handler_function(coro, positional_args=False)([1, 2, 3])
-    assert call_args.current == ([1, 2, 3],)
-
-    await to_event_handler_function(func, positional_args=False)([1, 2, 3])
-    assert call_args.current == ([1, 2, 3],)
-
-
-async def test_merge_event_handler_empty_list():
-    with pytest.raises(ValueError, match="No event handlers to merge"):
-        merge_event_handlers([])
-
-
-@pytest.mark.parametrize(
-    "kwargs_1, kwargs_2",
-    [
-        ({"stop_propagation": True}, {"stop_propagation": False}),
-        ({"prevent_default": True}, {"prevent_default": False}),
-        ({"target": "this"}, {"target": "that"}),
-    ],
-)
-async def test_merge_event_handlers_raises_on_mismatch(kwargs_1, kwargs_2):
-    def func(data):
-        return None
-
-    with pytest.raises(ValueError, match="Cannot merge handlers"):
-        merge_event_handlers(
-            [
-                EventHandler(func, **kwargs_1),
-                EventHandler(func, **kwargs_2),
-            ]
-        )
-
-
-async def test_merge_event_handlers():
-    handler = EventHandler(lambda data: None)
-    assert merge_event_handlers([handler]) is handler
-
-    calls = []
-    merged_handler = merge_event_handlers(
-        [
-            EventHandler(lambda data: calls.append("first")),
-            EventHandler(lambda data: calls.append("second")),
-        ]
-    )
-    await merged_handler.function({})
-    assert calls == ["first", "second"]
-
-
-def test_merge_event_handler_funcs_empty_list():
-    with pytest.raises(ValueError, match="No event handler functions to merge"):
-        merge_event_handler_funcs([])
-
-
-async def test_merge_event_handler_funcs():
-    calls = []
-
-    async def some_func(data):
-        calls.append("some_func")
-
-    async def some_other_func(data):
-        calls.append("some_other_func")
-
-    assert merge_event_handler_funcs([some_func]) is some_func
-
-    merged_handler = merge_event_handler_funcs([some_func, some_other_func])
-    await merged_handler([])
-    assert calls == ["some_func", "some_other_func"]
-
-
-async def test_can_prevent_event_default_operation(display: DisplayFixture):
-    @reactpy.component
-    def Input():
-        @reactpy.event(prevent_default=True)
-        async def on_key_down(value):
-            pass
-
-        return reactpy.html.input({"on_key_down": on_key_down, "id": "input"})
-
-    await display.show(Input)
-
-    inp = await display.page.wait_for_selector("#input")
-    await inp.type("hello", delay=DEFAULT_TYPE_DELAY)
-    # the default action of updating the element's value did not take place
-    assert (await inp.evaluate("node => node.value")) == ""
-
-
-async def test_simple_click_event(display: DisplayFixture):
-    @reactpy.component
-    def Button():
-        clicked, set_clicked = reactpy.hooks.use_state(False)
-
-        async def on_click(event):
-            set_clicked(True)
-
-        if not clicked:
-            return reactpy.html.button(
-                {"on_click": on_click, "id": "click"}, ["Click Me!"]
-            )
-        else:
-            return reactpy.html.p({"id": "complete"}, ["Complete"])
-
-    await display.show(Button)
-
-    button = await display.page.wait_for_selector("#click")
-    await button.click()
-    await display.page.wait_for_selector("#complete")
-
-
-async def test_can_stop_event_propagation(display: DisplayFixture):
-    clicked = reactpy.Ref(False)
-
-    @reactpy.component
-    def DivInDiv():
-        @reactpy.event(stop_propagation=True)
-        def inner_click_no_op(event):
-            clicked.current = True
-
-        def outer_click_is_not_triggered(event):
-            raise AssertionError()
-
-        outer = reactpy.html.div(
-            {
-                "style": {"height": "35px", "width": "35px", "background_color": "red"},
-                "on_click": outer_click_is_not_triggered,
-                "id": "outer",
-            },
-            reactpy.html.div(
-                {
-                    "style": {
-                        "height": "30px",
-                        "width": "30px",
-                        "background_color": "blue",
-                    },
-                    "on_click": inner_click_no_op,
-                    "id": "inner",
-                }
-            ),
-        )
-        return outer
-
-    await display.show(DivInDiv)
-
-    inner = await display.page.wait_for_selector("#inner")
-    await inner.click()
-
-    await poll(lambda: clicked.current).until_is(True)
diff --git a/src/py/reactpy/tests/test_core/test_hooks.py b/src/py/reactpy/tests/test_core/test_hooks.py
deleted file mode 100644
index 453d07c99..000000000
--- a/src/py/reactpy/tests/test_core/test_hooks.py
+++ /dev/null
@@ -1,1259 +0,0 @@
-import asyncio
-
-import pytest
-
-import reactpy
-from reactpy import html
-from reactpy.config import REACTPY_DEBUG_MODE
-from reactpy.core.hooks import (
-    COMPONENT_DID_RENDER_EFFECT,
-    LifeCycleHook,
-    current_hook,
-    strictly_equal,
-)
-from reactpy.core.layout import Layout
-from reactpy.testing import DisplayFixture, HookCatcher, assert_reactpy_did_log, poll
-from reactpy.testing.logs import assert_reactpy_did_not_log
-from reactpy.utils import Ref
-from tests.tooling.common import DEFAULT_TYPE_DELAY, update_message
-
-
-async def test_must_be_rendering_in_layout_to_use_hooks():
-    @reactpy.component
-    def SimpleComponentWithHook():
-        reactpy.hooks.use_state(None)
-        return reactpy.html.div()
-
-    with pytest.raises(RuntimeError, match="No life cycle hook is active"):
-        await SimpleComponentWithHook().render()
-
-    async with reactpy.Layout(SimpleComponentWithHook()) as layout:
-        await layout.render()
-
-
-async def test_simple_stateful_component():
-    @reactpy.component
-    def SimpleStatefulComponent():
-        index, set_index = reactpy.hooks.use_state(0)
-        set_index(index + 1)
-        return reactpy.html.div(index)
-
-    sse = SimpleStatefulComponent()
-
-    async with reactpy.Layout(sse) as layout:
-        update_1 = await layout.render()
-        assert update_1 == update_message(
-            path="",
-            model={
-                "tagName": "",
-                "children": [{"tagName": "div", "children": ["0"]}],
-            },
-        )
-
-        update_2 = await layout.render()
-        assert update_2 == update_message(
-            path="",
-            model={
-                "tagName": "",
-                "children": [{"tagName": "div", "children": ["1"]}],
-            },
-        )
-
-        update_3 = await layout.render()
-        assert update_3 == update_message(
-            path="",
-            model={
-                "tagName": "",
-                "children": [{"tagName": "div", "children": ["2"]}],
-            },
-        )
-
-
-async def test_set_state_callback_identity_is_preserved():
-    saved_set_state_hooks = []
-
-    @reactpy.component
-    def SimpleStatefulComponent():
-        index, set_index = reactpy.hooks.use_state(0)
-        saved_set_state_hooks.append(set_index)
-        set_index(index + 1)
-        return reactpy.html.div(index)
-
-    sse = SimpleStatefulComponent()
-
-    async with reactpy.Layout(sse) as layout:
-        await layout.render()
-        await layout.render()
-        await layout.render()
-        await layout.render()
-
-    first_hook = saved_set_state_hooks[0]
-    for h in saved_set_state_hooks[1:]:
-        assert first_hook is h
-
-
-async def test_use_state_with_constructor():
-    constructor_call_count = reactpy.Ref(0)
-
-    set_outer_state = reactpy.Ref()
-    set_inner_key = reactpy.Ref()
-    set_inner_state = reactpy.Ref()
-
-    def make_default():
-        constructor_call_count.current += 1
-        return 0
-
-    @reactpy.component
-    def Outer():
-        state, set_outer_state.current = reactpy.use_state(0)
-        inner_key, set_inner_key.current = reactpy.use_state("first")
-        return reactpy.html.div(state, Inner(key=inner_key))
-
-    @reactpy.component
-    def Inner():
-        state, set_inner_state.current = reactpy.use_state(make_default)
-        return reactpy.html.div(state)
-
-    async with reactpy.Layout(Outer()) as layout:
-        await layout.render()
-
-        assert constructor_call_count.current == 1
-
-        set_outer_state.current(1)
-        await layout.render()
-
-        assert constructor_call_count.current == 1
-
-        set_inner_state.current(1)
-        await layout.render()
-
-        assert constructor_call_count.current == 1
-
-        set_inner_key.current("second")
-        await layout.render()
-
-        assert constructor_call_count.current == 2
-
-
-async def test_set_state_with_reducer_instead_of_value():
-    count = reactpy.Ref()
-    set_count = reactpy.Ref()
-
-    def increment(count):
-        return count + 1
-
-    @reactpy.component
-    def Counter():
-        count.current, set_count.current = reactpy.hooks.use_state(0)
-        return reactpy.html.div(count.current)
-
-    async with reactpy.Layout(Counter()) as layout:
-        await layout.render()
-
-        for i in range(4):
-            assert count.current == i
-            set_count.current(increment)
-            await layout.render()
-
-
-async def test_set_state_checks_identity_not_equality(display: DisplayFixture):
-    r_1 = reactpy.Ref("value")
-    r_2 = reactpy.Ref("value")
-
-    # refs are equal but not identical
-    assert r_1 == r_2
-    assert r_1 is not r_2
-
-    render_count = reactpy.Ref(0)
-    event_count = reactpy.Ref(0)
-
-    def event_count_tracker(function):
-        def tracker(*args, **kwargs):
-            event_count.current += 1
-            return function(*args, **kwargs)
-
-        return tracker
-
-    @reactpy.component
-    def TestComponent():
-        state, set_state = reactpy.hooks.use_state(r_1)
-
-        render_count.current += 1
-        return reactpy.html.div(
-            reactpy.html.button(
-                {
-                    "id": "r_1",
-                    "on_click": event_count_tracker(lambda event: set_state(r_1)),
-                },
-                "r_1",
-            ),
-            reactpy.html.button(
-                {
-                    "id": "r_2",
-                    "on_click": event_count_tracker(lambda event: set_state(r_2)),
-                },
-                "r_2",
-            ),
-            f"Last state: {'r_1' if state is r_1 else 'r_2'}",
-        )
-
-    await display.show(TestComponent)
-
-    client_r_1_button = await display.page.wait_for_selector("#r_1")
-    client_r_2_button = await display.page.wait_for_selector("#r_2")
-
-    poll_event_count = poll(lambda: event_count.current)
-    poll_render_count = poll(lambda: render_count.current)
-
-    assert render_count.current == 1
-    assert event_count.current == 0
-
-    await client_r_1_button.click()
-
-    await poll_event_count.until_equals(1)
-    await poll_render_count.until_equals(1)
-
-    await client_r_2_button.click()
-
-    await poll_event_count.until_equals(2)
-    await poll_render_count.until_equals(2)
-
-    await client_r_2_button.click()
-
-    await poll_event_count.until_equals(3)
-    await poll_render_count.until_equals(2)
-
-
-async def test_simple_input_with_use_state(display: DisplayFixture):
-    message_ref = reactpy.Ref(None)
-
-    @reactpy.component
-    def Input(message=None):
-        message, set_message = reactpy.hooks.use_state(message)
-        message_ref.current = message
-
-        async def on_change(event):
-            if event["target"]["value"] == "this is a test":
-                set_message(event["target"]["value"])
-
-        if message is None:
-            return reactpy.html.input({"id": "input", "on_change": on_change})
-        else:
-            return reactpy.html.p({"id": "complete"}, ["Complete"])
-
-    await display.show(Input)
-
-    button = await display.page.wait_for_selector("#input")
-    await button.type("this is a test", delay=DEFAULT_TYPE_DELAY)
-    await display.page.wait_for_selector("#complete")
-
-    assert message_ref.current == "this is a test"
-
-
-async def test_double_set_state(display: DisplayFixture):
-    @reactpy.component
-    def SomeComponent():
-        state_1, set_state_1 = reactpy.hooks.use_state(0)
-        state_2, set_state_2 = reactpy.hooks.use_state(0)
-
-        def double_set_state(event):
-            set_state_1(state_1 + 1)
-            set_state_2(state_2 + 1)
-
-        return reactpy.html.div(
-            reactpy.html.div(
-                {"id": "first", "data-value": state_1}, f"value is: {state_1}"
-            ),
-            reactpy.html.div(
-                {"id": "second", "data-value": state_2}, f"value is: {state_2}"
-            ),
-            reactpy.html.button(
-                {"id": "button", "on_click": double_set_state}, "click me"
-            ),
-        )
-
-    await display.show(SomeComponent)
-
-    button = await display.page.wait_for_selector("#button")
-    first = await display.page.wait_for_selector("#first")
-    second = await display.page.wait_for_selector("#second")
-
-    assert (await first.get_attribute("data-value")) == "0"
-    assert (await second.get_attribute("data-value")) == "0"
-
-    await button.click()
-
-    assert (await first.get_attribute("data-value")) == "1"
-    assert (await second.get_attribute("data-value")) == "1"
-
-    await button.click()
-
-    assert (await first.get_attribute("data-value")) == "2"
-    assert (await second.get_attribute("data-value")) == "2"
-
-
-async def test_use_effect_callback_occurs_after_full_render_is_complete():
-    effect_triggered = reactpy.Ref(False)
-    effect_triggers_after_final_render = reactpy.Ref(None)
-
-    @reactpy.component
-    def OuterComponent():
-        return reactpy.html.div(
-            ComponentWithEffect(),
-            CheckNoEffectYet(),
-        )
-
-    @reactpy.component
-    def ComponentWithEffect():
-        @reactpy.hooks.use_effect
-        def effect():
-            effect_triggered.current = True
-
-        return reactpy.html.div()
-
-    @reactpy.component
-    def CheckNoEffectYet():
-        effect_triggers_after_final_render.current = not effect_triggered.current
-        return reactpy.html.div()
-
-    async with reactpy.Layout(OuterComponent()) as layout:
-        await layout.render()
-
-    assert effect_triggered.current
-    assert effect_triggers_after_final_render.current is not None
-    assert effect_triggers_after_final_render.current
-
-
-async def test_use_effect_cleanup_occurs_before_next_effect():
-    component_hook = HookCatcher()
-    cleanup_triggered = reactpy.Ref(False)
-    cleanup_triggered_before_next_effect = reactpy.Ref(False)
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithEffect():
-        @reactpy.hooks.use_effect(dependencies=None)
-        def effect():
-            if cleanup_triggered.current:
-                cleanup_triggered_before_next_effect.current = True
-
-            def cleanup():
-                cleanup_triggered.current = True
-
-            return cleanup
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithEffect()) as layout:
-        await layout.render()
-
-        assert not cleanup_triggered.current
-
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-        assert cleanup_triggered.current
-        assert cleanup_triggered_before_next_effect.current
-
-
-async def test_use_effect_cleanup_occurs_on_will_unmount():
-    set_key = reactpy.Ref()
-    component_did_render = reactpy.Ref(False)
-    cleanup_triggered = reactpy.Ref(False)
-    cleanup_triggered_before_next_render = reactpy.Ref(False)
-
-    @reactpy.component
-    def OuterComponent():
-        key, set_key.current = reactpy.use_state("first")
-        return ComponentWithEffect(key=key)
-
-    @reactpy.component
-    def ComponentWithEffect():
-        if component_did_render.current and cleanup_triggered.current:
-            cleanup_triggered_before_next_render.current = True
-
-        component_did_render.current = True
-
-        @reactpy.hooks.use_effect
-        def effect():
-            def cleanup():
-                cleanup_triggered.current = True
-
-            return cleanup
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(OuterComponent()) as layout:
-        await layout.render()
-
-        assert not cleanup_triggered.current
-
-        set_key.current("second")
-        await layout.render()
-
-        assert cleanup_triggered.current
-        assert cleanup_triggered_before_next_render.current
-
-
-async def test_memoized_effect_on_recreated_if_dependencies_change():
-    component_hook = HookCatcher()
-    set_state_callback = reactpy.Ref(None)
-    effect_run_count = reactpy.Ref(0)
-
-    first_value = 1
-    second_value = 2
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithMemoizedEffect():
-        state, set_state_callback.current = reactpy.hooks.use_state(first_value)
-
-        @reactpy.hooks.use_effect(dependencies=[state])
-        def effect():
-            effect_run_count.current += 1
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithMemoizedEffect()) as layout:
-        await layout.render()
-
-        assert effect_run_count.current == 1
-
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-        assert effect_run_count.current == 1
-
-        set_state_callback.current(second_value)
-        await layout.render()
-
-        assert effect_run_count.current == 2
-
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-        assert effect_run_count.current == 2
-
-
-async def test_memoized_effect_cleanup_only_triggered_before_new_effect():
-    component_hook = HookCatcher()
-    set_state_callback = reactpy.Ref(None)
-    cleanup_trigger_count = reactpy.Ref(0)
-
-    first_value = 1
-    second_value = 2
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithEffect():
-        state, set_state_callback.current = reactpy.hooks.use_state(first_value)
-
-        @reactpy.hooks.use_effect(dependencies=[state])
-        def effect():
-            def cleanup():
-                cleanup_trigger_count.current += 1
-
-            return cleanup
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithEffect()) as layout:
-        await layout.render()
-
-        assert cleanup_trigger_count.current == 0
-
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-        assert cleanup_trigger_count.current == 0
-
-        set_state_callback.current(second_value)
-        await layout.render()
-
-        assert cleanup_trigger_count.current == 1
-
-
-async def test_use_async_effect():
-    effect_ran = asyncio.Event()
-
-    @reactpy.component
-    def ComponentWithAsyncEffect():
-        @reactpy.hooks.use_effect
-        async def effect():
-            effect_ran.set()
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithAsyncEffect()) as layout:
-        await layout.render()
-        await asyncio.wait_for(effect_ran.wait(), 1)
-
-
-async def test_use_async_effect_cleanup():
-    component_hook = HookCatcher()
-    effect_ran = asyncio.Event()
-    cleanup_ran = asyncio.Event()
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithAsyncEffect():
-        @reactpy.hooks.use_effect(dependencies=None)  # force this to run every time
-        async def effect():
-            effect_ran.set()
-            return cleanup_ran.set
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithAsyncEffect()) as layout:
-        await layout.render()
-
-        component_hook.latest.schedule_render()
-
-        await layout.render()
-
-    await asyncio.wait_for(cleanup_ran.wait(), 1)
-
-
-async def test_use_async_effect_cancel(caplog):
-    component_hook = HookCatcher()
-    effect_ran = asyncio.Event()
-    effect_was_cancelled = asyncio.Event()
-
-    event_that_never_occurs = asyncio.Event()
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithLongWaitingEffect():
-        @reactpy.hooks.use_effect(dependencies=None)  # force this to run every time
-        async def effect():
-            effect_ran.set()
-            try:
-                await event_that_never_occurs.wait()
-            except asyncio.CancelledError:
-                effect_was_cancelled.set()
-                raise
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithLongWaitingEffect()) as layout:
-        await layout.render()
-
-        await effect_ran.wait()
-        component_hook.latest.schedule_render()
-
-        await layout.render()
-
-    await asyncio.wait_for(effect_was_cancelled.wait(), 1)
-
-    # So I know we said the event never occurs but... to ensure the effect's future is
-    # cancelled before the test is cleaned up we need to set the event. This is because
-    # the cancellation doesn't propagate before the test is resolved which causes
-    # delayed log messages that impact other tests.
-    event_that_never_occurs.set()
-
-
-async def test_error_in_effect_is_gracefully_handled(caplog):
-    @reactpy.component
-    def ComponentWithEffect():
-        @reactpy.hooks.use_effect
-        def bad_effect():
-            msg = "Something went wong :("
-            raise ValueError(msg)
-
-        return reactpy.html.div()
-
-    with assert_reactpy_did_log(match_message=r"Layout post-render effect .* failed"):
-        async with reactpy.Layout(ComponentWithEffect()) as layout:
-            await layout.render()  # no error
-
-
-async def test_error_in_effect_pre_unmount_cleanup_is_gracefully_handled():
-    set_key = reactpy.Ref()
-
-    @reactpy.component
-    def OuterComponent():
-        key, set_key.current = reactpy.use_state("first")
-        return ComponentWithEffect(key=key)
-
-    @reactpy.component
-    def ComponentWithEffect():
-        @reactpy.hooks.use_effect
-        def ok_effect():
-            def bad_cleanup():
-                msg = "Something went wong :("
-                raise ValueError(msg)
-
-            return bad_cleanup
-
-        return reactpy.html.div()
-
-    with assert_reactpy_did_log(
-        match_message=r"Pre-unmount effect .*? failed",
-        error_type=ValueError,
-    ):
-        async with reactpy.Layout(OuterComponent()) as layout:
-            await layout.render()
-            set_key.current("second")
-            await layout.render()  # no error
-
-
-async def test_use_reducer():
-    saved_count = reactpy.Ref(None)
-    saved_dispatch = reactpy.Ref(None)
-
-    def reducer(count, action):
-        if action == "increment":
-            return count + 1
-        elif action == "decrement":
-            return count - 1
-        else:
-            msg = f"Unknown action '{action}'"
-            raise ValueError(msg)
-
-    @reactpy.component
-    def Counter(initial_count):
-        saved_count.current, saved_dispatch.current = reactpy.hooks.use_reducer(
-            reducer, initial_count
-        )
-        return reactpy.html.div()
-
-    async with reactpy.Layout(Counter(0)) as layout:
-        await layout.render()
-
-        assert saved_count.current == 0
-
-        saved_dispatch.current("increment")
-        await layout.render()
-
-        assert saved_count.current == 1
-
-        saved_dispatch.current("decrement")
-        await layout.render()
-
-        assert saved_count.current == 0
-
-
-async def test_use_reducer_dispatch_callback_identity_is_preserved():
-    saved_dispatchers = []
-
-    def reducer(count, action):
-        if action == "increment":
-            return count + 1
-        else:
-            msg = f"Unknown action '{action}'"
-            raise ValueError(msg)
-
-    @reactpy.component
-    def ComponentWithUseReduce():
-        saved_dispatchers.append(reactpy.hooks.use_reducer(reducer, 0)[1])
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithUseReduce()) as layout:
-        for _ in range(3):
-            await layout.render()
-            saved_dispatchers[-1]("increment")
-
-    first_dispatch = saved_dispatchers[0]
-    for d in saved_dispatchers[1:]:
-        assert first_dispatch is d
-
-
-async def test_use_callback_identity():
-    component_hook = HookCatcher()
-    used_callbacks = []
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithRef():
-        used_callbacks.append(reactpy.hooks.use_callback(lambda: None))
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithRef()) as layout:
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-    assert used_callbacks[0] is used_callbacks[1]
-    assert len(used_callbacks) == 2
-
-
-async def test_use_callback_memoization():
-    component_hook = HookCatcher()
-    set_state_hook = reactpy.Ref(None)
-    used_callbacks = []
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithRef():
-        state, set_state_hook.current = reactpy.hooks.use_state(0)
-
-        @reactpy.hooks.use_callback(
-            dependencies=[state]
-        )  # use the deco form for coverage
-        def cb():
-            return None
-
-        used_callbacks.append(cb)
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithRef()) as layout:
-        await layout.render()
-        set_state_hook.current(1)
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-    assert used_callbacks[0] is not used_callbacks[1]
-    assert used_callbacks[1] is used_callbacks[2]
-    assert len(used_callbacks) == 3
-
-
-async def test_use_memo():
-    component_hook = HookCatcher()
-    set_state_hook = reactpy.Ref(None)
-    used_values = []
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithMemo():
-        state, set_state_hook.current = reactpy.hooks.use_state(0)
-        value = reactpy.hooks.use_memo(
-            lambda: reactpy.Ref(
-                state
-            ),  # use a Ref here just to ensure it's a unique obj
-            [state],
-        )
-        used_values.append(value)
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithMemo()) as layout:
-        await layout.render()
-        set_state_hook.current(1)
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-    assert used_values[0] is not used_values[1]
-    assert used_values[1] is used_values[2]
-    assert len(used_values) == 3
-
-
-async def test_use_memo_always_runs_if_dependencies_are_none():
-    component_hook = HookCatcher()
-    used_values = []
-
-    iter_values = iter([1, 2, 3])
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithMemo():
-        value = reactpy.hooks.use_memo(lambda: next(iter_values), dependencies=None)
-        used_values.append(value)
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithMemo()) as layout:
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-    assert used_values == [1, 2, 3]
-
-
-async def test_use_memo_with_stored_deps_is_empty_tuple_after_deps_are_none():
-    component_hook = HookCatcher()
-    used_values = []
-
-    iter_values = iter([1, 2, 3])
-    deps_used_in_memo = reactpy.Ref(())
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithMemo():
-        value = reactpy.hooks.use_memo(
-            lambda: next(iter_values),
-            deps_used_in_memo.current,
-        )
-        used_values.append(value)
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithMemo()) as layout:
-        await layout.render()
-        component_hook.latest.schedule_render()
-        deps_used_in_memo.current = None
-        await layout.render()
-        component_hook.latest.schedule_render()
-        deps_used_in_memo.current = ()
-        await layout.render()
-
-    assert used_values == [1, 2, 2]
-
-
-async def test_use_memo_never_runs_if_deps_is_empty_list():
-    component_hook = HookCatcher()
-    used_values = []
-
-    iter_values = iter([1, 2, 3])
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithMemo():
-        value = reactpy.hooks.use_memo(lambda: next(iter_values), ())
-        used_values.append(value)
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithMemo()) as layout:
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-    assert used_values == [1, 1, 1]
-
-
-async def test_use_ref():
-    component_hook = HookCatcher()
-    used_refs = []
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithRef():
-        used_refs.append(reactpy.hooks.use_ref(1))
-        return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentWithRef()) as layout:
-        await layout.render()
-        component_hook.latest.schedule_render()
-        await layout.render()
-
-    assert used_refs[0] is used_refs[1]
-    assert len(used_refs) == 2
-
-
-def test_bad_schedule_render_callback():
-    def bad_callback():
-        msg = "something went wrong"
-        raise ValueError(msg)
-
-    with assert_reactpy_did_log(
-        match_message=f"Failed to schedule render via {bad_callback}"
-    ):
-        LifeCycleHook(bad_callback).schedule_render()
-
-
-async def test_use_effect_automatically_infers_closure_values():
-    set_count = reactpy.Ref()
-    did_effect = asyncio.Event()
-
-    @reactpy.component
-    def CounterWithEffect():
-        count, set_count.current = reactpy.hooks.use_state(0)
-
-        @reactpy.hooks.use_effect
-        def some_effect_that_uses_count():
-            """should automatically trigger on count change"""
-            _ = count  # use count in this closure
-            did_effect.set()
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(CounterWithEffect()) as layout:
-        await layout.render()
-        await did_effect.wait()
-        did_effect.clear()
-
-        for i in range(1, 3):
-            set_count.current(i)
-            await layout.render()
-            await did_effect.wait()
-            did_effect.clear()
-
-
-async def test_use_memo_automatically_infers_closure_values():
-    set_count = reactpy.Ref()
-    did_memo = asyncio.Event()
-
-    @reactpy.component
-    def CounterWithEffect():
-        count, set_count.current = reactpy.hooks.use_state(0)
-
-        @reactpy.hooks.use_memo
-        def some_memo_func_that_uses_count():
-            """should automatically trigger on count change"""
-            _ = count  # use count in this closure
-            did_memo.set()
-
-        return reactpy.html.div()
-
-    async with reactpy.Layout(CounterWithEffect()) as layout:
-        await layout.render()
-        await did_memo.wait()
-        did_memo.clear()
-
-        for i in range(1, 3):
-            set_count.current(i)
-            await layout.render()
-            await did_memo.wait()
-            did_memo.clear()
-
-
-async def test_use_context_default_value():
-    Context = reactpy.create_context("something")
-    value = reactpy.Ref()
-
-    @reactpy.component
-    def ComponentProvidesContext():
-        return Context(ComponentUsesContext())
-
-    @reactpy.component
-    def ComponentUsesContext():
-        value.current = reactpy.use_context(Context)
-        return html.div()
-
-    async with reactpy.Layout(ComponentProvidesContext()) as layout:
-        await layout.render()
-        assert value.current == "something"
-
-    @reactpy.component
-    def ComponentUsesContext2():
-        value.current = reactpy.use_context(Context)
-        return html.div()
-
-    async with reactpy.Layout(ComponentUsesContext2()) as layout:
-        await layout.render()
-        assert value.current == "something"
-
-
-def test_context_repr():
-    sample_context = reactpy.create_context(None)
-    assert repr(sample_context()) == f"ContextProvider({sample_context})"
-
-
-async def test_use_context_updates_components_even_if_memoized():
-    Context = reactpy.create_context(None)
-
-    value = reactpy.Ref(None)
-    render_count = reactpy.Ref(0)
-    set_state = reactpy.Ref()
-
-    @reactpy.component
-    def ComponentProvidesContext():
-        state, set_state.current = reactpy.use_state(0)
-        return Context(ComponentInContext(), value=state)
-
-    @reactpy.component
-    def ComponentInContext():
-        return reactpy.use_memo(MemoizedComponentUsesContext)
-
-    @reactpy.component
-    def MemoizedComponentUsesContext():
-        value.current = reactpy.use_context(Context)
-        render_count.current += 1
-        return html.div()
-
-    async with reactpy.Layout(ComponentProvidesContext()) as layout:
-        await layout.render()
-        assert render_count.current == 1
-        assert value.current == 0
-
-        set_state.current(1)
-
-        await layout.render()
-        assert render_count.current == 2
-        assert value.current == 1
-
-        set_state.current(2)
-
-        await layout.render()
-        assert render_count.current == 3
-        assert value.current == 2
-
-
-async def test_context_values_are_scoped():
-    Context = reactpy.create_context(None)
-
-    @reactpy.component
-    def Parent():
-        return html._(
-            Context(Context(Child1(), value=1), value="something-else"),
-            Context(Child2(), value=2),
-        )
-
-    @reactpy.component
-    def Child1():
-        assert reactpy.use_context(Context) == 1
-
-    @reactpy.component
-    def Child2():
-        assert reactpy.use_context(Context) == 2
-
-    async with Layout(Parent()) as layout:
-        await layout.render()
-
-
-async def test_error_in_layout_effect_cleanup_is_gracefully_handled():
-    component_hook = HookCatcher()
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithEffect():
-        @reactpy.hooks.use_effect(dependencies=None)  # always run
-        def bad_effect():
-            msg = "The error message"
-            raise ValueError(msg)
-
-        return reactpy.html.div()
-
-    with assert_reactpy_did_log(
-        match_message=r"post-render effect .*? failed",
-        error_type=ValueError,
-        match_error="The error message",
-    ):
-        async with reactpy.Layout(ComponentWithEffect()) as layout:
-            await layout.render()
-            component_hook.latest.schedule_render()
-            await layout.render()  # no error
-
-
-async def test_set_state_during_render():
-    render_count = Ref(0)
-
-    @reactpy.component
-    def SetStateDuringRender():
-        render_count.current += 1
-        state, set_state = reactpy.use_state(0)
-        if not state:
-            set_state(state + 1)
-        return html.div(state)
-
-    async with Layout(SetStateDuringRender()) as layout:
-        await layout.render()
-        assert render_count.current == 1
-        await layout.render()
-        assert render_count.current == 2
-
-        # there should be no more renders to perform
-        with pytest.raises(asyncio.TimeoutError):
-            await asyncio.wait_for(layout.render(), timeout=0.1)
-
-
-@pytest.mark.skipif(not REACTPY_DEBUG_MODE.current, reason="only logs in debug mode")
-async def test_use_debug_mode():
-    set_message = reactpy.Ref()
-    component_hook = HookCatcher()
-
-    @reactpy.component
-    @component_hook.capture
-    def SomeComponent():
-        message, set_message.current = reactpy.use_state("hello")
-        reactpy.use_debug_value(f"message is {message!r}")
-        return reactpy.html.div()
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        with assert_reactpy_did_log(r"SomeComponent\(.*?\) message is 'hello'"):
-            await layout.render()
-
-        set_message.current("bye")
-
-        with assert_reactpy_did_log(r"SomeComponent\(.*?\) message is 'bye'"):
-            await layout.render()
-
-        component_hook.latest.schedule_render()
-
-        with assert_reactpy_did_not_log(r"SomeComponent\(.*?\) message is 'bye'"):
-            await layout.render()
-
-
-@pytest.mark.skipif(not REACTPY_DEBUG_MODE.current, reason="only logs in debug mode")
-async def test_use_debug_mode_with_factory():
-    set_message = reactpy.Ref()
-    component_hook = HookCatcher()
-
-    @reactpy.component
-    @component_hook.capture
-    def SomeComponent():
-        message, set_message.current = reactpy.use_state("hello")
-        reactpy.use_debug_value(lambda: f"message is {message!r}")
-        return reactpy.html.div()
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        with assert_reactpy_did_log(r"SomeComponent\(.*?\) message is 'hello'"):
-            await layout.render()
-
-        set_message.current("bye")
-
-        with assert_reactpy_did_log(r"SomeComponent\(.*?\) message is 'bye'"):
-            await layout.render()
-
-        component_hook.latest.schedule_render()
-
-        with assert_reactpy_did_not_log(r"SomeComponent\(.*?\) message is 'bye'"):
-            await layout.render()
-
-
-@pytest.mark.skipif(REACTPY_DEBUG_MODE.current, reason="logs in debug mode")
-async def test_use_debug_mode_does_not_log_if_not_in_debug_mode():
-    set_message = reactpy.Ref()
-
-    @reactpy.component
-    def SomeComponent():
-        message, set_message.current = reactpy.use_state("hello")
-        reactpy.use_debug_value(lambda: f"message is {message!r}")
-        return reactpy.html.div()
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        with assert_reactpy_did_not_log(r"SomeComponent\(.*?\) message is 'hello'"):
-            await layout.render()
-
-        set_message.current("bye")
-
-        with assert_reactpy_did_not_log(r"SomeComponent\(.*?\) message is 'bye'"):
-            await layout.render()
-
-
-async def test_conditionally_rendered_components_can_use_context():
-    set_state = reactpy.Ref()
-    used_context_values = []
-    some_context = reactpy.create_context(None)
-
-    @reactpy.component
-    def SomeComponent():
-        state, set_state.current = reactpy.use_state(True)
-        if state:
-            return FirstCondition()
-        else:
-            return SecondCondition()
-
-    @reactpy.component
-    def FirstCondition():
-        used_context_values.append(reactpy.use_context(some_context) + "-1")
-
-    @reactpy.component
-    def SecondCondition():
-        used_context_values.append(reactpy.use_context(some_context) + "-2")
-
-    async with reactpy.Layout(
-        some_context(SomeComponent(), value="the-value")
-    ) as layout:
-        await layout.render()
-        assert used_context_values == ["the-value-1"]
-        set_state.current(False)
-        await layout.render()
-        assert used_context_values == ["the-value-1", "the-value-2"]
-
-
-@pytest.mark.parametrize(
-    "x, y, result",
-    [
-        ("text", "text", True),
-        ("text", "not-text", False),
-        (b"text", b"text", True),
-        (b"text", b"not-text", False),
-        (bytearray([1, 2, 3]), bytearray([1, 2, 3]), True),
-        (bytearray([1, 2, 3]), bytearray([1, 2, 3, 4]), False),
-        (1.0, 1.0, True),
-        (1.0, 2.0, False),
-        (1j, 1j, True),
-        (1j, 2j, False),
-        # ints less than 5 and greater than 256 are always identical
-        (-100000, -100000, True),
-        (100000, 100000, True),
-        (123, 456, False),
-    ],
-)
-def test_strictly_equal(x, y, result):
-    assert strictly_equal(x, y) is result
-
-
-STRICT_EQUALITY_VALUE_CONSTRUCTORS = [
-    lambda: "string-text",
-    lambda: b"byte-text",
-    lambda: bytearray([1, 2, 3]),
-    lambda: bytearray([1, 2, 3]),
-    lambda: 1.0,
-    lambda: 10000000,
-    lambda: 1j,
-]
-
-
-@pytest.mark.parametrize("get_value", STRICT_EQUALITY_VALUE_CONSTRUCTORS)
-async def test_use_state_compares_with_strict_equality(get_value):
-    render_count = reactpy.Ref(0)
-    set_state = reactpy.Ref()
-
-    @reactpy.component
-    def SomeComponent():
-        _, set_state.current = reactpy.use_state(get_value())
-        render_count.current += 1
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        await layout.render()
-        assert render_count.current == 1
-        set_state.current(get_value())
-        with pytest.raises(asyncio.TimeoutError):
-            await asyncio.wait_for(layout.render(), timeout=0.1)
-
-
-@pytest.mark.parametrize("get_value", STRICT_EQUALITY_VALUE_CONSTRUCTORS)
-async def test_use_effect_compares_with_strict_equality(get_value):
-    effect_count = reactpy.Ref(0)
-    value = reactpy.Ref("string")
-    hook = HookCatcher()
-
-    @reactpy.component
-    @hook.capture
-    def SomeComponent():
-        @reactpy.use_effect(dependencies=[value.current])
-        def incr_effect_count():
-            effect_count.current += 1
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        await layout.render()
-        assert effect_count.current == 1
-        value.current = "string"  # new string instance but same value
-        hook.latest.schedule_render()
-        await layout.render()
-        # effect does not trigger
-        assert effect_count.current == 1
-
-
-async def test_use_state_named_tuple():
-    state = reactpy.Ref()
-
-    @reactpy.component
-    def some_component():
-        state.current = reactpy.use_state(1)
-
-    async with reactpy.Layout(some_component()) as layout:
-        await layout.render()
-        assert state.current.value == 1
-        state.current.set_value(2)
-        await layout.render()
-        assert state.current.value == 2
-
-
-async def test_error_in_component_effect_cleanup_is_gracefully_handled():
-    component_hook = HookCatcher()
-
-    @reactpy.component
-    @component_hook.capture
-    def ComponentWithEffect():
-        hook = current_hook()
-
-        def bad_effect():
-            raise ValueError("The error message")
-
-        hook.add_effect(COMPONENT_DID_RENDER_EFFECT, bad_effect)
-        return reactpy.html.div()
-
-    with assert_reactpy_did_log(
-        match_message="Component post-render effect .*? failed",
-        error_type=ValueError,
-        match_error="The error message",
-    ):
-        async with reactpy.Layout(ComponentWithEffect()) as layout:
-            await layout.render()
-            component_hook.latest.schedule_render()
-            await layout.render()  # no error
diff --git a/src/py/reactpy/tests/test_core/test_layout.py b/src/py/reactpy/tests/test_core/test_layout.py
deleted file mode 100644
index d2e1a8099..000000000
--- a/src/py/reactpy/tests/test_core/test_layout.py
+++ /dev/null
@@ -1,1192 +0,0 @@
-import asyncio
-import gc
-import random
-import re
-from weakref import finalize
-from weakref import ref as weakref
-
-import pytest
-
-import reactpy
-from reactpy import html
-from reactpy.config import REACTPY_DEBUG_MODE
-from reactpy.core.component import component
-from reactpy.core.hooks import use_effect, use_state
-from reactpy.core.layout import Layout
-from reactpy.testing import (
-    HookCatcher,
-    StaticEventHandler,
-    assert_reactpy_did_log,
-    capture_reactpy_logs,
-)
-from reactpy.utils import Ref
-from tests.tooling.common import event_message, update_message
-from tests.tooling.hooks import use_force_render, use_toggle
-
-
-@pytest.fixture(autouse=True)
-def no_logged_errors():
-    with capture_reactpy_logs() as logs:
-        yield
-        for record in logs:
-            if record.exc_info:
-                raise record.exc_info[1]
-
-
-def test_layout_repr():
-    @reactpy.component
-    def MyComponent():
-        ...
-
-    my_component = MyComponent()
-    layout = reactpy.Layout(my_component)
-    assert str(layout) == f"Layout(MyComponent({id(my_component):02x}))"
-
-
-def test_layout_expects_abstract_component():
-    with pytest.raises(TypeError, match="Expected a ComponentType"):
-        reactpy.Layout(None)
-    with pytest.raises(TypeError, match="Expected a ComponentType"):
-        reactpy.Layout(reactpy.html.div())
-
-
-async def test_layout_cannot_be_used_outside_context_manager(caplog):
-    @reactpy.component
-    def Component():
-        ...
-
-    component = Component()
-    layout = reactpy.Layout(component)
-
-    with pytest.raises(AttributeError):
-        await layout.deliver(event_message("something"))
-
-    with pytest.raises(AttributeError):
-        await layout.render()
-
-
-async def test_simple_layout():
-    set_state_hook = reactpy.Ref()
-
-    @reactpy.component
-    def SimpleComponent():
-        tag, set_state_hook.current = reactpy.hooks.use_state("div")
-        return reactpy.vdom(tag)
-
-    async with reactpy.Layout(SimpleComponent()) as layout:
-        update_1 = await layout.render()
-        assert update_1 == update_message(
-            path="",
-            model={"tagName": "", "children": [{"tagName": "div"}]},
-        )
-
-        set_state_hook.current("table")
-
-        update_2 = await layout.render()
-        assert update_2 == update_message(
-            path="",
-            model={"tagName": "", "children": [{"tagName": "table"}]},
-        )
-
-
-async def test_component_can_return_none():
-    @reactpy.component
-    def SomeComponent():
-        return None
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        assert (await layout.render())["model"] == {"tagName": ""}
-
-
-async def test_nested_component_layout():
-    parent_set_state = reactpy.Ref(None)
-    child_set_state = reactpy.Ref(None)
-
-    @reactpy.component
-    def Parent():
-        state, parent_set_state.current = reactpy.hooks.use_state(0)
-        return reactpy.html.div(state, Child())
-
-    @reactpy.component
-    def Child():
-        state, child_set_state.current = reactpy.hooks.use_state(0)
-        return reactpy.html.div(state)
-
-    def make_parent_model(state, model):
-        return {
-            "tagName": "",
-            "children": [
-                {
-                    "tagName": "div",
-                    "children": [str(state), model],
-                }
-            ],
-        }
-
-    def make_child_model(state):
-        return {
-            "tagName": "",
-            "children": [{"tagName": "div", "children": [str(state)]}],
-        }
-
-    async with reactpy.Layout(Parent()) as layout:
-        update_1 = await layout.render()
-        assert update_1 == update_message(
-            path="",
-            model=make_parent_model(0, make_child_model(0)),
-        )
-
-        parent_set_state.current(1)
-
-        update_2 = await layout.render()
-        assert update_2 == update_message(
-            path="",
-            model=make_parent_model(1, make_child_model(0)),
-        )
-
-        child_set_state.current(1)
-
-        update_3 = await layout.render()
-        assert update_3 == update_message(
-            path="/children/0/children/1",
-            model=make_child_model(1),
-        )
-
-
-@pytest.mark.skipif(
-    not REACTPY_DEBUG_MODE.current,
-    reason="errors only reported in debug mode",
-)
-async def test_layout_render_error_has_partial_update_with_error_message():
-    @reactpy.component
-    def Main():
-        return reactpy.html.div([OkChild(), BadChild(), OkChild()])
-
-    @reactpy.component
-    def OkChild():
-        return reactpy.html.div(["hello"])
-
-    @reactpy.component
-    def BadChild():
-        msg = "error from bad child"
-        raise ValueError(msg)
-
-    with assert_reactpy_did_log(match_error="error from bad child"):
-        async with reactpy.Layout(Main()) as layout:
-            assert (await layout.render()) == update_message(
-                path="",
-                model={
-                    "tagName": "",
-                    "children": [
-                        {
-                            "tagName": "div",
-                            "children": [
-                                {
-                                    "tagName": "",
-                                    "children": [
-                                        {"tagName": "div", "children": ["hello"]}
-                                    ],
-                                },
-                                {
-                                    "tagName": "",
-                                    "error": "ValueError: error from bad child",
-                                },
-                                {
-                                    "tagName": "",
-                                    "children": [
-                                        {"tagName": "div", "children": ["hello"]}
-                                    ],
-                                },
-                            ],
-                        }
-                    ],
-                },
-            )
-
-
-@pytest.mark.skipif(
-    REACTPY_DEBUG_MODE.current,
-    reason="errors only reported in debug mode",
-)
-async def test_layout_render_error_has_partial_update_without_error_message():
-    @reactpy.component
-    def Main():
-        return reactpy.html.div([OkChild(), BadChild(), OkChild()])
-
-    @reactpy.component
-    def OkChild():
-        return reactpy.html.div(["hello"])
-
-    @reactpy.component
-    def BadChild():
-        msg = "error from bad child"
-        raise ValueError(msg)
-
-    with assert_reactpy_did_log(match_error="error from bad child"):
-        async with reactpy.Layout(Main()) as layout:
-            assert (await layout.render()) == update_message(
-                path="",
-                model={
-                    "tagName": "",
-                    "children": [
-                        {
-                            "children": [
-                                {
-                                    "children": [
-                                        {"children": ["hello"], "tagName": "div"}
-                                    ],
-                                    "tagName": "",
-                                },
-                                {"error": "", "tagName": ""},
-                                {
-                                    "children": [
-                                        {"children": ["hello"], "tagName": "div"}
-                                    ],
-                                    "tagName": "",
-                                },
-                            ],
-                            "tagName": "div",
-                        }
-                    ],
-                },
-            )
-
-
-async def test_render_raw_vdom_dict_with_single_component_object_as_children():
-    @reactpy.component
-    def Main():
-        return {"tagName": "div", "children": Child()}
-
-    @reactpy.component
-    def Child():
-        return {"tagName": "div", "children": {"tagName": "h1"}}
-
-    async with reactpy.Layout(Main()) as layout:
-        assert (await layout.render()) == update_message(
-            path="",
-            model={
-                "tagName": "",
-                "children": [
-                    {
-                        "children": [
-                            {
-                                "children": [
-                                    {
-                                        "children": [{"tagName": "h1"}],
-                                        "tagName": "div",
-                                    }
-                                ],
-                                "tagName": "",
-                            }
-                        ],
-                        "tagName": "div",
-                    }
-                ],
-            },
-        )
-
-
-async def test_components_are_garbage_collected():
-    live_components = set()
-    outer_component_hook = HookCatcher()
-
-    def add_to_live_components(constructor):
-        def wrapper(*args, **kwargs):
-            component = constructor(*args, **kwargs)
-            component_id = id(component)
-            live_components.add(component_id)
-            finalize(component, live_components.discard, component_id)
-            return component
-
-        return wrapper
-
-    @add_to_live_components
-    @reactpy.component
-    @outer_component_hook.capture
-    def Outer():
-        return Inner()
-
-    @add_to_live_components
-    @reactpy.component
-    def Inner():
-        return reactpy.html.div()
-
-    async with reactpy.Layout(Outer()) as layout:
-        await layout.render()
-
-        assert len(live_components) == 2
-
-        last_live_components = live_components.copy()
-        # The existing `Outer` component rerenders. A new `Inner` component is created and
-        # the the old `Inner` component should be deleted. Thus there should be one
-        # changed component in the set of `live_components` the old `Inner` deleted and new
-        # `Inner` added.
-        outer_component_hook.latest.schedule_render()
-        await layout.render()
-
-        assert len(live_components - last_live_components) == 1
-
-    # The layout still holds a reference to the root so that's
-    # only deleted once we release our reference to the layout.
-    del layout
-    # the hook also contains a reference to the root component
-    del outer_component_hook
-
-    assert not live_components
-
-
-async def test_root_component_life_cycle_hook_is_garbage_collected():
-    live_hooks = set()
-
-    def add_to_live_hooks(constructor):
-        def wrapper(*args, **kwargs):
-            result = constructor(*args, **kwargs)
-            hook = reactpy.hooks.current_hook()
-            hook_id = id(hook)
-            live_hooks.add(hook_id)
-            finalize(hook, live_hooks.discard, hook_id)
-            return result
-
-        return wrapper
-
-    @reactpy.component
-    @add_to_live_hooks
-    def Root():
-        return reactpy.html.div()
-
-    async with reactpy.Layout(Root()) as layout:
-        await layout.render()
-
-        assert len(live_hooks) == 1
-
-    # The layout still holds a reference to the root so that's only deleted once we
-    # release our reference to the layout.
-    del layout
-
-    assert not live_hooks
-
-
-async def test_life_cycle_hooks_are_garbage_collected():
-    live_hooks = set()
-    set_inner_component = None
-
-    def add_to_live_hooks(constructor):
-        def wrapper(*args, **kwargs):
-            result = constructor(*args, **kwargs)
-            hook = reactpy.hooks.current_hook()
-            hook_id = id(hook)
-            live_hooks.add(hook_id)
-            finalize(hook, live_hooks.discard, hook_id)
-            return result
-
-        return wrapper
-
-    @reactpy.component
-    @add_to_live_hooks
-    def Outer():
-        nonlocal set_inner_component
-        inner_component, set_inner_component = reactpy.hooks.use_state(
-            Inner(key="first")
-        )
-        return inner_component
-
-    @reactpy.component
-    @add_to_live_hooks
-    def Inner():
-        return reactpy.html.div()
-
-    async with reactpy.Layout(Outer()) as layout:
-        await layout.render()
-
-        assert len(live_hooks) == 2
-        last_live_hooks = live_hooks.copy()
-
-        # We expect the hook for `InnerOne` to be garbage collected since the component
-        # will get replaced.
-        set_inner_component(Inner(key="second"))
-        await layout.render()
-        assert len(live_hooks - last_live_hooks) == 1
-
-    # The layout still holds a reference to the root so that's only deleted once we
-    # release our reference to the layout.
-    del layout
-    del set_inner_component
-
-    # For some reason, holding `set_inner_component` outside the render context causes
-    # the associated hook to not be automatically garbage collected. After some
-    # empirical investigation, it seems that if we do not hold `set_inner_component` in
-    # this way, the call to `gc.collect()` isn't required. This is demonstrated in
-    # `test_root_component_life_cycle_hook_is_garbage_collected`
-    gc.collect()
-
-    assert not live_hooks
-
-
-async def test_double_updated_component_is_not_double_rendered():
-    hook = HookCatcher()
-    run_count = reactpy.Ref(0)
-
-    @reactpy.component
-    @hook.capture
-    def AnyComponent():
-        run_count.current += 1
-        return reactpy.html.div()
-
-    async with reactpy.Layout(AnyComponent()) as layout:
-        await layout.render()
-
-        assert run_count.current == 1
-
-        hook.latest.schedule_render()
-        hook.latest.schedule_render()
-
-        await layout.render()
-        try:
-            await asyncio.wait_for(
-                layout.render(),
-                timeout=0.1,  # this should have been plenty of time
-            )
-        except asyncio.TimeoutError:
-            pass  # the render should still be rendering since we only update once
-
-        assert run_count.current == 2
-
-
-async def test_update_path_to_component_that_is_not_direct_child_is_correct():
-    hook = HookCatcher()
-
-    @reactpy.component
-    def Parent():
-        return reactpy.html.div(reactpy.html.div(Child()))
-
-    @reactpy.component
-    @hook.capture
-    def Child():
-        return reactpy.html.div()
-
-    async with reactpy.Layout(Parent()) as layout:
-        await layout.render()
-
-        hook.latest.schedule_render()
-
-        update = await layout.render()
-        assert update["path"] == "/children/0/children/0/children/0"
-
-
-async def test_log_on_dispatch_to_missing_event_handler(caplog):
-    @reactpy.component
-    def SomeComponent():
-        return reactpy.html.div()
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        await layout.deliver(event_message("missing"))
-
-    assert re.match(
-        "Ignored event - handler 'missing' does not exist or its component unmounted",
-        next(iter(caplog.records)).msg,
-    )
-
-
-async def test_model_key_preserves_callback_identity_for_common_elements(caplog):
-    called_good_trigger = reactpy.Ref(False)
-    good_handler = StaticEventHandler()
-    bad_handler = StaticEventHandler()
-
-    @reactpy.component
-    def MyComponent():
-        reverse_children, set_reverse_children = use_toggle()
-
-        @good_handler.use
-        def good_trigger():
-            called_good_trigger.current = True
-            set_reverse_children()
-
-        @bad_handler.use
-        def bad_trigger():
-            msg = "Called bad trigger"
-            raise ValueError(msg)
-
-        children = [
-            reactpy.html.button(
-                {"on_click": good_trigger, "id": "good", "key": "good"}, "good"
-            ),
-            reactpy.html.button(
-                {"on_click": bad_trigger, "id": "bad", "key": "bad"}, "bad"
-            ),
-        ]
-
-        if reverse_children:
-            children.reverse()
-
-        return reactpy.html.div(children)
-
-    async with reactpy.Layout(MyComponent()) as layout:
-        await layout.render()
-        for _i in range(3):
-            event = event_message(good_handler.target)
-            await layout.deliver(event)
-
-            assert called_good_trigger.current
-            # reset after checking
-            called_good_trigger.current = False
-
-            await layout.render()
-
-    assert not caplog.records
-
-
-async def test_model_key_preserves_callback_identity_for_components():
-    called_good_trigger = reactpy.Ref(False)
-    good_handler = StaticEventHandler()
-    bad_handler = StaticEventHandler()
-
-    @reactpy.component
-    def RootComponent():
-        reverse_children, set_reverse_children = use_toggle()
-
-        children = [
-            Trigger(set_reverse_children, name=name, key=name)
-            for name in ["good", "bad"]
-        ]
-
-        if reverse_children:
-            children.reverse()
-
-        return reactpy.html.div(children)
-
-    @reactpy.component
-    def Trigger(set_reverse_children, name):
-        if name == "good":
-
-            @good_handler.use
-            def callback():
-                called_good_trigger.current = True
-                set_reverse_children()
-
-        else:
-
-            @bad_handler.use
-            def callback():
-                msg = "Called bad trigger"
-                raise ValueError(msg)
-
-        return reactpy.html.button({"on_click": callback, "id": "good"}, "good")
-
-    async with reactpy.Layout(RootComponent()) as layout:
-        await layout.render()
-        for _ in range(3):
-            event = event_message(good_handler.target)
-            await layout.deliver(event)
-
-            assert called_good_trigger.current
-            # reset after checking
-            called_good_trigger.current = False
-
-            await layout.render()
-
-
-async def test_component_can_return_another_component_directly():
-    @reactpy.component
-    def Outer():
-        return Inner()
-
-    @reactpy.component
-    def Inner():
-        return reactpy.html.div("hello")
-
-    async with reactpy.Layout(Outer()) as layout:
-        assert (await layout.render()) == update_message(
-            path="",
-            model={
-                "tagName": "",
-                "children": [
-                    {
-                        "children": [{"children": ["hello"], "tagName": "div"}],
-                        "tagName": "",
-                    }
-                ],
-            },
-        )
-
-
-async def test_hooks_for_keyed_components_get_garbage_collected():
-    pop_item = reactpy.Ref(None)
-    garbage_collect_items = []
-    registered_finalizers = set()
-
-    @reactpy.component
-    def Outer():
-        items, set_items = reactpy.hooks.use_state([1, 2, 3])
-        pop_item.current = lambda: set_items(items[:-1])
-        return reactpy.html.div(Inner(key=k, finalizer_id=k) for k in items)
-
-    @reactpy.component
-    def Inner(finalizer_id):
-        if finalizer_id not in registered_finalizers:
-            hook = reactpy.hooks.current_hook()
-            finalize(hook, lambda: garbage_collect_items.append(finalizer_id))
-            registered_finalizers.add(finalizer_id)
-        return reactpy.html.div(finalizer_id)
-
-    async with reactpy.Layout(Outer()) as layout:
-        await layout.render()
-
-        pop_item.current()
-        await layout.render()
-        assert garbage_collect_items == [3]
-
-        pop_item.current()
-        await layout.render()
-        assert garbage_collect_items == [3, 2]
-
-        pop_item.current()
-        await layout.render()
-        assert garbage_collect_items == [3, 2, 1]
-
-
-async def test_event_handler_at_component_root_is_garbage_collected():
-    event_handler = reactpy.Ref()
-
-    @reactpy.component
-    def HasEventHandlerAtRoot():
-        value, set_value = reactpy.hooks.use_state(False)
-        set_value(not value)  # trigger renders forever
-        event_handler.current = weakref(set_value)
-        button = reactpy.html.button({"on_click": set_value}, "state is: ", value)
-        event_handler.current = weakref(button["eventHandlers"]["on_click"].function)
-        return button
-
-    async with reactpy.Layout(HasEventHandlerAtRoot()) as layout:
-        await layout.render()
-
-        for _i in range(3):
-            last_event_handler = event_handler.current
-            # after this render we should have release the reference to the last handler
-            await layout.render()
-            assert last_event_handler() is None
-
-
-async def test_event_handler_deep_in_component_layout_is_garbage_collected():
-    event_handler = reactpy.Ref()
-
-    @reactpy.component
-    def HasNestedEventHandler():
-        value, set_value = reactpy.hooks.use_state(False)
-        set_value(not value)  # trigger renders forever
-        event_handler.current = weakref(set_value)
-        button = reactpy.html.button({"on_click": set_value}, "state is: ", value)
-        event_handler.current = weakref(button["eventHandlers"]["on_click"].function)
-        return reactpy.html.div(reactpy.html.div(button))
-
-    async with reactpy.Layout(HasNestedEventHandler()) as layout:
-        await layout.render()
-
-        for _i in range(3):
-            last_event_handler = event_handler.current
-            # after this render we should have release the reference to the last handler
-            await layout.render()
-            assert last_event_handler() is None
-
-
-async def test_duplicate_sibling_keys_causes_error(caplog):
-    hook = HookCatcher()
-    should_error = True
-
-    @reactpy.component
-    @hook.capture
-    def ComponentReturnsDuplicateKeys():
-        if should_error:
-            return reactpy.html.div(
-                reactpy.html.div({"key": "duplicate"}),
-                reactpy.html.div({"key": "duplicate"}),
-            )
-        else:
-            return reactpy.html.div()
-
-    async with reactpy.Layout(ComponentReturnsDuplicateKeys()) as layout:
-        with assert_reactpy_did_log(
-            error_type=ValueError,
-            match_error=r"Duplicate keys \['duplicate'\] at '/children/0'",
-        ):
-            await layout.render()
-
-        hook.latest.schedule_render()
-
-        should_error = False
-        await layout.render()
-
-        should_error = True
-        hook.latest.schedule_render()
-        with assert_reactpy_did_log(
-            error_type=ValueError,
-            match_error=r"Duplicate keys \['duplicate'\] at '/children/0'",
-        ):
-            await layout.render()
-
-
-async def test_keyed_components_preserve_hook_on_parent_update():
-    outer_hook = HookCatcher()
-    inner_hook = HookCatcher()
-
-    @reactpy.component
-    @outer_hook.capture
-    def Outer():
-        return Inner(key=1)
-
-    @reactpy.component
-    @inner_hook.capture
-    def Inner():
-        return reactpy.html.div()
-
-    async with reactpy.Layout(Outer()) as layout:
-        await layout.render()
-        old_inner_hook = inner_hook.latest
-
-        outer_hook.latest.schedule_render()
-        await layout.render()
-        assert old_inner_hook is inner_hook.latest
-
-
-async def test_log_error_on_bad_event_handler():
-    bad_handler = StaticEventHandler()
-
-    @reactpy.component
-    def ComponentWithBadEventHandler():
-        @bad_handler.use
-        def raise_error():
-            msg = "bad event handler"
-            raise Exception(msg)
-
-        return reactpy.html.button({"on_click": raise_error})
-
-    with assert_reactpy_did_log(match_error="bad event handler"):
-        async with reactpy.Layout(ComponentWithBadEventHandler()) as layout:
-            await layout.render()
-            event = event_message(bad_handler.target)
-            await layout.deliver(event)
-
-
-async def test_schedule_render_from_unmounted_hook():
-    parent_set_state = reactpy.Ref()
-
-    @reactpy.component
-    def Parent():
-        state, parent_set_state.current = reactpy.hooks.use_state(1)
-        return Child(key=state, state=state)
-
-    child_hook = HookCatcher()
-
-    @reactpy.component
-    @child_hook.capture
-    def Child(state):
-        return reactpy.html.div(state)
-
-    with assert_reactpy_did_log(
-        r"Did not render component with model state ID .*? - component already unmounted",
-    ):
-        async with reactpy.Layout(Parent()) as layout:
-            await layout.render()
-
-            old_hook = child_hook.latest
-
-            # cause initial child to be unmounted
-            parent_set_state.current(2)
-            await layout.render()
-
-            # trigger render for hook that's been unmounted
-            old_hook.schedule_render()
-
-            # schedule one more render just to make it so `layout.render()` doesn't hang
-            # when the scheduled render above gets skipped
-            parent_set_state.current(3)
-
-            await layout.render()
-
-
-async def test_elements_and_components_with_the_same_key_can_be_interchanged():
-    set_toggle = reactpy.Ref()
-    effects = []
-
-    @reactpy.component
-    def Root():
-        toggle, set_toggle.current = use_toggle(True)
-        if toggle:
-            return SomeComponent("x")
-        else:
-            return reactpy.html.div(SomeComponent("y"))
-
-    @reactpy.component
-    def SomeComponent(name):
-        @use_effect
-        def some_effect():
-            effects.append("mount " + name)
-            return lambda: effects.append("unmount " + name)
-
-        return reactpy.html.div(name)
-
-    async with reactpy.Layout(Root()) as layout:
-        await layout.render()
-
-        assert effects == ["mount x"]
-
-        set_toggle.current()
-        await layout.render()
-
-        assert effects == ["mount x", "unmount x", "mount y"]
-
-        set_toggle.current()
-        await layout.render()
-
-        assert effects == ["mount x", "unmount x", "mount y", "unmount y", "mount x"]
-
-
-async def test_layout_does_not_copy_element_children_by_key():
-    # this is a regression test for a subtle bug:
-    # https://github.com/reactive-python/reactpy/issues/556
-
-    set_items = reactpy.Ref()
-
-    @reactpy.component
-    def SomeComponent():
-        items, set_items.current = reactpy.use_state([1, 2, 3])
-        return reactpy.html.div(
-            [
-                reactpy.html.div(
-                    {"key": i},
-                    reactpy.html.input({"on_change": lambda event: None}),
-                )
-                for i in items
-            ]
-        )
-
-    async with reactpy.Layout(SomeComponent()) as layout:
-        await layout.render()
-
-        set_items.current([2, 3])
-
-        await layout.render()
-
-        set_items.current([3])
-
-        await layout.render()
-
-        set_items.current([])
-
-        await layout.render()
-
-
-async def test_changing_key_of_parent_element_unmounts_children():
-    random.seed(0)
-
-    root_hook = HookCatcher()
-    state = reactpy.Ref(None)
-
-    @reactpy.component
-    @root_hook.capture
-    def Root():
-        return reactpy.html.div({"key": str(random.random())}, HasState())
-
-    @reactpy.component
-    def HasState():
-        state.current = reactpy.hooks.use_state(random.random)[0]
-        return reactpy.html.div()
-
-    async with reactpy.Layout(Root()) as layout:
-        await layout.render()
-
-        for _i in range(5):
-            last_state = state.current
-            root_hook.latest.schedule_render()
-            await layout.render()
-            assert last_state != state.current
-
-
-async def test_switching_node_type_with_event_handlers():
-    toggle_type = reactpy.Ref()
-    element_static_handler = StaticEventHandler()
-    component_static_handler = StaticEventHandler()
-
-    @reactpy.component
-    def Root():
-        toggle, toggle_type.current = use_toggle(True)
-        handler = element_static_handler.use(lambda: None)
-        if toggle:
-            return html.div(html.button({"on_event": handler}))
-        else:
-            return html.div(SomeComponent())
-
-    @reactpy.component
-    def SomeComponent():
-        handler = component_static_handler.use(lambda: None)
-        return html.button({"on_another_event": handler})
-
-    async with reactpy.Layout(Root()) as layout:
-        await layout.render()
-
-        assert element_static_handler.target in layout._event_handlers
-        assert component_static_handler.target not in layout._event_handlers
-
-        toggle_type.current()
-        await layout.render()
-
-        assert element_static_handler.target not in layout._event_handlers
-        assert component_static_handler.target in layout._event_handlers
-
-        toggle_type.current()
-        await layout.render()
-
-        assert element_static_handler.target in layout._event_handlers
-        assert component_static_handler.target not in layout._event_handlers
-
-
-async def test_switching_component_definition():
-    toggle_component = reactpy.Ref()
-    first_used_state = reactpy.Ref(None)
-    second_used_state = reactpy.Ref(None)
-
-    @reactpy.component
-    def Root():
-        toggle, toggle_component.current = use_toggle(True)
-        if toggle:
-            return FirstComponent()
-        else:
-            return SecondComponent()
-
-    @reactpy.component
-    def FirstComponent():
-        first_used_state.current = use_state("first")[0]
-        # reset state after unmount
-        use_effect(lambda: lambda: first_used_state.set_current(None))
-        return html.div()
-
-    @reactpy.component
-    def SecondComponent():
-        second_used_state.current = use_state("second")[0]
-        # reset state after unmount
-        use_effect(lambda: lambda: second_used_state.set_current(None))
-        return html.div()
-
-    async with reactpy.Layout(Root()) as layout:
-        await layout.render()
-
-        assert first_used_state.current == "first"
-        assert second_used_state.current is None
-
-        toggle_component.current()
-        await layout.render()
-
-        assert first_used_state.current is None
-        assert second_used_state.current == "second"
-
-        toggle_component.current()
-        await layout.render()
-
-        assert first_used_state.current == "first"
-        assert second_used_state.current is None
-
-
-async def test_element_keys_inside_components_do_not_reset_state_of_component():
-    """This is a regression test for a bug.
-
-    You would not expect that calling `set_child_key_num` would trigger state to be
-    reset in any `Child()` components but there was a bug where that happened.
-    """
-
-    effect_calls_without_state = set()
-    set_child_key_num = StaticEventHandler()
-    did_call_effect = asyncio.Event()
-
-    @component
-    def Parent():
-        state, set_state = use_state(0)
-        return html.div(
-            html.button(
-                {"on_click": set_child_key_num.use(lambda: set_state(state + 1))},
-                "click me",
-            ),
-            Child("some-key"),
-            Child(f"key-{state}"),
-        )
-
-    @component
-    def Child(child_key):
-        state, set_state = use_state(0)
-
-        @use_effect
-        async def record_if_state_is_reset():
-            if state:
-                return
-            effect_calls_without_state.add(child_key)
-            set_state(1)
-            did_call_effect.set()
-
-        return html.div({"key": child_key}, child_key)
-
-    async with reactpy.Layout(Parent()) as layout:
-        await layout.render()
-        await did_call_effect.wait()
-        assert effect_calls_without_state == {"some-key", "key-0"}
-        did_call_effect.clear()
-
-        for _i in range(1, 5):
-            await layout.deliver(event_message(set_child_key_num.target))
-            await layout.render()
-            assert effect_calls_without_state == {"some-key", "key-0"}
-            did_call_effect.clear()
-
-
-async def test_changing_key_of_component_resets_state():
-    set_key = Ref()
-    did_init_state = Ref(0)
-    hook = HookCatcher()
-
-    @component
-    @hook.capture
-    def Root():
-        key, set_key.current = use_state("key-1")
-        return Child(key=key)
-
-    @component
-    def Child():
-        use_state(lambda: did_init_state.set_current(did_init_state.current + 1))
-
-    async with Layout(Root()) as layout:
-        await layout.render()
-        assert did_init_state.current == 1
-
-        set_key.current("key-2")
-        await layout.render()
-        assert did_init_state.current == 2
-
-        hook.latest.schedule_render()
-        await layout.render()
-        assert did_init_state.current == 2
-
-
-async def test_changing_event_handlers_in_the_next_render():
-    set_event_name = Ref()
-    event_handler = StaticEventHandler()
-    did_trigger = Ref(False)
-
-    @component
-    def Root():
-        event_name, set_event_name.current = use_state("first")
-        return html.button(
-            {event_name: event_handler.use(lambda: did_trigger.set_current(True))}
-        )
-
-    async with Layout(Root()) as layout:
-        await layout.render()
-        await layout.deliver(event_message(event_handler.target))
-        assert did_trigger.current
-        did_trigger.current = False
-
-        set_event_name.current("second")
-        await layout.render()
-        await layout.deliver(event_message(event_handler.target))
-        assert did_trigger.current
-        did_trigger.current = False
-
-
-async def test_change_element_to_string_causes_unmount():
-    set_toggle = Ref()
-    did_unmount = Ref(False)
-
-    @component
-    def Root():
-        toggle, set_toggle.current = use_toggle(True)
-        if toggle:
-            return html.div(Child())
-        else:
-            return html.div("some-string")
-
-    @component
-    def Child():
-        use_effect(lambda: lambda: did_unmount.set_current(True))
-
-    async with Layout(Root()) as layout:
-        await layout.render()
-
-        set_toggle.current()
-
-        await layout.render()
-
-        assert did_unmount.current
-
-
-async def test_does_render_children_after_component():
-    """Regression test for bug where layout was appending children to a stale ref
-
-    The stale reference was created when a component got rendered. Thus, everything
-    after the component failed to display.
-    """
-
-    @reactpy.component
-    def Parent():
-        return html.div(
-            html.p("first"),
-            Child(),
-            html.p("third"),
-        )
-
-    @reactpy.component
-    def Child():
-        return html.p("second")
-
-    async with reactpy.Layout(Parent()) as layout:
-        update = await layout.render()
-        assert update["model"] == {
-            "tagName": "",
-            "children": [
-                {
-                    "tagName": "div",
-                    "children": [
-                        {"tagName": "p", "children": ["first"]},
-                        {
-                            "tagName": "",
-                            "children": [{"tagName": "p", "children": ["second"]}],
-                        },
-                        {"tagName": "p", "children": ["third"]},
-                    ],
-                }
-            ],
-        }
-
-
-async def test_render_removed_context_consumer():
-    Context = reactpy.create_context(None)
-    toggle_remove_child = None
-    schedule_removed_child_render = None
-
-    @component
-    def Parent():
-        nonlocal toggle_remove_child
-        remove_child, toggle_remove_child = use_toggle()
-        return Context(html.div() if remove_child else Child(), value=None)
-
-    @component
-    def Child():
-        nonlocal schedule_removed_child_render
-        schedule_removed_child_render = use_force_render()
-
-    async with reactpy.Layout(Parent()) as layout:
-        await layout.render()
-
-        # If the context provider does not render its children then internally tracked
-        # state for the removed child component might not be cleaned up properly. This
-        # occurred in the past when the context provider implemented a should_render()
-        # method that returned False (and thus did not render its children) when the
-        # context value did not change.
-        toggle_remove_child()
-        await layout.render()
-
-        # If this removed child component has state which has not been cleaned up
-        # correctly, scheduling a render for it might cause an error.
-        schedule_removed_child_render()
-
-        # If things were cleaned up properly, the above scheduled render should not
-        # actually take place. Thus we expect the timeout to occur.
-        render_task = asyncio.create_task(layout.render())
-        done, pending = await asyncio.wait([render_task], timeout=0.1)
-        assert not done and pending
-        render_task.cancel()
diff --git a/src/py/reactpy/tests/test_core/test_serve.py b/src/py/reactpy/tests/test_core/test_serve.py
deleted file mode 100644
index 64be0ec8b..000000000
--- a/src/py/reactpy/tests/test_core/test_serve.py
+++ /dev/null
@@ -1,139 +0,0 @@
-import asyncio
-from collections.abc import Sequence
-from typing import Any
-
-from jsonpointer import set_pointer
-
-import reactpy
-from reactpy.core.layout import Layout
-from reactpy.core.serve import serve_layout
-from reactpy.core.types import LayoutUpdateMessage
-from reactpy.testing import StaticEventHandler
-from tests.tooling.common import event_message
-
-EVENT_NAME = "on_event"
-STATIC_EVENT_HANDLER = StaticEventHandler()
-
-
-def make_send_recv_callbacks(events_to_inject):
-    changes = []
-
-    # We need a semaphore here to simulate receiving an event after each update is sent.
-    # The effect is that the send() and recv() callbacks trade off control. If we did
-    # not do this, it would easy to determine when to halt because, while we might have
-    # received all the events, they might not have been sent since the two callbacks are
-    # executed in separate loops.
-    sem = asyncio.Semaphore(0)
-
-    async def send(patch):
-        changes.append(patch)
-        sem.release()
-        if not events_to_inject:
-            raise reactpy.Stop()
-
-    async def recv():
-        await sem.acquire()
-        try:
-            return events_to_inject.pop(0)
-        except IndexError:
-            # wait forever
-            await asyncio.Event().wait()
-
-    return changes, send, recv
-
-
-def make_events_and_expected_model():
-    events = [event_message(STATIC_EVENT_HANDLER.target)] * 4
-    expected_model = {
-        "tagName": "",
-        "children": [
-            {
-                "tagName": "div",
-                "attributes": {"count": 4},
-                "eventHandlers": {
-                    EVENT_NAME: {
-                        "target": STATIC_EVENT_HANDLER.target,
-                        "preventDefault": False,
-                        "stopPropagation": False,
-                    }
-                },
-            }
-        ],
-    }
-    return events, expected_model
-
-
-def assert_changes_produce_expected_model(
-    changes: Sequence[LayoutUpdateMessage],
-    expected_model: Any,
-) -> None:
-    model_from_changes = {}
-    for update in changes:
-        if update["path"]:
-            model_from_changes = set_pointer(
-                model_from_changes, update["path"], update["model"]
-            )
-        else:
-            model_from_changes.update(update["model"])
-    assert model_from_changes == expected_model
-
-
-@reactpy.component
-def Counter():
-    count, change_count = reactpy.hooks.use_reducer(
-        (lambda old_count, diff: old_count + diff),
-        initial_value=0,
-    )
-    handler = STATIC_EVENT_HANDLER.use(lambda: change_count(1))
-    return reactpy.html.div({EVENT_NAME: handler, "count": count})
-
-
-async def test_dispatch():
-    events, expected_model = make_events_and_expected_model()
-    changes, send, recv = make_send_recv_callbacks(events)
-    await asyncio.wait_for(serve_layout(Layout(Counter()), send, recv), 1)
-    assert_changes_produce_expected_model(changes, expected_model)
-
-
-async def test_dispatcher_handles_more_than_one_event_at_a_time():
-    block_and_never_set = asyncio.Event()
-    will_block = asyncio.Event()
-    second_event_did_execute = asyncio.Event()
-
-    blocked_handler = StaticEventHandler()
-    non_blocked_handler = StaticEventHandler()
-
-    @reactpy.component
-    def ComponentWithTwoEventHandlers():
-        @blocked_handler.use
-        async def block_forever():
-            will_block.set()
-            await block_and_never_set.wait()
-
-        @non_blocked_handler.use
-        async def handle_event():
-            second_event_did_execute.set()
-
-        return reactpy.html.div(
-            reactpy.html.button({"on_click": block_forever}),
-            reactpy.html.button({"on_click": handle_event}),
-        )
-
-    send_queue = asyncio.Queue()
-    recv_queue = asyncio.Queue()
-
-    task = asyncio.create_task(
-        serve_layout(
-            reactpy.Layout(ComponentWithTwoEventHandlers()),
-            send_queue.put,
-            recv_queue.get,
-        )
-    )
-
-    await recv_queue.put(event_message(blocked_handler.target))
-    await will_block.wait()
-
-    await recv_queue.put(event_message(non_blocked_handler.target))
-    await second_event_did_execute.wait()
-
-    task.cancel()
diff --git a/src/py/reactpy/tests/test_core/test_vdom.py b/src/py/reactpy/tests/test_core/test_vdom.py
deleted file mode 100644
index 76e26e46f..000000000
--- a/src/py/reactpy/tests/test_core/test_vdom.py
+++ /dev/null
@@ -1,307 +0,0 @@
-import sys
-
-import pytest
-from fastjsonschema import JsonSchemaException
-
-import reactpy
-from reactpy.config import REACTPY_DEBUG_MODE
-from reactpy.core.events import EventHandler
-from reactpy.core.types import VdomDict
-from reactpy.core.vdom import is_vdom, make_vdom_constructor, validate_vdom_json
-
-FAKE_EVENT_HANDLER = EventHandler(lambda data: None)
-FAKE_EVENT_HANDLER_DICT = {"on_event": FAKE_EVENT_HANDLER}
-
-
-@pytest.mark.parametrize(
-    "result, value",
-    [
-        (False, {}),
-        (False, {"tagName": None}),
-        (False, VdomDict()),
-        (True, {"tagName": ""}),
-        (True, VdomDict(tagName="")),
-    ],
-)
-def test_is_vdom(result, value):
-    assert is_vdom(value) == result
-
-
-@pytest.mark.parametrize(
-    "actual, expected",
-    [
-        (
-            reactpy.vdom("div", [reactpy.vdom("div")]),
-            {"tagName": "div", "children": [{"tagName": "div"}]},
-        ),
-        (
-            reactpy.vdom("div", {"style": {"backgroundColor": "red"}}),
-            {"tagName": "div", "attributes": {"style": {"backgroundColor": "red"}}},
-        ),
-        (
-            # multiple iterables of children are merged
-            reactpy.vdom("div", [reactpy.vdom("div"), 1], (reactpy.vdom("div"), 2)),
-            {
-                "tagName": "div",
-                "children": [{"tagName": "div"}, 1, {"tagName": "div"}, 2],
-            },
-        ),
-        (
-            reactpy.vdom("div", {"on_event": FAKE_EVENT_HANDLER}),
-            {"tagName": "div", "eventHandlers": FAKE_EVENT_HANDLER_DICT},
-        ),
-        (
-            reactpy.vdom("div", reactpy.html.h1("hello"), reactpy.html.h2("world")),
-            {
-                "tagName": "div",
-                "children": [
-                    {"tagName": "h1", "children": ["hello"]},
-                    {"tagName": "h2", "children": ["world"]},
-                ],
-            },
-        ),
-        (
-            reactpy.vdom("div", {"tagName": "div"}),
-            {"tagName": "div", "children": [{"tagName": "div"}]},
-        ),
-        (
-            reactpy.vdom("div", (i for i in range(3))),
-            {"tagName": "div", "children": [0, 1, 2]},
-        ),
-        (
-            reactpy.vdom("div", (x**2 for x in [1, 2, 3])),
-            {"tagName": "div", "children": [1, 4, 9]},
-        ),
-    ],
-)
-def test_simple_node_construction(actual, expected):
-    assert actual == expected
-
-
-async def test_callable_attributes_are_cast_to_event_handlers():
-    params_from_calls = []
-
-    node = reactpy.vdom(
-        "div", {"on_event": lambda *args: params_from_calls.append(args)}
-    )
-
-    event_handlers = node.pop("eventHandlers")
-    assert node == {"tagName": "div"}
-
-    handler = event_handlers["on_event"]
-    assert event_handlers == {"on_event": EventHandler(handler.function)}
-
-    await handler.function([1, 2])
-    await handler.function([3, 4, 5])
-    assert params_from_calls == [(1, 2), (3, 4, 5)]
-
-
-def test_make_vdom_constructor():
-    elmt = make_vdom_constructor("some-tag")
-
-    assert elmt({"data": 1}, [elmt()]) == {
-        "tagName": "some-tag",
-        "children": [{"tagName": "some-tag"}],
-        "attributes": {"data": 1},
-    }
-
-    no_children = make_vdom_constructor("no-children", allow_children=False)
-
-    with pytest.raises(TypeError, match="cannot have children"):
-        no_children([1, 2, 3])
-
-    assert no_children() == {"tagName": "no-children"}
-
-
-@pytest.mark.parametrize(
-    "value",
-    [
-        {
-            "tagName": "div",
-            "children": [
-                "Some text",
-                {"tagName": "div"},
-            ],
-        },
-        {
-            "tagName": "div",
-            "attributes": {"style": {"color": "blue"}},
-        },
-        {
-            "tagName": "div",
-            "eventHandler": {"target": "something"},
-        },
-        {
-            "tagName": "div",
-            "eventHandler": {
-                "target": "something",
-                "preventDefault": False,
-                "stopPropagation": True,
-            },
-        },
-        {
-            "tagName": "div",
-            "importSource": {"source": "something"},
-        },
-        {
-            "tagName": "div",
-            "importSource": {"source": "something", "fallback": None},
-        },
-        {
-            "tagName": "div",
-            "importSource": {"source": "something", "fallback": "loading..."},
-        },
-        {
-            "tagName": "div",
-            "importSource": {"source": "something", "fallback": {"tagName": "div"}},
-        },
-        {
-            "tagName": "div",
-            "children": [
-                "Some text",
-                {"tagName": "div"},
-            ],
-            "attributes": {"style": {"color": "blue"}},
-            "eventHandler": {
-                "target": "something",
-                "preventDefault": False,
-                "stopPropagation": True,
-            },
-            "importSource": {
-                "source": "something",
-                "fallback": {"tagName": "div"},
-            },
-        },
-    ],
-)
-def test_valid_vdom(value):
-    validate_vdom_json(value)
-
-
-@pytest.mark.skipif(
-    sys.version_info < (3, 10), reason="error messages are different in Python<3.10"
-)
-@pytest.mark.parametrize(
-    "value, error_message_pattern",
-    [
-        (
-            None,
-            r"data must be object",
-        ),
-        (
-            {},
-            r"data must contain \['tagName'\] properties",
-        ),
-        (
-            {"tagName": 0},
-            r"data\.tagName must be string",
-        ),
-        (
-            {"tagName": "tag", "children": None},
-            r"data\.children must be array",
-        ),
-        (
-            {"tagName": "tag", "children": [None]},
-            r"data\.children\[0\] must be object or string",
-        ),
-        (
-            {"tagName": "tag", "children": [{"tagName": None}]},
-            r"data\.children\[0\]\.tagName must be string",
-        ),
-        (
-            {"tagName": "tag", "attributes": None},
-            r"data\.attributes must be object",
-        ),
-        (
-            {"tagName": "tag", "eventHandlers": None},
-            r"data\.eventHandlers must be object",
-        ),
-        (
-            {"tagName": "tag", "eventHandlers": {"on_event": None}},
-            r"data\.eventHandlers\.on_event must be object",
-        ),
-        (
-            {
-                "tagName": "tag",
-                "eventHandlers": {"on_event": {}},
-            },
-            r"data\.eventHandlers\.on_event\ must contain \['target'\] properties",
-        ),
-        (
-            {
-                "tagName": "tag",
-                "eventHandlers": {
-                    "on_event": {
-                        "target": "something",
-                        "preventDefault": None,
-                    }
-                },
-            },
-            r"data\.eventHandlers\.on_event\.preventDefault must be boolean",
-        ),
-        (
-            {
-                "tagName": "tag",
-                "eventHandlers": {
-                    "on_event": {
-                        "target": "something",
-                        "stopPropagation": None,
-                    }
-                },
-            },
-            r"data\.eventHandlers\.on_event\.stopPropagation must be boolean",
-        ),
-        (
-            {"tagName": "tag", "importSource": None},
-            r"data\.importSource must be object",
-        ),
-        (
-            {"tagName": "tag", "importSource": {}},
-            r"data\.importSource must contain \['source'\] properties",
-        ),
-        (
-            {
-                "tagName": "tag",
-                "importSource": {"source": "something", "fallback": 0},
-            },
-            r"data\.importSource\.fallback must be object or string or null",
-        ),
-        (
-            {
-                "tagName": "tag",
-                "importSource": {"source": "something", "fallback": {"tagName": None}},
-            },
-            r"data\.importSource\.fallback\.tagName must be string",
-        ),
-    ],
-)
-def test_invalid_vdom(value, error_message_pattern):
-    with pytest.raises(JsonSchemaException, match=error_message_pattern):
-        validate_vdom_json(value)
-
-
-@pytest.mark.skipif(not REACTPY_DEBUG_MODE.current, reason="Only logs in debug mode")
-def test_debug_log_cannot_verify_keypath_for_genereators(caplog):
-    reactpy.vdom("div", (1 for i in range(10)))
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.startswith(
-        "Did not verify key-path integrity of children in generator"
-    )
-    caplog.records.clear()
-
-
-@pytest.mark.skipif(not REACTPY_DEBUG_MODE.current, reason="Only logs in debug mode")
-def test_debug_log_dynamic_children_must_have_keys(caplog):
-    reactpy.vdom("div", [reactpy.vdom("div")])
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.startswith("Key not specified for child")
-
-    caplog.records.clear()
-
-    @reactpy.component
-    def MyComponent():
-        return reactpy.vdom("div")
-
-    reactpy.vdom("div", [MyComponent()])
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.startswith("Key not specified for child")
diff --git a/src/py/reactpy/tests/test_html.py b/src/py/reactpy/tests/test_html.py
deleted file mode 100644
index f16d1beed..000000000
--- a/src/py/reactpy/tests/test_html.py
+++ /dev/null
@@ -1,160 +0,0 @@
-import pytest
-
-from reactpy import component, config, html
-from reactpy.testing import DisplayFixture, poll
-from reactpy.utils import Ref
-from tests.tooling.hooks import use_counter, use_toggle
-
-
-async def test_script_mount_unmount(display: DisplayFixture):
-    toggle_is_mounted = Ref()
-
-    @component
-    def Root():
-        is_mounted, toggle_is_mounted.current = use_toggle(True)
-        return html.div(
-            html.div({"id": "mount-state", "data_value": False}),
-            HasScript() if is_mounted else html.div(),
-        )
-
-    @component
-    def HasScript():
-        return html.script(
-            """() => {
-                const mapping = {"false": false, "true": true};
-                const mountStateEl = document.getElementById("mount-state");
-                mountStateEl.setAttribute(
-                    "data-value", !mapping[mountStateEl.getAttribute("data-value")]);
-                return () => mountStateEl.setAttribute(
-                    "data-value", !mapping[mountStateEl.getAttribute("data-value")]);
-            }"""
-        )
-
-    await display.show(Root)
-
-    mount_state = await display.page.wait_for_selector("#mount-state", state="attached")
-    poll_mount_state = poll(mount_state.get_attribute, "data-value")
-
-    await poll_mount_state.until_equals("true")
-
-    toggle_is_mounted.current()
-
-    await poll_mount_state.until_equals("false")
-
-    toggle_is_mounted.current()
-
-    await poll_mount_state.until_equals("true")
-
-
-async def test_script_re_run_on_content_change(display: DisplayFixture):
-    incr_count = Ref()
-
-    @component
-    def HasScript():
-        count, incr_count.current = use_counter(1)
-        return html.div(
-            html.div({"id": "mount-count", "data_value": 0}),
-            html.div({"id": "unmount-count", "data_value": 0}),
-            html.script(
-                f"""() => {{
-                    const mountCountEl = document.getElementById("mount-count");
-                    const unmountCountEl = document.getElementById("unmount-count");
-                    mountCountEl.setAttribute("data-value", {count});
-                    return () => unmountCountEl.setAttribute("data-value", {count});;
-                }}"""
-            ),
-        )
-
-    await display.show(HasScript)
-
-    mount_count = await display.page.wait_for_selector("#mount-count", state="attached")
-    poll_mount_count = poll(mount_count.get_attribute, "data-value")
-
-    unmount_count = await display.page.wait_for_selector(
-        "#unmount-count", state="attached"
-    )
-    poll_unmount_count = poll(unmount_count.get_attribute, "data-value")
-
-    await poll_mount_count.until_equals("1")
-    await poll_unmount_count.until_equals("0")
-
-    incr_count.current()
-
-    await poll_mount_count.until_equals("2")
-    await poll_unmount_count.until_equals("1")
-
-    incr_count.current()
-
-    await poll_mount_count.until_equals("3")
-    await poll_unmount_count.until_equals("2")
-
-
-async def test_script_from_src(display: DisplayFixture):
-    incr_src_id = Ref()
-    file_name_template = "__some_js_script_{src_id}__.js"
-
-    @component
-    def HasScript():
-        src_id, incr_src_id.current = use_counter(0)
-        if src_id == 0:
-            # on initial display we haven't added the file yet.
-            return html.div()
-        else:
-            return html.div(
-                html.div({"id": "run-count", "data_value": 0}),
-                html.script(
-                    {
-                        "src": f"/_reactpy/modules/{file_name_template.format(src_id=src_id)}"
-                    }
-                ),
-            )
-
-    await display.show(HasScript)
-
-    for i in range(1, 4):
-        script_file = (
-            config.REACTPY_WEB_MODULES_DIR.current / file_name_template.format(src_id=i)
-        )
-        script_file.write_text(
-            f"""
-            let runCountEl = document.getElementById("run-count");
-            runCountEl.setAttribute("data-value", {i});
-            """
-        )
-
-        incr_src_id.current()
-
-        run_count = await display.page.wait_for_selector("#run-count", state="attached")
-        poll_run_count = poll(run_count.get_attribute, "data-value")
-        await poll_run_count.until_equals("1")
-
-
-def test_script_may_only_have_one_child():
-    with pytest.raises(ValueError, match="'script' nodes may have, at most, one child"):
-        html.script("one child", "two child")
-
-
-def test_child_of_script_must_be_string():
-    with pytest.raises(ValueError, match="The child of a 'script' must be a string"):
-        html.script(1)
-
-
-def test_script_has_no_event_handlers():
-    with pytest.raises(ValueError, match="do not support event handlers"):
-        html.script({"on_event": lambda: None})
-
-
-def test_simple_fragment():
-    assert html._() == {"tagName": ""}
-    assert html._(1, 2, 3) == {"tagName": "", "children": [1, 2, 3]}
-    assert html._({"key": "something"}) == {"tagName": "", "key": "something"}
-    assert html._({"key": "something"}, 1, 2, 3) == {
-        "tagName": "",
-        "key": "something",
-        "children": [1, 2, 3],
-    }
-
-
-def test_fragment_can_have_no_attributes():
-    with pytest.raises(TypeError, match="Fragments cannot have attributes"):
-        html._({"some_attribute": 1})
diff --git a/src/py/reactpy/tests/test_sample.py b/src/py/reactpy/tests/test_sample.py
deleted file mode 100644
index b92e89789..000000000
--- a/src/py/reactpy/tests/test_sample.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from reactpy.sample import SampleApp
-from reactpy.testing import DisplayFixture
-
-
-async def test_sample_app(display: DisplayFixture):
-    await display.show(SampleApp)
-    h1 = await display.page.wait_for_selector("h1")
-    assert (await h1.text_content()) == "Sample Application"
diff --git a/src/py/reactpy/tests/test_testing.py b/src/py/reactpy/tests/test_testing.py
deleted file mode 100644
index 68e36e7f6..000000000
--- a/src/py/reactpy/tests/test_testing.py
+++ /dev/null
@@ -1,218 +0,0 @@
-import logging
-import os
-
-import pytest
-
-from reactpy import Ref, component, html, testing
-from reactpy.backend import starlette as starlette_implementation
-from reactpy.logging import ROOT_LOGGER
-from reactpy.sample import SampleApp
-from reactpy.testing.backend import _hotswap
-from reactpy.testing.display import DisplayFixture
-
-
-def test_assert_reactpy_logged_does_not_suppress_errors():
-    with pytest.raises(RuntimeError, match="expected error"):
-        with testing.assert_reactpy_did_log():
-            msg = "expected error"
-            raise RuntimeError(msg)
-
-
-def test_assert_reactpy_logged_message():
-    with testing.assert_reactpy_did_log(match_message="my message"):
-        ROOT_LOGGER.info("my message")
-
-    with testing.assert_reactpy_did_log(match_message=r".*"):
-        ROOT_LOGGER.info("my message")
-
-
-def test_assert_reactpy_logged_error():
-    with testing.assert_reactpy_did_log(
-        match_message="log message",
-        error_type=ValueError,
-        match_error="my value error",
-    ):
-        try:
-            msg = "my value error"
-            raise ValueError(msg)
-        except ValueError:
-            ROOT_LOGGER.exception("log message")
-
-    with pytest.raises(
-        AssertionError,
-        match=r"Could not find a log record matching the given",
-    ):
-        with testing.assert_reactpy_did_log(
-            match_message="log message",
-            error_type=ValueError,
-            match_error="my value error",
-        ):
-            try:
-                # change error type
-                msg = "my value error"
-                raise RuntimeError(msg)
-            except RuntimeError:
-                ROOT_LOGGER.exception("log message")
-
-    with pytest.raises(
-        AssertionError,
-        match=r"Could not find a log record matching the given",
-    ):
-        with testing.assert_reactpy_did_log(
-            match_message="log message",
-            error_type=ValueError,
-            match_error="my value error",
-        ):
-            try:
-                # change error message
-                msg = "something else"
-                raise ValueError(msg)
-            except ValueError:
-                ROOT_LOGGER.exception("log message")
-
-    with pytest.raises(
-        AssertionError,
-        match=r"Could not find a log record matching the given",
-    ):
-        with testing.assert_reactpy_did_log(
-            match_message="log message",
-            error_type=ValueError,
-            match_error="my value error",
-        ):
-            try:
-                # change error message
-                msg = "my error message"
-                raise ValueError(msg)
-            except ValueError:
-                ROOT_LOGGER.exception("something else")
-
-
-def test_assert_reactpy_logged_assertion_error_message():
-    with pytest.raises(
-        AssertionError,
-        match=r"Could not find a log record matching the given",
-    ):
-        with testing.assert_reactpy_did_log(
-            # put in all possible params full assertion error message
-            match_message=r".*",
-            error_type=Exception,
-            match_error=r".*",
-        ):
-            pass
-
-
-def test_assert_reactpy_logged_ignores_level():
-    original_level = ROOT_LOGGER.level
-    ROOT_LOGGER.setLevel(logging.INFO)
-    try:
-        with testing.assert_reactpy_did_log(match_message=r".*"):
-            # this log would normally be ignored
-            ROOT_LOGGER.debug("my message")
-    finally:
-        ROOT_LOGGER.setLevel(original_level)
-
-
-def test_assert_reactpy_did_not_log():
-    with testing.assert_reactpy_did_not_log(match_message="my message"):
-        pass
-
-    with testing.assert_reactpy_did_not_log(match_message=r"something else"):
-        ROOT_LOGGER.info("my message")
-
-    with pytest.raises(
-        AssertionError,
-        match=r"Did find a log record matching the given",
-    ):
-        with testing.assert_reactpy_did_not_log(
-            # put in all possible params full assertion error message
-            match_message=r".*",
-            error_type=Exception,
-            match_error=r".*",
-        ):
-            try:
-                msg = "something"
-                raise Exception(msg)
-            except Exception:
-                ROOT_LOGGER.exception("something")
-
-
-async def test_simple_display_fixture():
-    if os.name == "nt":
-        pytest.skip("Browser tests not supported on Windows")
-    async with testing.DisplayFixture() as display:
-        await display.show(SampleApp)
-        await display.page.wait_for_selector("#sample")
-
-
-def test_if_app_is_given_implementation_must_be_too():
-    with pytest.raises(
-        ValueError,
-        match=r"If an application instance its corresponding server implementation must be provided too",
-    ):
-        testing.BackendFixture(app=starlette_implementation.create_development_app())
-
-    testing.BackendFixture(
-        app=starlette_implementation.create_development_app(),
-        implementation=starlette_implementation,
-    )
-
-
-def test_list_logged_excptions():
-    the_error = None
-    with testing.capture_reactpy_logs() as records:
-        ROOT_LOGGER.info("A non-error log message")
-
-        try:
-            msg = "An error for testing"
-            raise ValueError(msg)
-        except Exception as error:
-            ROOT_LOGGER.exception("Log the error")
-            the_error = error
-
-        logged_errors = testing.logs.list_logged_exceptions(records)
-        assert logged_errors == [the_error]
-
-
-async def test_hostwap_update_on_change(display: DisplayFixture):
-    """Ensure shared hotswapping works
-
-    This basically means that previously rendered views of a hotswap component get updated
-    when a new view is mounted, not just the next time it is re-displayed
-
-    In this test we construct a scenario where clicking a button will cause a pre-existing
-    hotswap component to be updated
-    """
-
-    def make_next_count_constructor(count):
-        """We need to construct a new function so they're different when we set_state"""
-
-        def constructor():
-            count.current += 1
-            return html.div({"id": f"hotswap-{count.current}"}, count.current)
-
-        return constructor
-
-    @component
-    def ButtonSwapsDivs():
-        count = Ref(0)
-
-        async def on_click(event):
-            mount(make_next_count_constructor(count))
-
-        incr = html.button({"on_click": on_click, "id": "incr-button"}, "incr")
-
-        mount, make_hostswap = _hotswap(update_on_change=True)
-        mount(make_next_count_constructor(count))
-        hotswap_view = make_hostswap()
-
-        return html.div(incr, hotswap_view)
-
-    await display.show(ButtonSwapsDivs)
-
-    client_incr_button = await display.page.wait_for_selector("#incr-button")
-
-    await display.page.wait_for_selector("#hotswap-1")
-    await client_incr_button.click()
-    await display.page.wait_for_selector("#hotswap-2")
-    await client_incr_button.click()
-    await display.page.wait_for_selector("#hotswap-3")
diff --git a/src/py/reactpy/tests/test_utils.py b/src/py/reactpy/tests/test_utils.py
deleted file mode 100644
index c71057f15..000000000
--- a/src/py/reactpy/tests/test_utils.py
+++ /dev/null
@@ -1,274 +0,0 @@
-from html import escape as html_escape
-
-import pytest
-
-import reactpy
-from reactpy import html
-from reactpy.utils import (
-    HTMLParseError,
-    del_html_head_body_transform,
-    html_to_vdom,
-    vdom_to_html,
-)
-
-
-def test_basic_ref_behavior():
-    r = reactpy.Ref(1)
-    assert r.current == 1
-
-    r.current = 2
-    assert r.current == 2
-
-    assert r.set_current(3) == 2
-    assert r.current == 3
-
-    r = reactpy.Ref()
-    with pytest.raises(AttributeError):
-        r.current  # noqa: B018
-
-    r.current = 4
-    assert r.current == 4
-
-
-def test_ref_equivalence():
-    assert reactpy.Ref([1, 2, 3]) == reactpy.Ref([1, 2, 3])
-    assert reactpy.Ref([1, 2, 3]) != reactpy.Ref([1, 2])
-    assert reactpy.Ref([1, 2, 3]) != [1, 2, 3]
-    assert reactpy.Ref() != reactpy.Ref()
-    assert reactpy.Ref() != reactpy.Ref(1)
-
-
-def test_ref_repr():
-    assert repr(reactpy.Ref([1, 2, 3])) == "Ref([1, 2, 3])"
-    assert repr(reactpy.Ref()) == "Ref(<undefined>)"
-
-
-@pytest.mark.parametrize(
-    "case",
-    [
-        {"source": "<div/>", "model": {"tagName": "div"}},
-        {
-            "source": "<div style='background-color:blue'/>",
-            "model": {
-                "tagName": "div",
-                "attributes": {"style": {"background_color": "blue"}},
-            },
-        },
-        {
-            "source": "<div>Hello!</div>",
-            "model": {"tagName": "div", "children": ["Hello!"]},
-        },
-        {
-            "source": "<div>Hello!<p>World!</p></div>",
-            "model": {
-                "tagName": "div",
-                "children": ["Hello!", {"tagName": "p", "children": ["World!"]}],
-            },
-        },
-    ],
-)
-def test_html_to_vdom(case):
-    assert html_to_vdom(case["source"]) == case["model"]
-
-
-def test_html_to_vdom_transform():
-    source = "<p>hello <a>world</a> and <a>universe</a>lmao</p>"
-
-    def make_links_blue(node):
-        if node["tagName"] == "a":
-            node["attributes"] = {"style": {"color": "blue"}}
-        return node
-
-    expected = {
-        "tagName": "p",
-        "children": [
-            "hello ",
-            {
-                "tagName": "a",
-                "children": ["world"],
-                "attributes": {"style": {"color": "blue"}},
-            },
-            " and ",
-            {
-                "tagName": "a",
-                "children": ["universe"],
-                "attributes": {"style": {"color": "blue"}},
-            },
-            "lmao",
-        ],
-    }
-
-    assert html_to_vdom(source, make_links_blue) == expected
-
-
-def test_non_html_tag_behavior():
-    source = "<my-tag data-x=something><my-other-tag key=a-key /></my-tag>"
-
-    expected = {
-        "tagName": "my-tag",
-        "attributes": {"data-x": "something"},
-        "children": [
-            {"tagName": "my-other-tag", "key": "a-key"},
-        ],
-    }
-
-    assert html_to_vdom(source, strict=False) == expected
-
-    with pytest.raises(HTMLParseError):
-        html_to_vdom(source, strict=True)
-
-
-def test_html_to_vdom_with_null_tag():
-    source = "<p>hello<br>world</p>"
-
-    expected = {
-        "tagName": "p",
-        "children": [
-            "hello",
-            {"tagName": "br"},
-            "world",
-        ],
-    }
-
-    assert html_to_vdom(source) == expected
-
-
-def test_html_to_vdom_with_style_attr():
-    source = '<p style="color: red; background-color : green; ">Hello World.</p>'
-
-    expected = {
-        "attributes": {"style": {"background_color": "green", "color": "red"}},
-        "children": ["Hello World."],
-        "tagName": "p",
-    }
-
-    assert html_to_vdom(source) == expected
-
-
-def test_html_to_vdom_with_no_parent_node():
-    source = "<p>Hello</p><div>World</div>"
-
-    expected = {
-        "tagName": "div",
-        "children": [
-            {"tagName": "p", "children": ["Hello"]},
-            {"tagName": "div", "children": ["World"]},
-        ],
-    }
-
-    assert html_to_vdom(source) == expected
-
-
-def test_del_html_body_transform():
-    source = """
-    <!DOCTYPE html>
-    <html lang="en">
-
-    <head>
-    <title>My Title</title>
-    </head>
-
-    <body><h1>Hello World</h1></body>
-
-    </html>
-    """
-
-    expected = {
-        "tagName": "",
-        "children": [
-            {
-                "tagName": "",
-                "children": [{"tagName": "title", "children": ["My Title"]}],
-            },
-            {
-                "tagName": "",
-                "children": [{"tagName": "h1", "children": ["Hello World"]}],
-            },
-        ],
-    }
-
-    assert html_to_vdom(source, del_html_head_body_transform) == expected
-
-
-SOME_OBJECT = object()
-
-
-@pytest.mark.parametrize(
-    "vdom_in, html_out",
-    [
-        (
-            html.div("hello"),
-            "<div>hello</div>",
-        ),
-        (
-            html.div(SOME_OBJECT),
-            f"<div>{html_escape(str(SOME_OBJECT))}</div>",
-        ),
-        (
-            html.div({"someAttribute": SOME_OBJECT}),
-            f'<div someattribute="{html_escape(str(SOME_OBJECT))}"></div>',
-        ),
-        (
-            html.div(
-                "hello", html.a({"href": "https://example.com"}, "example"), "world"
-            ),
-            '<div>hello<a href="https://example.com">example</a>world</div>',
-        ),
-        (
-            html.button({"on_click": lambda event: None}),
-            "<button></button>",
-        ),
-        (
-            html._("hello ", html._("world")),
-            "hello world",
-        ),
-        (
-            html._(html.div("hello"), html._("world")),
-            "<div>hello</div>world",
-        ),
-        (
-            html.div({"style": {"backgroundColor": "blue", "marginLeft": "10px"}}),
-            '<div style="background-color:blue;margin-left:10px"></div>',
-        ),
-        (
-            html.div({"style": "background-color:blue;margin-left:10px"}),
-            '<div style="background-color:blue;margin-left:10px"></div>',
-        ),
-        (
-            html._(
-                html.div("hello"),
-                html.a({"href": "https://example.com"}, "example"),
-            ),
-            '<div>hello</div><a href="https://example.com">example</a>',
-        ),
-        (
-            html.div(
-                html._(
-                    html.div("hello"),
-                    html.a({"href": "https://example.com"}, "example"),
-                ),
-                html.button(),
-            ),
-            '<div><div>hello</div><a href="https://example.com">example</a><button></button></div>',
-        ),
-        (
-            html.div(
-                {"data_something": 1, "data_something_else": 2, "dataisnotdashed": 3}
-            ),
-            '<div data-something="1" data-something-else="2" dataisnotdashed="3"></div>',
-        ),
-        (
-            html.div(
-                {"dataSomething": 1, "dataSomethingElse": 2, "dataisnotdashed": 3}
-            ),
-            '<div data-something="1" data-something-else="2" dataisnotdashed="3"></div>',
-        ),
-    ],
-)
-def test_vdom_to_html(vdom_in, html_out):
-    assert vdom_to_html(vdom_in) == html_out
-
-
-def test_vdom_to_html_error():
-    with pytest.raises(TypeError, match="Expected a VDOM dict"):
-        vdom_to_html({"notVdom": True})
diff --git a/src/py/reactpy/tests/test_web/__init__.py b/src/py/reactpy/tests/test_web/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/component-can-have-child.js b/src/py/reactpy/tests/test_web/js_fixtures/component-can-have-child.js
deleted file mode 100644
index fd443b164..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/component-can-have-child.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import { h, render } from "https://unpkg.com/preact?module";
-import htm from "https://unpkg.com/htm?module";
-
-const html = htm.bind(h);
-
-export function bind(node, config) {
-  return {
-    create: (type, props, children) => h(type, props, ...children),
-    render: (element) => render(element, node),
-    unmount: () => render(null, node),
-  };
-}
-
-// The intention here is that Child components are passed in here so we check that the
-// children of "the-parent" are "child-1" through "child-N"
-export function Parent(props) {
-  return html`
-    <div>
-      <p>the parent</p>
-      <ul id="the-parent">${props.children}</div>
-    </div>
-  `;
-}
-
-export function Child({ index }) {
-  return html`<li id="child-${index}">child ${index}</li>`;
-}
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/index.js b/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/index.js
deleted file mode 100644
index 372f108bd..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export { index as Index };
-export * from "./one.js";
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/one.js b/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/one.js
deleted file mode 100644
index ddea9d2cb..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/one.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export { one as One };
-// use ../ just to check that it works
-export * from "../export-resolution/two.js";
-// this default should not be exported by the * re-export in index.js
-export default 0;
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/two.js b/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/two.js
deleted file mode 100644
index f01389d2e..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/export-resolution/two.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export { two as Two };
-export * from "https://some.external.url";
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/exports-syntax.js b/src/py/reactpy/tests/test_web/js_fixtures/exports-syntax.js
deleted file mode 100644
index 8f9b0e612..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/exports-syntax.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copied from: https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export
-
-// Exporting individual features
-export let name1, name2, name3; // also var, const
-export let name4 = 4, name5 = 5, name6; // also var, const
-export function functionName(){...}
-export class ClassName {...}
-
-// Export list
-export { name7, name8, name9 };
-
-// Renaming exports
-export { variable1 as name10, variable2 as name11, name12 };
-
-// Exporting destructured assignments with renaming
-export const { name13, name14: bar } = o;
-
-// Aggregating modules
-export * from "https://source1.com"; // does not set the default export
-export * from "https://source2.com"; // does not set the default export
-export * as name15 from "https://source3.com"; // Draft ECMAScript® 2O21
-export { name16, name17 } from "https://source4.com";
-export { import1 as name18, import2 as name19, name20 } from "https://source5.com";
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/exports-two-components.js b/src/py/reactpy/tests/test_web/js_fixtures/exports-two-components.js
deleted file mode 100644
index 10aa7fdbe..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/exports-two-components.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { h, render } from "https://unpkg.com/preact?module";
-import htm from "https://unpkg.com/htm?module";
-
-const html = htm.bind(h);
-
-export function bind(node, config) {
-  return {
-    create: (type, props, children) => h(type, props, ...children),
-    render: (element) => render(element, node),
-    unmount: () => render(null, node),
-  };
-}
-
-export function Header1(props) {
-  return h("h1", { id: props.id }, props.text);
-}
-
-export function Header2(props) {
-  return h("h2", { id: props.id }, props.text);
-}
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js b/src/py/reactpy/tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js
deleted file mode 100644
index dbb1a1c99..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/set-flag-when-unmount-is-called.js
+++ /dev/null
@@ -1,31 +0,0 @@
-export function bind(node, config) {
-  return {
-    create: (type, props, children) => type(props),
-    render: (element) => renderElement(element, node),
-    unmount: () => unmountElement(node),
-  };
-}
-
-export function renderElement(element, container) {
-  if (container.firstChild) {
-    container.removeChild(container.firstChild);
-  }
-  container.appendChild(element);
-}
-
-export function unmountElement(container) {
-  // We add an element to the document.body to indicate that this function was called.
-  // Thus allowing Selenium to see communicate to server-side code that this effect
-  // did indeed occur.
-  const unmountFlag = document.createElement("h1");
-  unmountFlag.setAttribute("id", "unmount-flag");
-  document.body.appendChild(unmountFlag);
-  container.innerHTML = "";
-}
-
-export function SomeComponent(props) {
-  const element = document.createElement("h1");
-  element.appendChild(document.createTextNode(props.text));
-  element.setAttribute("id", props.id);
-  return element;
-}
diff --git a/src/py/reactpy/tests/test_web/js_fixtures/simple-button.js b/src/py/reactpy/tests/test_web/js_fixtures/simple-button.js
deleted file mode 100644
index 2b49f505b..000000000
--- a/src/py/reactpy/tests/test_web/js_fixtures/simple-button.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { h, render } from "https://unpkg.com/preact?module";
-import htm from "https://unpkg.com/htm?module";
-
-const html = htm.bind(h);
-
-export function bind(node, config) {
-  return {
-    create: (type, props, children) => h(type, props, ...children),
-    render: (element) => render(element, node),
-    unmount: () => render(null, node),
-  };
-}
-
-export function SimpleButton(props) {
-  return h(
-    "button",
-    {
-      id: props.id,
-      onClick(event) {
-        props.onClick({ data: props.eventResponseData });
-      },
-    },
-    "simple button",
-  );
-}
diff --git a/src/py/reactpy/tests/test_web/test_module.py b/src/py/reactpy/tests/test_web/test_module.py
deleted file mode 100644
index f8783337d..000000000
--- a/src/py/reactpy/tests/test_web/test_module.py
+++ /dev/null
@@ -1,235 +0,0 @@
-from pathlib import Path
-
-import pytest
-from sanic import Sanic
-
-import reactpy
-from reactpy.backend import sanic as sanic_implementation
-from reactpy.testing import (
-    BackendFixture,
-    DisplayFixture,
-    assert_reactpy_did_log,
-    assert_reactpy_did_not_log,
-    poll,
-)
-from reactpy.web.module import NAME_SOURCE, WebModule
-
-JS_FIXTURES_DIR = Path(__file__).parent / "js_fixtures"
-
-
-async def test_that_js_module_unmount_is_called(display: DisplayFixture):
-    SomeComponent = reactpy.web.export(
-        reactpy.web.module_from_file(
-            "set-flag-when-unmount-is-called",
-            JS_FIXTURES_DIR / "set-flag-when-unmount-is-called.js",
-        ),
-        "SomeComponent",
-    )
-
-    set_current_component = reactpy.Ref(None)
-
-    @reactpy.component
-    def ShowCurrentComponent():
-        current_component, set_current_component.current = reactpy.hooks.use_state(
-            lambda: SomeComponent({"id": "some-component", "text": "initial component"})
-        )
-        return current_component
-
-    await display.show(ShowCurrentComponent)
-
-    await display.page.wait_for_selector("#some-component", state="attached")
-
-    set_current_component.current(
-        reactpy.html.h1({"id": "some-other-component"}, "some other component")
-    )
-
-    # the new component has been displayed
-    await display.page.wait_for_selector("#some-other-component", state="attached")
-
-    # the unmount callback for the old component was called
-    await display.page.wait_for_selector("#unmount-flag", state="attached")
-
-
-async def test_module_from_url(browser):
-    app = Sanic("test_module_from_url")
-
-    # instead of directing the URL to a CDN, we just point it to this static file
-    app.static(
-        "/simple-button.js",
-        str(JS_FIXTURES_DIR / "simple-button.js"),
-        content_type="text/javascript",
-    )
-
-    SimpleButton = reactpy.web.export(
-        reactpy.web.module_from_url("/simple-button.js", resolve_exports=False),
-        "SimpleButton",
-    )
-
-    @reactpy.component
-    def ShowSimpleButton():
-        return SimpleButton({"id": "my-button"})
-
-    async with BackendFixture(app=app, implementation=sanic_implementation) as server:
-        async with DisplayFixture(server, browser) as display:
-            await display.show(ShowSimpleButton)
-
-            await display.page.wait_for_selector("#my-button")
-
-
-def test_module_from_template_where_template_does_not_exist():
-    with pytest.raises(ValueError, match="No template for 'does-not-exist.js'"):
-        reactpy.web.module_from_template("does-not-exist", "something.js")
-
-
-async def test_module_from_template(display: DisplayFixture):
-    victory = reactpy.web.module_from_template("react@18.2.0", "victory-bar@35.4.0")
-
-    assert "react@18.2.0" in victory.file.read_text()
-    VictoryBar = reactpy.web.export(victory, "VictoryBar")
-    await display.show(VictoryBar)
-
-    await display.page.wait_for_selector(".VictoryContainer")
-
-
-async def test_module_from_file(display: DisplayFixture):
-    SimpleButton = reactpy.web.export(
-        reactpy.web.module_from_file(
-            "simple-button", JS_FIXTURES_DIR / "simple-button.js"
-        ),
-        "SimpleButton",
-    )
-
-    is_clicked = reactpy.Ref(False)
-
-    @reactpy.component
-    def ShowSimpleButton():
-        return SimpleButton(
-            {"id": "my-button", "onClick": lambda event: is_clicked.set_current(True)}
-        )
-
-    await display.show(ShowSimpleButton)
-
-    button = await display.page.wait_for_selector("#my-button")
-    await button.click()
-    await poll(lambda: is_clicked.current).until_is(True)
-
-
-def test_module_from_file_source_conflict(tmp_path):
-    first_file = tmp_path / "first.js"
-
-    with pytest.raises(FileNotFoundError, match="does not exist"):
-        reactpy.web.module_from_file("temp", first_file)
-
-    first_file.touch()
-
-    reactpy.web.module_from_file("temp", first_file)
-
-    second_file = tmp_path / "second.js"
-    second_file.touch()
-
-    # ok, same content
-    reactpy.web.module_from_file("temp", second_file)
-
-    third_file = tmp_path / "third.js"
-    third_file.write_text("something-different")
-
-    with assert_reactpy_did_log(r"Existing web module .* will be replaced with"):
-        reactpy.web.module_from_file("temp", third_file)
-
-
-def test_web_module_from_file_symlink(tmp_path):
-    file = tmp_path / "temp.js"
-    file.touch()
-
-    module = reactpy.web.module_from_file("temp", file, symlink=True)
-
-    assert module.file.resolve().read_text() == ""
-
-    file.write_text("hello world!")
-
-    assert module.file.resolve().read_text() == "hello world!"
-
-
-def test_web_module_from_file_symlink_twice(tmp_path):
-    file_1 = tmp_path / "temp_1.js"
-    file_1.touch()
-
-    reactpy.web.module_from_file("temp", file_1, symlink=True)
-
-    with assert_reactpy_did_not_log(r"Existing web module .* will be replaced with"):
-        reactpy.web.module_from_file("temp", file_1, symlink=True)
-
-    file_2 = tmp_path / "temp_2.js"
-    file_2.write_text("something")
-
-    with assert_reactpy_did_log(r"Existing web module .* will be replaced with"):
-        reactpy.web.module_from_file("temp", file_2, symlink=True)
-
-
-def test_web_module_from_file_replace_existing(tmp_path):
-    file1 = tmp_path / "temp1.js"
-    file1.touch()
-
-    reactpy.web.module_from_file("temp", file1)
-
-    file2 = tmp_path / "temp2.js"
-    file2.write_text("something")
-
-    with assert_reactpy_did_log(r"Existing web module .* will be replaced with"):
-        reactpy.web.module_from_file("temp", file2)
-
-
-def test_module_missing_exports():
-    module = WebModule("test", NAME_SOURCE, None, {"a", "b", "c"}, None, False)
-
-    with pytest.raises(ValueError, match="does not export 'x'"):
-        reactpy.web.export(module, "x")
-
-    with pytest.raises(ValueError, match=r"does not export \['x', 'y'\]"):
-        reactpy.web.export(module, ["x", "y"])
-
-
-async def test_module_exports_multiple_components(display: DisplayFixture):
-    Header1, Header2 = reactpy.web.export(
-        reactpy.web.module_from_file(
-            "exports-two-components", JS_FIXTURES_DIR / "exports-two-components.js"
-        ),
-        ["Header1", "Header2"],
-    )
-
-    await display.show(lambda: Header1({"id": "my-h1"}, "My Header 1"))
-
-    await display.page.wait_for_selector("#my-h1", state="attached")
-
-    await display.show(lambda: Header2({"id": "my-h2"}, "My Header 2"))
-
-    await display.page.wait_for_selector("#my-h2", state="attached")
-
-
-async def test_imported_components_can_render_children(display: DisplayFixture):
-    module = reactpy.web.module_from_file(
-        "component-can-have-child", JS_FIXTURES_DIR / "component-can-have-child.js"
-    )
-    Parent, Child = reactpy.web.export(module, ["Parent", "Child"])
-
-    await display.show(
-        lambda: Parent(
-            Child({"index": 1}),
-            Child({"index": 2}),
-            Child({"index": 3}),
-        )
-    )
-
-    parent = await display.page.wait_for_selector("#the-parent", state="attached")
-    children = await parent.query_selector_all("li")
-
-    assert len(children) == 3
-
-    for index, child in enumerate(children):
-        assert (await child.get_attribute("id")) == f"child-{index + 1}"
-
-
-def test_module_from_string():
-    reactpy.web.module_from_string("temp", "old")
-    with assert_reactpy_did_log(r"Existing web module .* will be replaced with"):
-        reactpy.web.module_from_string("temp", "new")
diff --git a/src/py/reactpy/tests/test_web/test_utils.py b/src/py/reactpy/tests/test_web/test_utils.py
deleted file mode 100644
index 14c3e2e13..000000000
--- a/src/py/reactpy/tests/test_web/test_utils.py
+++ /dev/null
@@ -1,152 +0,0 @@
-from pathlib import Path
-
-import pytest
-import responses
-
-from reactpy.testing import assert_reactpy_did_log
-from reactpy.web.utils import (
-    module_name_suffix,
-    resolve_module_exports_from_file,
-    resolve_module_exports_from_source,
-    resolve_module_exports_from_url,
-)
-
-JS_FIXTURES_DIR = Path(__file__).parent / "js_fixtures"
-
-
-@pytest.mark.parametrize(
-    "name, suffix",
-    [
-        ("module", ".js"),
-        ("module.ext", ".ext"),
-        ("module@x.y.z", ".js"),
-        ("module.ext@x.y.z", ".ext"),
-        ("@namespace/module", ".js"),
-        ("@namespace/module.ext", ".ext"),
-        ("@namespace/module@x.y.z", ".js"),
-        ("@namespace/module.ext@x.y.z", ".ext"),
-    ],
-)
-def test_module_name_suffix(name, suffix):
-    assert module_name_suffix(name) == suffix
-
-
-@responses.activate
-def test_resolve_module_exports_from_file(caplog):
-    responses.add(
-        responses.GET,
-        "https://some.external.url",
-        body="export {something as ExternalUrl}",
-    )
-    path = JS_FIXTURES_DIR / "export-resolution" / "index.js"
-    assert resolve_module_exports_from_file(path, 4) == {
-        "Index",
-        "One",
-        "Two",
-        "ExternalUrl",
-    }
-
-
-def test_resolve_module_exports_from_file_log_on_max_depth(caplog):
-    path = JS_FIXTURES_DIR / "export-resolution" / "index.js"
-    assert resolve_module_exports_from_file(path, 0) == set()
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.endswith("max depth reached")
-
-    caplog.records.clear()
-
-    assert resolve_module_exports_from_file(path, 2) == {"Index", "One"}
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.endswith("max depth reached")
-
-
-def test_resolve_module_exports_from_file_log_on_unknown_file_location(
-    caplog, tmp_path
-):
-    file = tmp_path / "some.js"
-    file.write_text("export * from './does-not-exist.js';")
-    resolve_module_exports_from_file(file, 2)
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.startswith(
-        "Did not resolve exports for unknown file"
-    )
-
-
-@responses.activate
-def test_resolve_module_exports_from_url():
-    responses.add(
-        responses.GET,
-        "https://some.url/first.js",
-        body="export const First = 1; export * from 'https://another.url/path/second.js';",
-    )
-    responses.add(
-        responses.GET,
-        "https://another.url/path/second.js",
-        body="export const Second = 2; export * from '../third.js';",
-    )
-    responses.add(
-        responses.GET,
-        "https://another.url/third.js",
-        body="export const Third = 3; export * from './fourth.js';",
-    )
-    responses.add(
-        responses.GET,
-        "https://another.url/fourth.js",
-        body="export const Fourth = 4;",
-    )
-
-    assert resolve_module_exports_from_url("https://some.url/first.js", 4) == {
-        "First",
-        "Second",
-        "Third",
-        "Fourth",
-    }
-
-
-def test_resolve_module_exports_from_url_log_on_max_depth(caplog):
-    assert resolve_module_exports_from_url("https://some.url", 0) == set()
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.endswith("max depth reached")
-
-
-def test_resolve_module_exports_from_url_log_on_bad_response(caplog):
-    assert resolve_module_exports_from_url("https://some.url", 1) == set()
-    assert len(caplog.records) == 1
-    assert caplog.records[0].message.startswith("Did not resolve exports for url")
-
-
-@pytest.mark.parametrize(
-    "text",
-    [
-        "export default expression;",
-        "export default function (…) { … } // also class, function*",
-        "export default function name1(…) { … } // also class, function*",
-        "export { something as default };",
-        "export { default } from 'some-source';",
-        "export { something as default } from 'some-source';",
-    ],
-)
-def test_resolve_module_default_exports_from_source(text):
-    names, references = resolve_module_exports_from_source(text, exclude_default=False)
-    assert names == {"default"} and not references
-
-
-def test_resolve_module_exports_from_source():
-    fixture_file = JS_FIXTURES_DIR / "exports-syntax.js"
-    names, references = resolve_module_exports_from_source(
-        fixture_file.read_text(), exclude_default=False
-    )
-    assert names == (
-        {f"name{i}" for i in range(1, 21)}
-        | {
-            "functionName",
-            "ClassName",
-        }
-    ) and references == {"https://source1.com", "https://source2.com"}
-
-
-def test_log_on_unknown_export_type():
-    with assert_reactpy_did_log(match_message="Unknown export type "):
-        assert resolve_module_exports_from_source(
-            "export something unknown;", exclude_default=False
-        ) == (set(), set())
diff --git a/src/py/reactpy/tests/test_widgets.py b/src/py/reactpy/tests/test_widgets.py
deleted file mode 100644
index d786fded0..000000000
--- a/src/py/reactpy/tests/test_widgets.py
+++ /dev/null
@@ -1,141 +0,0 @@
-from base64 import b64encode
-from pathlib import Path
-
-import reactpy
-from reactpy.testing import DisplayFixture, poll
-from tests.tooling.common import DEFAULT_TYPE_DELAY
-
-HERE = Path(__file__).parent
-
-
-IMAGE_SRC_BYTES = b"""
-<svg width="400" height="110" xmlns="http://www.w3.org/2000/svg">
-    <rect width="300" height="100" style="fill:rgb(0,0,255);" />
-</svg>
-"""
-BASE64_IMAGE_SRC = b64encode(IMAGE_SRC_BYTES).decode()
-
-
-async def test_image_from_string(display: DisplayFixture):
-    src = IMAGE_SRC_BYTES.decode()
-    await display.show(lambda: reactpy.widgets.image("svg", src, {"id": "a-circle-1"}))
-    client_img = await display.page.wait_for_selector("#a-circle-1")
-    assert BASE64_IMAGE_SRC in (await client_img.get_attribute("src"))
-
-
-async def test_image_from_bytes(display: DisplayFixture):
-    src = IMAGE_SRC_BYTES
-    await display.show(lambda: reactpy.widgets.image("svg", src, {"id": "a-circle-1"}))
-    client_img = await display.page.wait_for_selector("#a-circle-1")
-    assert BASE64_IMAGE_SRC in (await client_img.get_attribute("src"))
-
-
-async def test_use_linked_inputs(display: DisplayFixture):
-    @reactpy.component
-    def SomeComponent():
-        i_1, i_2 = reactpy.widgets.use_linked_inputs([{"id": "i_1"}, {"id": "i_2"}])
-        return reactpy.html.div(i_1, i_2)
-
-    await display.show(SomeComponent)
-
-    input_1 = await display.page.wait_for_selector("#i_1")
-    input_2 = await display.page.wait_for_selector("#i_2")
-
-    await input_1.type("hello", delay=DEFAULT_TYPE_DELAY)
-
-    assert (await input_1.evaluate("e => e.value")) == "hello"
-    assert (await input_2.evaluate("e => e.value")) == "hello"
-
-    await input_2.focus()
-    await input_2.type(" world", delay=DEFAULT_TYPE_DELAY)
-
-    assert (await input_1.evaluate("e => e.value")) == "hello world"
-    assert (await input_2.evaluate("e => e.value")) == "hello world"
-
-
-async def test_use_linked_inputs_on_change(display: DisplayFixture):
-    value = reactpy.Ref(None)
-
-    @reactpy.component
-    def SomeComponent():
-        i_1, i_2 = reactpy.widgets.use_linked_inputs(
-            [{"id": "i_1"}, {"id": "i_2"}],
-            on_change=value.set_current,
-        )
-        return reactpy.html.div(i_1, i_2)
-
-    await display.show(SomeComponent)
-
-    input_1 = await display.page.wait_for_selector("#i_1")
-    input_2 = await display.page.wait_for_selector("#i_2")
-
-    await input_1.type("hello", delay=DEFAULT_TYPE_DELAY)
-
-    poll_value = poll(lambda: value.current)
-
-    await poll_value.until_equals("hello")
-
-    await input_2.focus()
-    await input_2.type(" world", delay=DEFAULT_TYPE_DELAY)
-
-    await poll_value.until_equals("hello world")
-
-
-async def test_use_linked_inputs_on_change_with_cast(display: DisplayFixture):
-    value = reactpy.Ref(None)
-
-    @reactpy.component
-    def SomeComponent():
-        i_1, i_2 = reactpy.widgets.use_linked_inputs(
-            [{"id": "i_1"}, {"id": "i_2"}], on_change=value.set_current, cast=int
-        )
-        return reactpy.html.div(i_1, i_2)
-
-    await display.show(SomeComponent)
-
-    input_1 = await display.page.wait_for_selector("#i_1")
-    input_2 = await display.page.wait_for_selector("#i_2")
-
-    await input_1.type("1")
-
-    poll_value = poll(lambda: value.current)
-
-    await poll_value.until_equals(1)
-
-    await input_2.focus()
-    await input_2.type("2")
-
-    await poll_value.until_equals(12)
-
-
-async def test_use_linked_inputs_ignore_empty(display: DisplayFixture):
-    value = reactpy.Ref(None)
-
-    @reactpy.component
-    def SomeComponent():
-        i_1, i_2 = reactpy.widgets.use_linked_inputs(
-            [{"id": "i_1"}, {"id": "i_2"}],
-            on_change=value.set_current,
-            ignore_empty=True,
-        )
-        return reactpy.html.div(i_1, i_2)
-
-    await display.show(SomeComponent)
-
-    input_1 = await display.page.wait_for_selector("#i_1")
-    input_2 = await display.page.wait_for_selector("#i_2")
-
-    await input_1.type("1")
-
-    poll_value = poll(lambda: value.current)
-
-    await poll_value.until_equals("1")
-
-    await input_2.focus()
-    await input_2.press("Backspace")
-
-    await poll_value.until_equals("1")
-
-    await input_2.type("2")
-
-    await poll_value.until_equals("2")
diff --git a/src/py/reactpy/tests/tooling/__init__.py b/src/py/reactpy/tests/tooling/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/py/reactpy/tests/tooling/asserts.py b/src/py/reactpy/tests/tooling/asserts.py
deleted file mode 100644
index ac84aa0ba..000000000
--- a/src/py/reactpy/tests/tooling/asserts.py
+++ /dev/null
@@ -1,5 +0,0 @@
-def assert_same_items(left, right):
-    """Check that two unordered sequences are equal (only works if reprs are equal)"""
-    sorted_left = sorted(left, key=repr)
-    sorted_right = sorted(right, key=repr)
-    assert sorted_left == sorted_right
diff --git a/src/py/reactpy/tests/tooling/common.py b/src/py/reactpy/tests/tooling/common.py
deleted file mode 100644
index c0191bd4e..000000000
--- a/src/py/reactpy/tests/tooling/common.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from typing import Any
-
-from reactpy.core.types import LayoutEventMessage, LayoutUpdateMessage
-
-# see: https://github.com/microsoft/playwright-python/issues/1614
-DEFAULT_TYPE_DELAY = 100  # milliseconds
-
-
-def event_message(target: str, *data: Any) -> LayoutEventMessage:
-    return {"type": "layout-event", "target": target, "data": data}
-
-
-def update_message(path: str, model: Any) -> LayoutUpdateMessage:
-    return {"type": "layout-update", "path": path, "model": model}
diff --git a/src/py/reactpy/tests/tooling/hooks.py b/src/py/reactpy/tests/tooling/hooks.py
deleted file mode 100644
index 1926a93bc..000000000
--- a/src/py/reactpy/tests/tooling/hooks.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from reactpy.core.hooks import current_hook, use_state
-
-
-def use_force_render():
-    return current_hook().schedule_render
-
-
-def use_toggle(init=False):
-    state, set_state = use_state(init)
-    return state, lambda: set_state(lambda old: not old)
-
-
-def use_counter(initial_value):
-    state, set_state = use_state(initial_value)
-    return state, lambda: set_state(lambda old: old + 1)
diff --git a/src/py/reactpy/tests/tooling/loop.py b/src/py/reactpy/tests/tooling/loop.py
deleted file mode 100644
index f9e100981..000000000
--- a/src/py/reactpy/tests/tooling/loop.py
+++ /dev/null
@@ -1,91 +0,0 @@
-import asyncio
-import threading
-import time
-from asyncio import wait_for
-from collections.abc import Iterator
-from contextlib import contextmanager
-
-from reactpy.config import REACTPY_TESTING_DEFAULT_TIMEOUT
-
-
-@contextmanager
-def open_event_loop(as_current: bool = True) -> Iterator[asyncio.AbstractEventLoop]:
-    """Open a new event loop and cleanly stop it
-
-    Args:
-        as_current: whether to make this loop the current loop in this thread
-    """
-    loop = asyncio.new_event_loop()
-    try:
-        if as_current:
-            asyncio.set_event_loop(loop)
-        loop.set_debug(True)
-        yield loop
-    finally:
-        try:
-            _cancel_all_tasks(loop, as_current)
-            if as_current:
-                loop.run_until_complete(
-                    wait_for(
-                        loop.shutdown_asyncgens(),
-                        REACTPY_TESTING_DEFAULT_TIMEOUT.current,
-                    )
-                )
-                loop.run_until_complete(
-                    wait_for(
-                        loop.shutdown_default_executor(),
-                        REACTPY_TESTING_DEFAULT_TIMEOUT.current,
-                    )
-                )
-        finally:
-            if as_current:
-                asyncio.set_event_loop(None)
-            start = time.time()
-            while loop.is_running():
-                if (time.time() - start) > REACTPY_TESTING_DEFAULT_TIMEOUT.current:
-                    msg = f"Failed to stop loop after {REACTPY_TESTING_DEFAULT_TIMEOUT.current} seconds"
-                    raise TimeoutError(msg)
-                time.sleep(0.1)
-            loop.close()
-
-
-def _cancel_all_tasks(loop: asyncio.AbstractEventLoop, is_current: bool) -> None:
-    to_cancel = asyncio.all_tasks(loop)
-    if not to_cancel:
-        return
-
-    done = threading.Event()
-    count = len(to_cancel)
-
-    def one_task_finished(future):
-        nonlocal count
-        count -= 1
-        if count == 0:
-            done.set()
-
-    for task in to_cancel:
-        loop.call_soon_threadsafe(task.cancel)
-        task.add_done_callback(one_task_finished)
-
-    if is_current:
-        loop.run_until_complete(
-            wait_for(
-                asyncio.gather(*to_cancel, return_exceptions=True),
-                REACTPY_TESTING_DEFAULT_TIMEOUT.current,
-            )
-        )
-    elif not done.wait(timeout=3):  # user was responsible for cancelling all tasks
-        msg = "Could not stop event loop in time"
-        raise TimeoutError(msg)
-
-    for task in to_cancel:
-        if task.cancelled():
-            continue
-        if task.exception() is not None:
-            loop.call_exception_handler(
-                {
-                    "message": "unhandled exception during event loop shutdown",
-                    "exception": task.exception(),
-                    "task": task,
-                }
-            )

From fb84879c9b2504a56cfd2202807091ae1fc91b63 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 14 Mar 2025 22:07:23 -0700
Subject: [PATCH 48/49] ReactPy V2 changes

---
 .../asgi_component.py                         |    6 +
 .../asgi_configure_jinja.py                   |   20 +
 .../asgi_middleware.py                        |   22 +
 .../asgi_template.html                        |   12 +
 .../examples/creating_a_react_app/asgi_csr.py |    7 +
 .../creating_a_react_app/asgi_csr_root.py     |    6 +
 .../examples/creating_a_react_app/asgi_ssr.py |   10 +
 .../python/quick_start/adding_styles.py       |    4 -
 .../simple_button_event.py                    |   22 -
 .../configure_example.py                      |    6 -
 .../thinking_in_react/set_state_props.py      |   32 -
 .../{css => }/quick_start/adding_styles.css   |    0
 docs/examples/quick_start/adding_styles.py    |    4 +
 .../quick_start/conditional_rendering.py      |    0
 .../conditional_rendering_logical_and.py      |    0
 .../conditional_rendering_ternary.py          |    0
 .../creating_and_nesting_components.py        |    7 -
 .../{css => }/quick_start/displaying_data.css |    0
 .../quick_start/displaying_data.py            |   14 +-
 .../{python => }/quick_start/my_app.py        |    0
 .../{python => }/quick_start/my_button.py     |    0
 .../quick_start/rendering_lists.py            |    7 -
 .../quick_start/rendering_lists_list_items.py |    0
 .../quick_start/rendering_lists_products.py   |    0
 .../quick_start/responding_to_events.py       |    2 +-
 .../sharing_data_between_components.css       |    0
 .../sharing_data_between_components.py        |   14 +-
 .../sharing_data_between_components_button.py |    2 +-
 ...ring_data_between_components_move_state.py |    0
 .../sharing_data_between_components_props.py  |    0
 .../quick_start/updating_the_screen.css       |    0
 .../quick_start/updating_the_screen.py        |   14 +-
 .../quick_start/updating_the_screen_event.py  |    2 +-
 .../updating_the_screen_use_state.py          |    0
 .../updating_the_screen_use_state_button.py   |    0
 .../responding_to_events/simple_button.py     |    0
 .../simple_button_event.css                   |    0
 .../simple_button_event.py                    |    9 +
 .../add_inverse_data_flow.css                 |    0
 .../add_inverse_data_flow.py                  |   16 +-
 .../build_a_static_version_in_react.css       |    0
 .../build_a_static_version_in_react.py        |   12 -
 .../thinking_in_react/error_example.py        |    0
 .../thinking_in_react/event_handlers.py       |    5 +-
 .../identify_where_your_state_should_live.css |    0
 .../identify_where_your_state_should_live.py  |   12 -
 .../thinking_in_react/set_state_props.py      |   20 +
 .../start_with_the_mockup.json                |    0
 .../thinking_in_react/use_state.py            |    0
 .../use_state_with_components.py              |    0
 .../setup_for_the_tutorial.css                |    0
 .../setup_for_the_tutorial.py                 |    3 +-
 .../tutorial_tic_tac_toe/tic_tac_toe.css      |    0
 .../tutorial_tic_tac_toe/tic_tac_toe.py       |   20 +-
 docs/mkdocs.yml                               |   12 +-
 docs/overrides/home.html                      |    2 +-
 .../learn/add-react-to-an-existing-project.md |  179 +-
 docs/src/learn/creating-a-react-app.md        |   95 +
 docs/src/learn/installation.md                |    4 +-
 docs/src/learn/quick-start.md                 |   56 +-
 docs/src/learn/responding-to-events.md        |  432 +--
 docs/src/learn/start-a-new-react-project.md   |  155 -
 docs/src/learn/thinking-in-react.md           |   30 +-
 docs/src/learn/tutorial-tic-tac-toe.md        | 3200 ++++++++---------
 tasks.py                                      |  426 ---
 65 files changed, 2173 insertions(+), 2728 deletions(-)
 create mode 100644 docs/examples/add_react_to_an_existing_project/asgi_component.py
 create mode 100644 docs/examples/add_react_to_an_existing_project/asgi_configure_jinja.py
 create mode 100644 docs/examples/add_react_to_an_existing_project/asgi_middleware.py
 create mode 100644 docs/examples/add_react_to_an_existing_project/asgi_template.html
 create mode 100644 docs/examples/creating_a_react_app/asgi_csr.py
 create mode 100644 docs/examples/creating_a_react_app/asgi_csr_root.py
 create mode 100644 docs/examples/creating_a_react_app/asgi_ssr.py
 delete mode 100644 docs/examples/python/quick_start/adding_styles.py
 delete mode 100644 docs/examples/python/responding_to_events/simple_button_event.py
 delete mode 100644 docs/examples/python/start_a_new_react_project/configure_example.py
 delete mode 100644 docs/examples/python/thinking_in_react/set_state_props.py
 rename docs/examples/{css => }/quick_start/adding_styles.css (100%)
 create mode 100644 docs/examples/quick_start/adding_styles.py
 rename docs/examples/{python => }/quick_start/conditional_rendering.py (100%)
 rename docs/examples/{python => }/quick_start/conditional_rendering_logical_and.py (100%)
 rename docs/examples/{python => }/quick_start/conditional_rendering_ternary.py (100%)
 rename docs/examples/{python => }/quick_start/creating_and_nesting_components.py (73%)
 rename docs/examples/{css => }/quick_start/displaying_data.css (100%)
 rename docs/examples/{python => }/quick_start/displaying_data.py (66%)
 rename docs/examples/{python => }/quick_start/my_app.py (100%)
 rename docs/examples/{python => }/quick_start/my_button.py (100%)
 rename docs/examples/{python => }/quick_start/rendering_lists.py (86%)
 rename docs/examples/{python => }/quick_start/rendering_lists_list_items.py (100%)
 rename docs/examples/{python => }/quick_start/rendering_lists_products.py (100%)
 rename docs/examples/{python => }/quick_start/responding_to_events.py (83%)
 rename docs/examples/{css => }/quick_start/sharing_data_between_components.css (100%)
 rename docs/examples/{python => }/quick_start/sharing_data_between_components.py (55%)
 rename docs/examples/{python => }/quick_start/sharing_data_between_components_button.py (54%)
 rename docs/examples/{python => }/quick_start/sharing_data_between_components_move_state.py (100%)
 rename docs/examples/{python => }/quick_start/sharing_data_between_components_props.py (100%)
 rename docs/examples/{css => }/quick_start/updating_the_screen.css (100%)
 rename docs/examples/{python => }/quick_start/updating_the_screen.py (51%)
 rename docs/examples/{python => }/quick_start/updating_the_screen_event.py (70%)
 rename docs/examples/{python => }/quick_start/updating_the_screen_use_state.py (100%)
 rename docs/examples/{python => }/quick_start/updating_the_screen_use_state_button.py (100%)
 rename docs/examples/{python => }/responding_to_events/simple_button.py (100%)
 rename docs/examples/{css => }/responding_to_events/simple_button_event.css (100%)
 create mode 100644 docs/examples/responding_to_events/simple_button_event.py
 rename docs/examples/{css => }/thinking_in_react/add_inverse_data_flow.css (100%)
 rename docs/examples/{python => }/thinking_in_react/add_inverse_data_flow.py (88%)
 rename docs/examples/{css => }/thinking_in_react/build_a_static_version_in_react.css (100%)
 rename docs/examples/{python => }/thinking_in_react/build_a_static_version_in_react.py (88%)
 rename docs/examples/{python => }/thinking_in_react/error_example.py (100%)
 rename docs/examples/{python => }/thinking_in_react/event_handlers.py (60%)
 rename docs/examples/{css => }/thinking_in_react/identify_where_your_state_should_live.css (100%)
 rename docs/examples/{python => }/thinking_in_react/identify_where_your_state_should_live.py (91%)
 create mode 100644 docs/examples/thinking_in_react/set_state_props.py
 rename docs/examples/{json => }/thinking_in_react/start_with_the_mockup.json (100%)
 rename docs/examples/{python => }/thinking_in_react/use_state.py (100%)
 rename docs/examples/{python => }/thinking_in_react/use_state_with_components.py (100%)
 rename docs/examples/{css => }/tutorial_tic_tac_toe/setup_for_the_tutorial.css (100%)
 rename docs/examples/{python => }/tutorial_tic_tac_toe/setup_for_the_tutorial.py (56%)
 rename docs/examples/{css => }/tutorial_tic_tac_toe/tic_tac_toe.css (100%)
 rename docs/examples/{python => }/tutorial_tic_tac_toe/tic_tac_toe.py (87%)
 create mode 100644 docs/src/learn/creating-a-react-app.md
 delete mode 100644 docs/src/learn/start-a-new-react-project.md
 delete mode 100644 tasks.py

diff --git a/docs/examples/add_react_to_an_existing_project/asgi_component.py b/docs/examples/add_react_to_an_existing_project/asgi_component.py
new file mode 100644
index 000000000..ed1a6b25b
--- /dev/null
+++ b/docs/examples/add_react_to_an_existing_project/asgi_component.py
@@ -0,0 +1,6 @@
+from reactpy import component, html
+
+
+@component
+def hello_world():
+    return html.div("Hello World")
diff --git a/docs/examples/add_react_to_an_existing_project/asgi_configure_jinja.py b/docs/examples/add_react_to_an_existing_project/asgi_configure_jinja.py
new file mode 100644
index 000000000..e22212e75
--- /dev/null
+++ b/docs/examples/add_react_to_an_existing_project/asgi_configure_jinja.py
@@ -0,0 +1,20 @@
+from jinja2 import Environment, FileSystemLoader
+from starlette.applications import Starlette
+from starlette.routing import Route
+from starlette.templating import Jinja2Templates
+
+from reactpy.templatetags import ReactPyJinja
+
+jinja_templates = Jinja2Templates(
+    env=Environment(
+        loader=FileSystemLoader("path/to/my_templates"),
+        extensions=[ReactPyJinja],
+    )
+)
+
+
+async def example_webpage(request):
+    return jinja_templates.TemplateResponse(request, "my_template.html")
+
+
+starlette_app = Starlette(routes=[Route("/", example_webpage)])
diff --git a/docs/examples/add_react_to_an_existing_project/asgi_middleware.py b/docs/examples/add_react_to_an_existing_project/asgi_middleware.py
new file mode 100644
index 000000000..2e397be02
--- /dev/null
+++ b/docs/examples/add_react_to_an_existing_project/asgi_middleware.py
@@ -0,0 +1,22 @@
+from jinja2 import Environment, FileSystemLoader
+from starlette.applications import Starlette
+from starlette.routing import Route
+from starlette.templating import Jinja2Templates
+
+from reactpy.executors.asgi import ReactPyMiddleware
+from reactpy.templatetags import ReactPyJinja
+
+jinja_templates = Jinja2Templates(
+    env=Environment(
+        loader=FileSystemLoader("path/to/my_templates"),
+        extensions=[ReactPyJinja],
+    )
+)
+
+
+async def example_webpage(request):
+    return jinja_templates.TemplateResponse(request, "my_template.html")
+
+
+starlette_app = Starlette(routes=[Route("/", example_webpage)])
+reactpy_app = ReactPyMiddleware(starlette_app, ["my_components.hello_world"])
diff --git a/docs/examples/add_react_to_an_existing_project/asgi_template.html b/docs/examples/add_react_to_an_existing_project/asgi_template.html
new file mode 100644
index 000000000..4fe678b8b
--- /dev/null
+++ b/docs/examples/add_react_to_an_existing_project/asgi_template.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+  <title>ReactPy in Django</title>
+</head>
+
+<body>
+  {% component "my_components.hello_world" %}
+</body>
+
+</html>
diff --git a/docs/examples/creating_a_react_app/asgi_csr.py b/docs/examples/creating_a_react_app/asgi_csr.py
new file mode 100644
index 000000000..506930d33
--- /dev/null
+++ b/docs/examples/creating_a_react_app/asgi_csr.py
@@ -0,0 +1,7 @@
+from pathlib import Path
+
+from reactpy.executors.asgi import ReactPyCsr
+
+my_app = ReactPyCsr(
+    Path(__file__).parent / "components" / "root.py", initial="Loading..."
+)
diff --git a/docs/examples/creating_a_react_app/asgi_csr_root.py b/docs/examples/creating_a_react_app/asgi_csr_root.py
new file mode 100644
index 000000000..8a6c17c55
--- /dev/null
+++ b/docs/examples/creating_a_react_app/asgi_csr_root.py
@@ -0,0 +1,6 @@
+from reactpy import component, html
+
+
+@component
+def root():
+    return html.div("Hello World")
diff --git a/docs/examples/creating_a_react_app/asgi_ssr.py b/docs/examples/creating_a_react_app/asgi_ssr.py
new file mode 100644
index 000000000..d2e9b72ff
--- /dev/null
+++ b/docs/examples/creating_a_react_app/asgi_ssr.py
@@ -0,0 +1,10 @@
+from reactpy import component, html
+from reactpy.executors.asgi import ReactPy
+
+
+@component
+def hello_world():
+    return html.div("Hello World")
+
+
+my_app = ReactPy(hello_world)
diff --git a/docs/examples/python/quick_start/adding_styles.py b/docs/examples/python/quick_start/adding_styles.py
deleted file mode 100644
index cdc9a7b99..000000000
--- a/docs/examples/python/quick_start/adding_styles.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from reactpy import html
-
-# start
-html.img({"class_name": "avatar"})
diff --git a/docs/examples/python/responding_to_events/simple_button_event.py b/docs/examples/python/responding_to_events/simple_button_event.py
deleted file mode 100644
index 292f3531c..000000000
--- a/docs/examples/python/responding_to_events/simple_button_event.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from reactpy import component, html
-
-
-@component
-def button():
-    def handle_click(event):
-        print("You clicked me!")
-
-    return html.button({"on_click": handle_click}, "Click me")
-
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), button())
-
-    run(styled_app)
diff --git a/docs/examples/python/start_a_new_react_project/configure_example.py b/docs/examples/python/start_a_new_react_project/configure_example.py
deleted file mode 100644
index c04a0e54d..000000000
--- a/docs/examples/python/start_a_new_react_project/configure_example.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from fastapi import FastAPI
-
-from reactpy.backend.fastapi import configure
-
-asgi_app = FastAPI()
-configure(asgi_app)
diff --git a/docs/examples/python/thinking_in_react/set_state_props.py b/docs/examples/python/thinking_in_react/set_state_props.py
deleted file mode 100644
index bbd601416..000000000
--- a/docs/examples/python/thinking_in_react/set_state_props.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# function filterable_product_table({ products }) {
-#   const [filter_text, set_filter_text] = use_state('');
-#   const [in_stock_only, set_in_stock_only] = use_state(false);
-
-#   return (
-#     <div>
-#       <search_bar
-#         filter_text={filter_text}
-#         in_stock_only={in_stock_only}
-#         on_filter_text_change={set_filter_text}
-#         on_in_stock_only_change={set_in_stock_only} />
-
-from reactpy import component, hooks, html
-
-
-def search_bar(**_kws):
-    ...
-
-# start
-@component
-def filterable_product_table(products):
-    filter_text, set_filter_text = hooks.use_state("")
-    in_stock_only, set_in_stock_only = hooks.use_state(False)
-
-    return html.div(
-        search_bar(
-            filter_text=filter_text,
-            in_stock_only=in_stock_only,
-            set_filter_text=set_filter_text,
-            set_in_stock_only=set_in_stock_only
-        )
-    )
diff --git a/docs/examples/css/quick_start/adding_styles.css b/docs/examples/quick_start/adding_styles.css
similarity index 100%
rename from docs/examples/css/quick_start/adding_styles.css
rename to docs/examples/quick_start/adding_styles.css
diff --git a/docs/examples/quick_start/adding_styles.py b/docs/examples/quick_start/adding_styles.py
new file mode 100644
index 000000000..8e1c7931b
--- /dev/null
+++ b/docs/examples/quick_start/adding_styles.py
@@ -0,0 +1,4 @@
+from reactpy import html
+
+# start
+html.img({"className": "avatar"})
diff --git a/docs/examples/python/quick_start/conditional_rendering.py b/docs/examples/quick_start/conditional_rendering.py
similarity index 100%
rename from docs/examples/python/quick_start/conditional_rendering.py
rename to docs/examples/quick_start/conditional_rendering.py
diff --git a/docs/examples/python/quick_start/conditional_rendering_logical_and.py b/docs/examples/quick_start/conditional_rendering_logical_and.py
similarity index 100%
rename from docs/examples/python/quick_start/conditional_rendering_logical_and.py
rename to docs/examples/quick_start/conditional_rendering_logical_and.py
diff --git a/docs/examples/python/quick_start/conditional_rendering_ternary.py b/docs/examples/quick_start/conditional_rendering_ternary.py
similarity index 100%
rename from docs/examples/python/quick_start/conditional_rendering_ternary.py
rename to docs/examples/quick_start/conditional_rendering_ternary.py
diff --git a/docs/examples/python/quick_start/creating_and_nesting_components.py b/docs/examples/quick_start/creating_and_nesting_components.py
similarity index 73%
rename from docs/examples/python/quick_start/creating_and_nesting_components.py
rename to docs/examples/quick_start/creating_and_nesting_components.py
index 0841e9514..99ff909a2 100644
--- a/docs/examples/python/quick_start/creating_and_nesting_components.py
+++ b/docs/examples/quick_start/creating_and_nesting_components.py
@@ -12,10 +12,3 @@ def my_app():
         html.h1("Welcome to my app"),
         my_button(),
     )
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-
-    run(my_app)
diff --git a/docs/examples/css/quick_start/displaying_data.css b/docs/examples/quick_start/displaying_data.css
similarity index 100%
rename from docs/examples/css/quick_start/displaying_data.css
rename to docs/examples/quick_start/displaying_data.css
diff --git a/docs/examples/python/quick_start/displaying_data.py b/docs/examples/quick_start/displaying_data.py
similarity index 66%
rename from docs/examples/python/quick_start/displaying_data.py
rename to docs/examples/quick_start/displaying_data.py
index 3534fe29d..3edf62674 100644
--- a/docs/examples/python/quick_start/displaying_data.py
+++ b/docs/examples/quick_start/displaying_data.py
@@ -13,7 +13,7 @@ def profile():
         html.h3(user["name"]),
         html.img(
             {
-                "class_name": "avatar",
+                "className": "avatar",
                 "src": user["image_url"],
                 "alt": f"Photo of {user['name']}",
                 "style": {
@@ -23,15 +23,3 @@ def profile():
             }
         ),
     )
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), profile())
-
-    run(styled_app)
diff --git a/docs/examples/python/quick_start/my_app.py b/docs/examples/quick_start/my_app.py
similarity index 100%
rename from docs/examples/python/quick_start/my_app.py
rename to docs/examples/quick_start/my_app.py
diff --git a/docs/examples/python/quick_start/my_button.py b/docs/examples/quick_start/my_button.py
similarity index 100%
rename from docs/examples/python/quick_start/my_button.py
rename to docs/examples/quick_start/my_button.py
diff --git a/docs/examples/python/quick_start/rendering_lists.py b/docs/examples/quick_start/rendering_lists.py
similarity index 86%
rename from docs/examples/python/quick_start/rendering_lists.py
rename to docs/examples/quick_start/rendering_lists.py
index 35ec3e069..be75f8ce2 100644
--- a/docs/examples/python/quick_start/rendering_lists.py
+++ b/docs/examples/quick_start/rendering_lists.py
@@ -21,10 +21,3 @@ def shopping_list():
     ]
 
     return html.ul(list_items)
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-
-    run(shopping_list)
diff --git a/docs/examples/python/quick_start/rendering_lists_list_items.py b/docs/examples/quick_start/rendering_lists_list_items.py
similarity index 100%
rename from docs/examples/python/quick_start/rendering_lists_list_items.py
rename to docs/examples/quick_start/rendering_lists_list_items.py
diff --git a/docs/examples/python/quick_start/rendering_lists_products.py b/docs/examples/quick_start/rendering_lists_products.py
similarity index 100%
rename from docs/examples/python/quick_start/rendering_lists_products.py
rename to docs/examples/quick_start/rendering_lists_products.py
diff --git a/docs/examples/python/quick_start/responding_to_events.py b/docs/examples/quick_start/responding_to_events.py
similarity index 83%
rename from docs/examples/python/quick_start/responding_to_events.py
rename to docs/examples/quick_start/responding_to_events.py
index c893353cf..613f11ca2 100644
--- a/docs/examples/python/quick_start/responding_to_events.py
+++ b/docs/examples/quick_start/responding_to_events.py
@@ -8,6 +8,6 @@ def handle_click(event):
         print("You clicked me!")
 
     return html.button(
-        {"on_click": handle_click},
+        {"onClick": handle_click},
         "Click me",
     )
diff --git a/docs/examples/css/quick_start/sharing_data_between_components.css b/docs/examples/quick_start/sharing_data_between_components.css
similarity index 100%
rename from docs/examples/css/quick_start/sharing_data_between_components.css
rename to docs/examples/quick_start/sharing_data_between_components.css
diff --git a/docs/examples/python/quick_start/sharing_data_between_components.py b/docs/examples/quick_start/sharing_data_between_components.py
similarity index 55%
rename from docs/examples/python/quick_start/sharing_data_between_components.py
rename to docs/examples/quick_start/sharing_data_between_components.py
index b256e6ecc..f781bca9b 100644
--- a/docs/examples/python/quick_start/sharing_data_between_components.py
+++ b/docs/examples/quick_start/sharing_data_between_components.py
@@ -17,16 +17,4 @@ def handle_click(event):
 
 @component
 def my_button(count, on_click):
-    return html.button({"on_click": on_click}, f"Clicked {count} times")
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), my_app())
-
-    run(styled_app)
+    return html.button({"onClick": on_click}, f"Clicked {count} times")
diff --git a/docs/examples/python/quick_start/sharing_data_between_components_button.py b/docs/examples/quick_start/sharing_data_between_components_button.py
similarity index 54%
rename from docs/examples/python/quick_start/sharing_data_between_components_button.py
rename to docs/examples/quick_start/sharing_data_between_components_button.py
index b96dadfa6..a9a4911f2 100644
--- a/docs/examples/python/quick_start/sharing_data_between_components_button.py
+++ b/docs/examples/quick_start/sharing_data_between_components_button.py
@@ -4,4 +4,4 @@
 # start
 @component
 def my_button(count, on_click):
-    return html.button({"on_click": on_click}, f"Clicked {count} times")
+    return html.button({"onClick": on_click}, f"Clicked {count} times")
diff --git a/docs/examples/python/quick_start/sharing_data_between_components_move_state.py b/docs/examples/quick_start/sharing_data_between_components_move_state.py
similarity index 100%
rename from docs/examples/python/quick_start/sharing_data_between_components_move_state.py
rename to docs/examples/quick_start/sharing_data_between_components_move_state.py
diff --git a/docs/examples/python/quick_start/sharing_data_between_components_props.py b/docs/examples/quick_start/sharing_data_between_components_props.py
similarity index 100%
rename from docs/examples/python/quick_start/sharing_data_between_components_props.py
rename to docs/examples/quick_start/sharing_data_between_components_props.py
diff --git a/docs/examples/css/quick_start/updating_the_screen.css b/docs/examples/quick_start/updating_the_screen.css
similarity index 100%
rename from docs/examples/css/quick_start/updating_the_screen.css
rename to docs/examples/quick_start/updating_the_screen.css
diff --git a/docs/examples/python/quick_start/updating_the_screen.py b/docs/examples/quick_start/updating_the_screen.py
similarity index 51%
rename from docs/examples/python/quick_start/updating_the_screen.py
rename to docs/examples/quick_start/updating_the_screen.py
index 1fc6cebcd..36d810529 100644
--- a/docs/examples/python/quick_start/updating_the_screen.py
+++ b/docs/examples/quick_start/updating_the_screen.py
@@ -17,16 +17,4 @@ def my_button():
     def handle_click(event):
         set_count(count + 1)
 
-    return html.button({"on_click": handle_click}, f"Clicked {count} times")
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), my_app())
-
-    run(styled_app)
+    return html.button({"onClick": handle_click}, f"Clicked {count} times")
diff --git a/docs/examples/python/quick_start/updating_the_screen_event.py b/docs/examples/quick_start/updating_the_screen_event.py
similarity index 70%
rename from docs/examples/python/quick_start/updating_the_screen_event.py
rename to docs/examples/quick_start/updating_the_screen_event.py
index 2829c481c..60699955d 100644
--- a/docs/examples/python/quick_start/updating_the_screen_event.py
+++ b/docs/examples/quick_start/updating_the_screen_event.py
@@ -9,4 +9,4 @@ def my_button():
     def handle_click(event):
         set_count(count + 1)
 
-    return html.button({"on_click": handle_click}, f"Clicked {count} times")
+    return html.button({"onClick": handle_click}, f"Clicked {count} times")
diff --git a/docs/examples/python/quick_start/updating_the_screen_use_state.py b/docs/examples/quick_start/updating_the_screen_use_state.py
similarity index 100%
rename from docs/examples/python/quick_start/updating_the_screen_use_state.py
rename to docs/examples/quick_start/updating_the_screen_use_state.py
diff --git a/docs/examples/python/quick_start/updating_the_screen_use_state_button.py b/docs/examples/quick_start/updating_the_screen_use_state_button.py
similarity index 100%
rename from docs/examples/python/quick_start/updating_the_screen_use_state_button.py
rename to docs/examples/quick_start/updating_the_screen_use_state_button.py
diff --git a/docs/examples/python/responding_to_events/simple_button.py b/docs/examples/responding_to_events/simple_button.py
similarity index 100%
rename from docs/examples/python/responding_to_events/simple_button.py
rename to docs/examples/responding_to_events/simple_button.py
diff --git a/docs/examples/css/responding_to_events/simple_button_event.css b/docs/examples/responding_to_events/simple_button_event.css
similarity index 100%
rename from docs/examples/css/responding_to_events/simple_button_event.css
rename to docs/examples/responding_to_events/simple_button_event.css
diff --git a/docs/examples/responding_to_events/simple_button_event.py b/docs/examples/responding_to_events/simple_button_event.py
new file mode 100644
index 000000000..df3e170fd
--- /dev/null
+++ b/docs/examples/responding_to_events/simple_button_event.py
@@ -0,0 +1,9 @@
+from reactpy import component, html
+
+
+@component
+def button():
+    def handle_click(event):
+        print("You clicked me!")
+
+    return html.button({"onClick": handle_click}, "Click me")
diff --git a/docs/examples/css/thinking_in_react/add_inverse_data_flow.css b/docs/examples/thinking_in_react/add_inverse_data_flow.css
similarity index 100%
rename from docs/examples/css/thinking_in_react/add_inverse_data_flow.css
rename to docs/examples/thinking_in_react/add_inverse_data_flow.css
diff --git a/docs/examples/python/thinking_in_react/add_inverse_data_flow.py b/docs/examples/thinking_in_react/add_inverse_data_flow.py
similarity index 88%
rename from docs/examples/python/thinking_in_react/add_inverse_data_flow.py
rename to docs/examples/thinking_in_react/add_inverse_data_flow.py
index fdb7c79ad..540bff825 100644
--- a/docs/examples/python/thinking_in_react/add_inverse_data_flow.py
+++ b/docs/examples/thinking_in_react/add_inverse_data_flow.py
@@ -75,7 +75,7 @@ def search_bar(filter_text, in_stock_only, set_filter_text, set_in_stock_only):
                 "type": "text",
                 "value": filter_text,
                 "placeholder": "Search...",
-                "on_change": lambda event: set_filter_text(event["target"]["value"]),
+                "onChange": lambda event: set_filter_text(event["target"]["value"]),
             }
         ),
         html.label(
@@ -83,7 +83,7 @@ def search_bar(filter_text, in_stock_only, set_filter_text, set_in_stock_only):
                 {
                     "type": "checkbox",
                     "checked": in_stock_only,
-                    "on_change": lambda event: set_in_stock_only(
+                    "onChange": lambda event: set_in_stock_only(
                         event["target"]["checked"]
                     ),
                 }
@@ -106,15 +106,3 @@ def search_bar(filter_text, in_stock_only, set_filter_text, set_in_stock_only):
 @component
 def app():
     return filterable_product_table(PRODUCTS)
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), app())
-
-    run(styled_app)
diff --git a/docs/examples/css/thinking_in_react/build_a_static_version_in_react.css b/docs/examples/thinking_in_react/build_a_static_version_in_react.css
similarity index 100%
rename from docs/examples/css/thinking_in_react/build_a_static_version_in_react.css
rename to docs/examples/thinking_in_react/build_a_static_version_in_react.css
diff --git a/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py b/docs/examples/thinking_in_react/build_a_static_version_in_react.py
similarity index 88%
rename from docs/examples/python/thinking_in_react/build_a_static_version_in_react.py
rename to docs/examples/thinking_in_react/build_a_static_version_in_react.py
index 428406707..3c8c46761 100644
--- a/docs/examples/python/thinking_in_react/build_a_static_version_in_react.py
+++ b/docs/examples/thinking_in_react/build_a_static_version_in_react.py
@@ -58,15 +58,3 @@ def filterable_product_table(products):
 @component
 def app():
     return filterable_product_table(PRODUCTS)
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), app())
-
-    run(styled_app)
diff --git a/docs/examples/python/thinking_in_react/error_example.py b/docs/examples/thinking_in_react/error_example.py
similarity index 100%
rename from docs/examples/python/thinking_in_react/error_example.py
rename to docs/examples/thinking_in_react/error_example.py
diff --git a/docs/examples/python/thinking_in_react/event_handlers.py b/docs/examples/thinking_in_react/event_handlers.py
similarity index 60%
rename from docs/examples/python/thinking_in_react/event_handlers.py
rename to docs/examples/thinking_in_react/event_handlers.py
index a97358c10..81eb99611 100644
--- a/docs/examples/python/thinking_in_react/event_handlers.py
+++ b/docs/examples/thinking_in_react/event_handlers.py
@@ -3,8 +3,7 @@
 filter_text = ""
 
 
-def set_filter_text(value):
-    ...
+def set_filter_text(value): ...
 
 
 # start
@@ -13,6 +12,6 @@ def set_filter_text(value):
         "type": "text",
         "value": filter_text,
         "placeholder": "Search...",
-        "on_change": lambda event: set_filter_text(event["target"]["value"]),
+        "onChange": lambda event: set_filter_text(event["target"]["value"]),
     }
 )
diff --git a/docs/examples/css/thinking_in_react/identify_where_your_state_should_live.css b/docs/examples/thinking_in_react/identify_where_your_state_should_live.css
similarity index 100%
rename from docs/examples/css/thinking_in_react/identify_where_your_state_should_live.css
rename to docs/examples/thinking_in_react/identify_where_your_state_should_live.css
diff --git a/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py b/docs/examples/thinking_in_react/identify_where_your_state_should_live.py
similarity index 91%
rename from docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
rename to docs/examples/thinking_in_react/identify_where_your_state_should_live.py
index c201b6742..f81a2cd03 100644
--- a/docs/examples/python/thinking_in_react/identify_where_your_state_should_live.py
+++ b/docs/examples/thinking_in_react/identify_where_your_state_should_live.py
@@ -86,15 +86,3 @@ def search_bar(filter_text, in_stock_only):
 @component
 def app():
     return filterable_product_table(PRODUCTS)
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), app())
-
-    run(styled_app)
diff --git a/docs/examples/thinking_in_react/set_state_props.py b/docs/examples/thinking_in_react/set_state_props.py
new file mode 100644
index 000000000..821249933
--- /dev/null
+++ b/docs/examples/thinking_in_react/set_state_props.py
@@ -0,0 +1,20 @@
+from reactpy import component, hooks, html
+
+
+def search_bar(**_kws): ...
+
+
+# start
+@component
+def filterable_product_table(products):
+    filter_text, set_filter_text = hooks.use_state("")
+    in_stock_only, set_in_stock_only = hooks.use_state(False)
+
+    return html.div(
+        search_bar(
+            filter_text=filter_text,
+            in_stock_only=in_stock_only,
+            set_filter_text=set_filter_text,
+            set_in_stock_only=set_in_stock_only,
+        )
+    )
diff --git a/docs/examples/json/thinking_in_react/start_with_the_mockup.json b/docs/examples/thinking_in_react/start_with_the_mockup.json
similarity index 100%
rename from docs/examples/json/thinking_in_react/start_with_the_mockup.json
rename to docs/examples/thinking_in_react/start_with_the_mockup.json
diff --git a/docs/examples/python/thinking_in_react/use_state.py b/docs/examples/thinking_in_react/use_state.py
similarity index 100%
rename from docs/examples/python/thinking_in_react/use_state.py
rename to docs/examples/thinking_in_react/use_state.py
diff --git a/docs/examples/python/thinking_in_react/use_state_with_components.py b/docs/examples/thinking_in_react/use_state_with_components.py
similarity index 100%
rename from docs/examples/python/thinking_in_react/use_state_with_components.py
rename to docs/examples/thinking_in_react/use_state_with_components.py
diff --git a/docs/examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css b/docs/examples/tutorial_tic_tac_toe/setup_for_the_tutorial.css
similarity index 100%
rename from docs/examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css
rename to docs/examples/tutorial_tic_tac_toe/setup_for_the_tutorial.css
diff --git a/docs/examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py b/docs/examples/tutorial_tic_tac_toe/setup_for_the_tutorial.py
similarity index 56%
rename from docs/examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py
rename to docs/examples/tutorial_tic_tac_toe/setup_for_the_tutorial.py
index efca94195..e0893d6b4 100644
--- a/docs/examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py
+++ b/docs/examples/tutorial_tic_tac_toe/setup_for_the_tutorial.py
@@ -1,6 +1,7 @@
 from reactpy import component, html
 
+
 # start
 @component
 def square():
-    return html.button({"class_name":"square"}, "X")
+    return html.button({"className": "square"}, "X")
diff --git a/docs/examples/css/tutorial_tic_tac_toe/tic_tac_toe.css b/docs/examples/tutorial_tic_tac_toe/tic_tac_toe.css
similarity index 100%
rename from docs/examples/css/tutorial_tic_tac_toe/tic_tac_toe.css
rename to docs/examples/tutorial_tic_tac_toe/tic_tac_toe.css
diff --git a/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py b/docs/examples/tutorial_tic_tac_toe/tic_tac_toe.py
similarity index 87%
rename from docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
rename to docs/examples/tutorial_tic_tac_toe/tic_tac_toe.py
index eef970924..5eed504d1 100644
--- a/docs/examples/python/tutorial_tic_tac_toe/tic_tac_toe.py
+++ b/docs/examples/tutorial_tic_tac_toe/tic_tac_toe.py
@@ -6,7 +6,7 @@
 @component
 def square(value, on_square_click):
     return html.button(
-        {"className": "square", "on_click": on_square_click},
+        {"className": "square", "onClick": on_square_click},
         value,
     )
 
@@ -14,7 +14,7 @@ def square(value, on_square_click):
 @component
 def board(x_is_next, squares, on_play):
     def handle_click(i):
-        def handle_click_event(_event):
+        def inner(event):
             """
             Due to a quirk of Python, if your event handler needs args other than
             `event`, you will need to create a wrapper function as seen above.
@@ -27,7 +27,7 @@ def handle_click_event(_event):
             next_squares[i] = "X" if x_is_next else "O"
             on_play(next_squares)
 
-        return handle_click_event
+        return inner
 
     winner = calculate_winner(squares)
     status = (
@@ -80,7 +80,7 @@ def jump_to(next_move):
         moves.append(
             html.li(
                 {"key": move},
-                html.button({"on_click": jump_to(move)}, description),
+                html.button({"onClick": jump_to(move)}, description),
             )
         )
 
@@ -113,15 +113,3 @@ def calculate_winner(squares):
             return squares[a]
 
     return None
-
-
-# end
-if __name__ == "__main__":
-    from reactpy import run
-    from reactpy.utils import _read_docs_css
-
-    @component
-    def styled_app():
-        return html._(html.style(_read_docs_css()), game())
-
-    run(styled_app)
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index 082b77b01..3a7e0694b 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -7,16 +7,16 @@ nav:
                 - "Tutorial: Tic-Tac-Toe 🚧": learn/tutorial-tic-tac-toe.md
                 - Thinking in React: learn/thinking-in-react.md
           - Installation:
-                - learn/installation.md
-                - Start a New React Project: learn/start-a-new-react-project.md
-                - Add React to an Existing Project 🚫: learn/add-react-to-an-existing-project.md
+                - Creating a Standalone React App: learn/creating-a-react-app.md
+                - Add React to an Existing Project: learn/add-react-to-an-existing-project.md
+          - Setup:
                 - Editor Setup: learn/editor-setup.md
                 - React Developer Tools 🚫: learn/react-developer-tools.md
                 - Extra Tools and Packages 🚧: learn/extra-tools-and-packages.md
           - More Tutorials:
                 - "Tutorial: React Bootstrap 🚫": learn/tutorial-react-bootstrap.md
                 - "Tutorial: Material UI 🚫": learn/tutorial-material-ui.md
-    - Learn React:
+    - Learn:
           - Describing the UI:
                 - Your First Component 🚧: learn/your-first-component.md
                 - Importing and Exporting Components 🚧: learn/importing-and-exporting-components.md
@@ -93,7 +93,7 @@ nav:
                 - PyScript 🚫: reference/pyscript.md
           - Protocol Structure 🚧: reference/protocol-structure.md
           - Client API 🚧: reference/client-api.md
-    - About ReactPy:
+    - About:
           - Changelog 🚧: about/changelog.md
           - Community 🚧: about/community.md
           - Running Tests 🚧: about/running-tests.md
@@ -119,7 +119,7 @@ theme:
           primary: white
           accent: red
     features:
-        - navigation.instant
+        # - navigation.instant
         - navigation.tabs
         - navigation.tabs.sticky
         - navigation.top
diff --git a/docs/overrides/home.html b/docs/overrides/home.html
index 1357184f1..77446c7c8 100644
--- a/docs/overrides/home.html
+++ b/docs/overrides/home.html
@@ -125,7 +125,7 @@ <h1>Go full-stack with a framework</h1>
     <p>
       ReactPy is a library. It lets you put components together, but it doesn't prescribe how to do routing and
       data fetching. To build an entire app with ReactPy, we recommend a backend framework like
-      <a href="https://www.djangoproject.com/">Django</a> or <a href="https://fastapi.tiangolo.com/">FastAPI</a>.
+      <a href="https://www.djangoproject.com/">Django</a> or <a href="https://www.starlette.io/">Starlette</a>.
     </p>
     <a href="{{ page.next_page.url | url }}" class="md-button md-button--primary">
       Get Started
diff --git a/docs/src/learn/add-react-to-an-existing-project.md b/docs/src/learn/add-react-to-an-existing-project.md
index a2fdb0a3d..d201c1b9e 100644
--- a/docs/src/learn/add-react-to-an-existing-project.md
+++ b/docs/src/learn/add-react-to-an-existing-project.md
@@ -1,10 +1,3 @@
-!!! warning "Planned / Undeveloped"
-
-    This feature is planned, but not yet developed.
-
-    See [this issue](https://github.com/reactive-python/reactpy/issues/653) for more details.
-
-<!--
 ## Overview
 
 <p class="intro" markdown>
@@ -13,146 +6,130 @@ If you want to add some interactivity to your existing project, you don't have t
 
 </p>
 
-<Note>
-
-**You need to install [Node.js](https://nodejs.org/en/) for local development.** Although you can [try React](/learn/installation#try-react) online or with a simple HTML page, realistically most JavaScript tooling you'll want to use for development requires Node.js.
-
-</Note>
-
 ## Using React for an entire subroute of your existing website
 
 Let's say you have an existing web app at `example.com` built with another server technology (like Rails), and you want to implement all routes starting with `example.com/some-app/` fully with React.
 
+### Using an ASGI subroute
+
 Here's how we recommend to set it up:
 
-1. **Build the React part of your app** using one of the [React-based frameworks](/learn/start-a-new-react-project).
-2. **Specify `/some-app` as the _base path_** in your framework's configuration (here's how: [Next.js](https://nextjs.org/docs/api-reference/next.config.js/basepath), [Gatsby](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting/path-prefix/)).
+1. **Build the React part of your app** using one of the [ReactPy executors](./creating-a-react-app.md).
+2. **Specify `/some-app` as the _base path_** in your executors kwargs (`#!python path_prefix="/some-app"`).
 3. **Configure your server or a proxy** so that all requests under `/some-app/` are handled by your React app.
 
-This ensures the React part of your app can [benefit from the best practices](/learn/start-a-new-react-project#can-i-use-react-without-a-framework) baked into those frameworks.
+This ensures the React part of your app can [benefit from the best practices](./creating-a-react-app.md) baked into those frameworks.
 
-Many React-based frameworks are full-stack and let your React app take advantage of the server. However, you can use the same approach even if you can't or don't want to run JavaScript on the server. In that case, serve the HTML/CSS/JS export ([`next export` output](https://nextjs.org/docs/advanced-features/static-html-export) for Next.js, default for Gatsby) at `/some-app/` instead.
+### Using static site generation ([SSG](https://developer.mozilla.org/en-US/docs/Glossary/SSG))
 
-## Using React for a part of your existing page
+<!-- These apps can be deployed to a [CDN](https://developer.mozilla.org/en-US/docs/Glossary/CDN) or static hosting service without a server. -->
 
-Let's say you have an existing page built with another technology (either a server one like Rails, or a client one like Backbone), and you want to render interactive React components somewhere on that page. That's a common way to integrate React--in fact, it's how most React usage looked at Meta for many years!
+Support for SSG is coming in a [future version](https://github.com/reactive-python/reactpy/issues/1272).
 
-You can do this in two steps:
+## Using React for a part of your existing page
 
-1. **Set up a JavaScript environment** that lets you use the [JSX syntax](/learn/writing-markup-with-jsx), split your code into modules with the [`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) / [`export`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export) syntax, and use packages (for example, React) from the [npm](https://www.npmjs.com/) package registry.
-2. **Render your React components** where you want to see them on the page.
+Let's say you have an existing page built with another Python web technology (ASGI or WSGI), and you want to render interactive React components somewhere on that page.
 
 The exact approach depends on your existing page setup, so let's walk through some details.
 
-### Step 1: Set up a modular JavaScript environment
+### Using ASGI Middleware
 
-A modular JavaScript environment lets you write your React components in individual files, as opposed to writing all of your code in a single file. It also lets you use all the wonderful packages published by other developers on the [npm](https://www.npmjs.com/) registry--including React itself! How you do this depends on your existing setup:
+ReactPy supports running as middleware for any existing ASGI application. ReactPy components are embedded into your existing HTML templates using Jinja2. You can use any ASGI framework, however for demonstration purposes we have selected [Starlette](https://www.starlette.io/) for the example below.
 
--   **If your app is already split into files that use `import` statements,** try to use the setup you already have. Check whether writing `<div />` in your JS code causes a syntax error. If it causes a syntax error, you might need to [transform your JavaScript code with Babel](https://babeljs.io/setup), and enable the [Babel React preset](https://babeljs.io/docs/babel-preset-react) to use JSX.
+First, install ReactPy, Starlette, and your preferred ASGI webserver.
 
--   **If your app doesn't have an existing setup for compiling JavaScript modules,** set it up with [Vite](https://vitejs.dev/). The Vite community maintains [many integrations with backend frameworks](https://github.com/vitejs/awesome-vite#integrations-with-backends), including Rails, Django, and Laravel. If your backend framework is not listed, [follow this guide](https://vitejs.dev/guide/backend-integration.html) to manually integrate Vite builds with your backend.
+!!! example "Terminal"
 
-To check whether your setup works, run this command in your project folder:
+    ```linenums="0"
+    pip install reactpy[asgi,jinja] starlette uvicorn[standard]
+    ```
 
-<TerminalBlock>
-npm install react react-dom
-</TerminalBlock>
+Next, configure your ASGI framework to use ReactPy's Jinja2 template tag. The method for doing this will vary depending on the ASGI framework you are using. Below is an example that follow's [Starlette's documentation](https://www.starlette.io/templates/):
 
-Then add these lines of code at the top of your main JavaScript file (it might be called `index.js` or `main.js`):
+```python linenums="0" hl_lines="6 11 17"
+{% include "../../examples/add_react_to_an_existing_project/asgi_configure_jinja.py" %}
+```
 
-```html
-<!DOCTYPE html>
-<html>
-	<head>
-		<title>My app</title>
-	</head>
-	<body>
-		<!-- Your existing page content (in this example, it gets replaced) -->
+Now you will need to wrap your existing ASGI application with ReactPy's middleware, define the dotted path to your root components, and render your components in your existing HTML templates.
 
-    </body>
+!!! abstract "Note"
 
-</html>
-```
+    The `ReactPyJinja` extension enables a handful of [template tags](/reference/templatetags/) that allow you to render ReactPy components in your templates. The `component` tag is used to render a ReactPy SSR component, while the `pyscript_setup` and `pyscript_component` tags can be used together to render CSR components.
 
-```js
-import { createRoot } from "react-dom/client";
+=== "main.py"
 
-// Clear the existing HTML content
-document.body.innerHTML = '<div id="app"></div>';
+    ```python hl_lines="6 22"
+    {% include "../../examples/add_react_to_an_existing_project/asgi_middleware.py" %}
+    ```
 
-// Render your React component instead
-const root = createRoot(document.getElementById("app"));
-root.render(<h1>Hello, world</h1>);
-```
+=== "my_components.py"
 
-If the entire content of your page was replaced by a "Hello, world!", everything worked! Keep reading.
+    ```python
+    {% include "../../examples/add_react_to_an_existing_project/asgi_component.py" %}
+    ```
 
-<Note>
+=== "my_template.html"
 
-Integrating a modular JavaScript environment into an existing project for the first time can feel intimidating, but it's worth it! If you get stuck, try our [community resources](/community) or the [Vite Chat](https://chat.vitejs.dev/).
+    ```html hl_lines="5 9"
+    {% include "../../examples/add_react_to_an_existing_project/asgi_template.html" %}
+    ```
 
-</Note>
+Finally, use your webserver of choice to start ReactPy:
 
-### Step 2: Render React components anywhere on the page
+!!! example "Terminal"
 
-In the previous step, you put this code at the top of your main file:
+    ```linenums="0"
+    uvicorn main:reactpy_app
+    ```
 
-```js
-import { createRoot } from "react-dom/client";
+### Using WSGI Middleware
 
-// Clear the existing HTML content
-document.body.innerHTML = '<div id="app"></div>';
+Support for WSGI executors is coming in a [future version](https://github.com/reactive-python/reactpy/issues/1260).
 
-// Render your React component instead
-const root = createRoot(document.getElementById("app"));
-root.render(<h1>Hello, world</h1>);
-```
+## External Executors
 
-Of course, you don't actually want to clear the existing HTML content!
+!!! abstract "Note"
 
-Delete this code.
+    **External executors** exist outside ReactPy's core library and have significantly different installation and configuration instructions.
 
-Instead, you probably want to render your React components in specific places in your HTML. Open your HTML page (or the server templates that generate it) and add a unique [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) attribute to any tag, for example:
+    Make sure to follow the documentation for setting up your chosen _external_ executor.
 
-```html
-<!-- ... somewhere in your html ... -->
-<nav id="navigation"></nav>
-<!-- ... more html ... -->
-```
+### Django
 
-This lets you find that HTML element with [`document.getElementById`](https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById) and pass it to [`createRoot`](/reference/react-dom/client/createRoot) so that you can render your own React component inside:
-
-```html
-<!DOCTYPE html>
-<html>
-	<head>
-		<title>My app</title>
-	</head>
-	<body>
-		<p>This paragraph is a part of HTML.</p>
-		<nav id="navigation"></nav>
-		<p>This paragraph is also a part of HTML.</p>
-	</body>
-</html>
-```
+[Django](https://www.djangoproject.com/) is a full-featured web framework that provides a batteries-included approach to web development.
 
-```js
-import { createRoot } from "react-dom/client";
+Due to it's batteries-included approach, ReactPy has unique features only available to this executor.
 
-function NavigationBar() {
-	// TODO: Actually implement a navigation bar
-	return <h1>Hello from React!</h1>;
-}
+To learn how to configure Django for ReactPy, see the [ReactPy-Django documentation](https://reactive-python.github.io/reactpy-django/).
 
-const domNode = document.getElementById("navigation");
-const root = createRoot(domNode);
-root.render(<NavigationBar />);
-```
+<!--
+TODO: Fix reactpy-jupyter
+### Jupyter
+
+Jupyter is an interactive computing environment that is used for data science and machine learning. It allows users to run code, visualize data, and collaborate with others in a live environment. Jupyter is a powerful tool for data scientists and machine learning engineers.
+
+!!! example "Terminal"
+
+    ```linenums="0"
+    pip install reactpy-jupyter
+    ```
+
+If you're new to Jupyter, check out the [Jupyter tutorial](https://jupyter.org/try).
+
+ReactPy has unique [configuration instructions](https://github.com/reactive-python/reactpy-jupyter#readme) to use Jupyter. -->
+
+<!--
+TODO: Fix reactpy-dash
+### Plotly Dash
+
+Plotly Dash is a web application framework that is used to create interactive dashboards. It allows users to create dashboards that can be used to visualize data and interact with it in real time. Plotly Dash is a good choice for creating dashboards that need to be interactive and informative.
 
-Notice how the original HTML content from `index.html` is preserved, but your own `NavigationBar` React component now appears inside the `<nav id="navigation">` from your HTML. Read the [`createRoot` usage documentation](/reference/react-dom/client/createRoot#rendering-a-page-partially-built-with-react) to learn more about rendering React components inside an existing HTML page.
+!!! example "Terminal"
 
-When you adopt React in an existing project, it's common to start with small interactive components (like buttons), and then gradually keep "moving upwards" until eventually your entire page is built with React. If you ever reach that point, we recommend migrating to [a React framework](/learn/start-a-new-react-project) right after to get the most out of React.
+    ```linenums="0"
+    pip install reactpy-dash
+    ```
 
-## Using React Native in an existing native mobile app
+If you're new to Plotly Dash, check out the [Plotly Dash tutorial](https://dash.plotly.com/installation).
 
-[React Native](https://reactnative.dev/) can also be integrated into existing native apps incrementally. If you have an existing native app for Android (Java or Kotlin) or iOS (Objective-C or Swift), [follow this guide](https://reactnative.dev/docs/integration-with-existing-apps) to add a React Native screen to it. -->
+ReactPy has unique [configuration instructions](https://github.com/reactive-python/reactpy-dash#readme) to use Plotly Dash. -->
diff --git a/docs/src/learn/creating-a-react-app.md b/docs/src/learn/creating-a-react-app.md
new file mode 100644
index 000000000..5669d055c
--- /dev/null
+++ b/docs/src/learn/creating-a-react-app.md
@@ -0,0 +1,95 @@
+## Overview
+
+<p class="intro" markdown>
+
+If you want to build a new app or website with React, we recommend starting with a standalone executor.
+
+</p>
+
+If your app has constraints not well-served by existing web frameworks, you prefer to build your own framework, or you just want to learn the basics of a React app, you can use ReactPy in **standalone mode**.
+
+## Using ReactPy for full-stack
+
+ReactPy is a component library that helps you build a full-stack web application. For convenience, ReactPy is also bundled with several different standalone executors.
+
+These standalone executors are the easiest way to get started with ReactPy, as they require no additional setup or configuration.
+
+!!! abstract "Note"
+
+    **Standalone ReactPy requires a server**
+
+    In order to serve the initial HTML page, you will need to run a server. The ASGI examples below use [Uvicorn](https://www.uvicorn.org/), but you can use [any ASGI server](https://github.com/florimondmanca/awesome-asgi#servers).
+
+    Executors on this page can either support client-side rendering ([CSR](https://developer.mozilla.org/en-US/docs/Glossary/CSR)) or server-side rendering ([SSR](https://developer.mozilla.org/en-US/docs/Glossary/SSR))
+
+### Running via ASGI SSR
+
+ReactPy can run in **server-side standalone mode**, where both page loading and component rendering occurs on an ASGI server.
+
+This executor is the most commonly used, as it provides maximum extensibility.
+
+First, install ReactPy and your preferred ASGI webserver.
+
+!!! example "Terminal"
+
+    ```linenums="0"
+    pip install reactpy[asgi] uvicorn[standard]
+    ```
+
+Next, create a new file called `main.py` containing the ASGI application:
+
+=== "main.py"
+
+    ```python
+    {% include "../../examples/creating_a_react_app/asgi_ssr.py" %}
+    ```
+
+Finally, use your webserver of choice to start ReactPy:
+
+!!! example "Terminal"
+
+    ```linenums="0"
+    uvicorn main:my_app
+    ```
+
+### Running via ASGI CSR
+
+ReactPy can run in **client-side standalone mode**, where the initial page is served using the ASGI protocol. This is configuration allows direct execution of Javascript, but requires special considerations since all ReactPy component code is run on the browser [via WebAssembly](https://pyscript.net/).
+
+First, install ReactPy and your preferred ASGI webserver.
+
+!!! example "Terminal"
+
+    ```linenums="0"
+    pip install reactpy[asgi] uvicorn[standard]
+    ```
+
+Next, create a new file called `main.py` containing the ASGI application, and a `root.py` file containing the root component:
+
+=== "main.py"
+
+    ```python
+    {% include "../../examples/creating_a_react_app/asgi_csr.py" %}
+    ```
+
+=== "root.py"
+
+    ```python
+    {% include "../../examples/creating_a_react_app/asgi_csr_root.py" %}
+    ```
+
+Finally, use your webserver of choice to start ReactPy:
+
+!!! example "Terminal"
+
+    ```linenums="0"
+    uvicorn main:my_app
+    ```
+
+### Running via WSGI SSR
+
+Support for WSGI executors is coming in a [future version](https://github.com/reactive-python/reactpy/issues/1260).
+
+### Running via WSGI CSR
+
+Support for WSGI executors is coming in a [future version](https://github.com/reactive-python/reactpy/issues/1260).
diff --git a/docs/src/learn/installation.md b/docs/src/learn/installation.md
index 7da6f960e..48441a7cb 100644
--- a/docs/src/learn/installation.md
+++ b/docs/src/learn/installation.md
@@ -13,9 +13,9 @@ React has been designed from the start for gradual adoption. You can use as litt
     * [How to set up your editor](../learn/editor-setup.md)
     * [How to install React Developer Tools](../learn/react-developer-tools.md)
 
-## Try React
+<!-- ## Try React
 
-You don't need to install anything to play with React. [Try ReactPy within Jupyter Notebooks](https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb)!
+You don't need to install anything to play with React. [Try ReactPy within Jupyter Notebooks](https://mybinder.org/v2/gh/reactive-python/reactpy-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb)! -->
 
 ## Start a new React project
 
diff --git a/docs/src/learn/quick-start.md b/docs/src/learn/quick-start.md
index 91e4bcf3a..891612901 100644
--- a/docs/src/learn/quick-start.md
+++ b/docs/src/learn/quick-start.md
@@ -22,13 +22,13 @@ React apps are made out of _components_. A component is a piece of the UI (user
 React components are Python functions that return markup:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/my_button.py" start="# start" %}
+{% include "../../examples/quick_start/my_button.py" start="# start" %}
 ```
 
 Now that you've declared `my_button`, you can nest it into another component:
 
 ```python linenums="0" hl_lines="5"
-{% include "../../examples/python/quick_start/my_app.py" start="# start" %}
+{% include "../../examples/quick_start/my_app.py" start="# start" %}
 ```
 
 Have a look at the result:
@@ -36,7 +36,7 @@ Have a look at the result:
 === "app.py"
 
     ```python
-    {% include "../../examples/python/quick_start/creating_and_nesting_components.py" end="# end" %}
+    {% include "../../examples/quick_start/creating_and_nesting_components.py" %}
     ```
 
 === ":material-play: Run"
@@ -70,16 +70,16 @@ If you have a lot of HTML to port to JSX, you can use an [online converter.](htt
 
 ## Adding styles
 
-In React, you specify a CSS class with `class_name`. It works the same way as the HTML [`class`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class) attribute:
+In React, you specify a CSS class with `className`. It works the same way as the HTML [`class`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class) attribute:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/adding_styles.py" start="# start" %}
+{% include "../../examples/quick_start/adding_styles.py" start="# start" %}
 ```
 
 Then you write the CSS rules for it in a separate CSS file:
 
 ```css linenums="0"
-{% include "../../examples/css/quick_start/adding_styles.css" %}
+{% include "../../examples/quick_start/adding_styles.css" %}
 ```
 
 React does not prescribe how you add CSS files. In the simplest case, you'll add a [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) tag to your HTML. If you use a build tool or web framework, consult its documentation to learn how to add a CSS file to your project.
@@ -105,13 +105,13 @@ You can fetch data from a variety of sources and directly embed it into your com
 === "app.py"
 
     ```python
-    {% include "../../examples/python/quick_start/displaying_data.py" end="# end" %}
+    {% include "../../examples/quick_start/displaying_data.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/quick_start/displaying_data.css" %}
+    {% include "../../examples/quick_start/displaying_data.css" %}
     ```
 
 === ":material-play: Run"
@@ -125,19 +125,19 @@ You can fetch data from a variety of sources and directly embed it into your com
 In React, there is no special syntax for writing conditions. Instead, you'll use the same techniques as you use when writing regular Python code. For example, you can use an `if` statement to conditionally include components:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/conditional_rendering.py" start="# start"%}
+{% include "../../examples/quick_start/conditional_rendering.py" start="# start"%}
 ```
 
 If you prefer more compact code, you can use the [ternary operator.](https://www.geeksforgeeks.org/ternary-operator-in-python/):
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/conditional_rendering_ternary.py" start="# start"%}
+{% include "../../examples/quick_start/conditional_rendering_ternary.py" start="# start"%}
 ```
 
 When you don't need the `else` branch, you can also use a shorter [logical `and` syntax](https://www.geeksforgeeks.org/short-circuiting-techniques-python/):
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/conditional_rendering_logical_and.py" start="# start" %}
+{% include "../../examples/quick_start/conditional_rendering_logical_and.py" start="# start" %}
 ```
 
 All of these approaches also work for conditionally specifying attributes. If you're unfamiliar with some of this Python syntax, you can start by always using `if...else`.
@@ -149,21 +149,21 @@ You will rely on Python features like [`for` loop](https://www.w3schools.com/pyt
 For example, let's say you have an array of products:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/rendering_lists_products.py" %}
+{% include "../../examples/quick_start/rendering_lists_products.py" %}
 ```
 
-Inside your component, use list comprehension to transform an array of products into an array of `<li>` items:
+Inside your component, use list comprehension to transform an array of products into an array of `#!html <li>` items:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/rendering_lists_list_items.py" start="# start" %}
+{% include "../../examples/quick_start/rendering_lists_list_items.py" start="# start" %}
 ```
 
-Notice how `<li>` has a `key` attribute. For each item in a list, you should pass a string or a number that uniquely identifies that item among its siblings. Usually, a key should be coming from your data, such as a database ID. React uses your keys to know what happened if you later insert, delete, or reorder the items.
+Notice how `#!html <li>` has a `key` attribute. For each item in a list, you should pass a string or a number that uniquely identifies that item among its siblings. Usually, a key should be coming from your data, such as a database ID. React uses your keys to know what happened if you later insert, delete, or reorder the items.
 
 === "app.py"
 
     ```python
-    {% include "../../examples/python/quick_start/rendering_lists.py" end="# end" %}
+    {% include "../../examples/quick_start/rendering_lists.py" %}
     ```
 
 === ":material-play: Run"
@@ -177,10 +177,10 @@ Notice how `<li>` has a `key` attribute. For each item in a list, you should pas
 You can respond to events by declaring _event handler_ functions inside your components:
 
 ```python linenums="0"  hl_lines="3-4 7"
-{% include "../../examples/python/quick_start/responding_to_events.py" start="# start" %}
+{% include "../../examples/quick_start/responding_to_events.py" start="# start" %}
 ```
 
-Notice how `"on_click": handle_click` has no parentheses at the end! Do not _call_ the event handler function: you only need to _pass it down_. React will call your event handler when the user clicks the button.
+Notice how `"onClick": handle_click` has no parentheses at the end! Do not _call_ the event handler function: you only need to _pass it down_. React will call your event handler when the user clicks the button.
 
 ## Updating the screen
 
@@ -189,13 +189,13 @@ Often, you'll want your component to "remember" some information and display it.
 First, import [`use_state`](../reference/use-state.md) from React:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/updating_the_screen_use_state.py" end="# end" %}
+{% include "../../examples/quick_start/updating_the_screen_use_state.py" end="# end" %}
 ```
 
 Now you can declare a _state variable_ inside your component:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/updating_the_screen_use_state_button.py" start="# start" %}
+{% include "../../examples/quick_start/updating_the_screen_use_state_button.py" start="# start" %}
 ```
 
 You’ll get two things from `use_state`: the current state (`count`), and the function that lets you update it (`set_count`). You can give them any names, but the convention is to write `something, set_something = ...`.
@@ -203,7 +203,7 @@ You’ll get two things from `use_state`: the current state (`count`), and the f
 The first time the button is displayed, `count` will be `0` because you passed `0` to `use_state()`. When you want to change state, call `set_count()` and pass the new value to it. Clicking this button will increment the counter:
 
 ```python linenums="0" hl_lines="6"
-{% include "../../examples/python/quick_start/updating_the_screen_event.py" start="# start" %}
+{% include "../../examples/quick_start/updating_the_screen_event.py" start="# start" %}
 ```
 
 React will call your component function again. This time, `count` will be `1`. Then it will be `2`. And so on.
@@ -213,13 +213,13 @@ If you render the same component multiple times, each will get its own state. Cl
 === "app.py"
 
     ```python
-    {% include "../../examples/python/quick_start/updating_the_screen.py"  end="# end" %}
+    {% include "../../examples/quick_start/updating_the_screen.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/quick_start/updating_the_screen.css" %}
+    {% include "../../examples/quick_start/updating_the_screen.css" %}
     ```
 
 === ":material-play: Run"
@@ -255,13 +255,13 @@ Now when you click either button, the `count` in `my_app` will change, which wil
 First, _move the state up_ from `my_button` into `my_app`:
 
 ```python linenums="0" hl_lines="3-6 17"
-{% include "../../examples/python/quick_start/sharing_data_between_components_move_state.py" start="# start" %}
+{% include "../../examples/quick_start/sharing_data_between_components_move_state.py" start="# start" %}
 ```
 
 Then, _pass the state down_ from `my_app` to each `my_button`, together with the shared click handler. You can pass information to `my_button` using props:
 
 ```python linenums="0" hl_lines="10-11"
-{% include "../../examples/python/quick_start/sharing_data_between_components_props.py" start="# start" end="# end" %}
+{% include "../../examples/quick_start/sharing_data_between_components_props.py" start="# start" end="# end" %}
 ```
 
 The information you pass down like this is called _props_. Now the `my_app` component contains the `count` state and the `handle_click` event handler, and _passes both of them down as props_ to each of the buttons.
@@ -269,7 +269,7 @@ The information you pass down like this is called _props_. Now the `my_app` comp
 Finally, change `my_button` to _read_ the props you have passed from its parent component:
 
 ```python linenums="0"
-{% include "../../examples/python/quick_start/sharing_data_between_components_button.py" start="# start" %}
+{% include "../../examples/quick_start/sharing_data_between_components_button.py" start="# start" %}
 ```
 
 When you click the button, the `on_click` handler fires. Each button's `on_click` prop was set to the `handle_click` function inside `my_app`, so the code inside of it runs. That code calls `set_count(count + 1)`, incrementing the `count` state variable. The new `count` value is passed as a prop to each button, so they all show the new value. This is called "lifting state up". By moving state up, you've shared it between components.
@@ -277,13 +277,13 @@ When you click the button, the `on_click` handler fires. Each button's `on_click
 === "app.py"
 
     ```python
-    {% include "../../examples/python/quick_start/sharing_data_between_components.py" end="# end" %}
+    {% include "../../examples/quick_start/sharing_data_between_components.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/quick_start/sharing_data_between_components.css" %}
+    {% include "../../examples/quick_start/sharing_data_between_components.css" %}
     ```
 
 === ":material-play: Run"
diff --git a/docs/src/learn/responding-to-events.md b/docs/src/learn/responding-to-events.md
index c9fcb24ae..6c25fab56 100644
--- a/docs/src/learn/responding-to-events.md
+++ b/docs/src/learn/responding-to-events.md
@@ -19,7 +19,7 @@ To add an event handler, you will first define a function and then [pass it as a
 === "app.py"
 
     ```python
-    {% include "../../examples/python/responding_to_events/simple_button.py" start="# start" %}
+    {% include "../../examples/responding_to_events/simple_button.py" start="# start" %}
     ```
 
 === ":material-play: Run"
@@ -37,13 +37,13 @@ You can make it show a message when a user clicks by following these three steps
 === "app.py"
 
     ```python
-    {% include "../../examples/python/responding_to_events/simple_button_event.py" end="# end" %}
+    {% include "../../examples/responding_to_events/simple_button_event.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/responding_to_events/simple_button_event.css" %}
+    {% include "../../examples/responding_to_events/simple_button_event.css" %}
     ```
 
 === ":material-play: Run"
@@ -91,8 +91,8 @@ In the second example, the `()` at the end of `handleClick()` fires the function
 
 When you write code inline, the same pitfall presents itself in a different way:
 
-| passing a function (correct) | calling a function (incorrect) |
-| --- | --- |
+| passing a function (correct)             | calling a function (incorrect)     |
+| ---------------------------------------- | ---------------------------------- |
 | `<button on_click={() => alert('...')}>` | `<button on_click={alert('...')}>` |
 
 Passing inline code like this won't fire on click—it fires every time the component renders:
@@ -125,22 +125,22 @@ Because event handlers are declared inside of a component, they have access to t
 
 ```js
 function AlertButton({ message, children }) {
-	return <button on_click={() => alert(message)}>{children}</button>;
+    return <button on_click={() => alert(message)}>{children}</button>;
 }
 
 export default function Toolbar() {
-	return (
-		<div>
-			<AlertButton message="Playing!">Play Movie</AlertButton>
-			<AlertButton message="Uploading!">Upload Image</AlertButton>
-		</div>
-	);
+    return (
+        <div>
+            <AlertButton message="Playing!">Play Movie</AlertButton>
+            <AlertButton message="Uploading!">Upload Image</AlertButton>
+        </div>
+    );
 }
 ```
 
 ```css
 button {
-	margin-right: 10px;
+    margin-right: 10px;
 }
 ```
 
@@ -154,34 +154,34 @@ To do this, pass a prop the component receives from its parent as the event hand
 
 ```js
 function Button({ on_click, children }) {
-	return <button on_click={on_click}>{children}</button>;
+    return <button on_click={on_click}>{children}</button>;
 }
 
 function PlayButton({ movieName }) {
-	function handlePlayClick() {
-		alert(`Playing ${movieName}!`);
-	}
+    function handlePlayClick() {
+        alert(`Playing ${movieName}!`);
+    }
 
-	return <Button on_click={handlePlayClick}>Play "{movieName}"</Button>;
+    return <Button on_click={handlePlayClick}>Play "{movieName}"</Button>;
 }
 
 function UploadButton() {
-	return <Button on_click={() => alert("Uploading!")}>Upload Image</Button>;
+    return <Button on_click={() => alert("Uploading!")}>Upload Image</Button>;
 }
 
 export default function Toolbar() {
-	return (
-		<div>
-			<PlayButton movieName="Kiki's Delivery Service" />
-			<UploadButton />
-		</div>
-	);
+    return (
+        <div>
+            <PlayButton movieName="Kiki's Delivery Service" />
+            <UploadButton />
+        </div>
+    );
 }
 ```
 
 ```css
 button {
-	margin-right: 10px;
+    margin-right: 10px;
 }
 ```
 
@@ -204,22 +204,22 @@ For example, the `Button` component's `on_click` prop could have been called `on
 
 ```js
 function Button({ onSmash, children }) {
-	return <button on_click={onSmash}>{children}</button>;
+    return <button on_click={onSmash}>{children}</button>;
 }
 
 export default function App() {
-	return (
-		<div>
-			<Button onSmash={() => alert("Playing!")}>Play Movie</Button>
-			<Button onSmash={() => alert("Uploading!")}>Upload Image</Button>
-		</div>
-	);
+    return (
+        <div>
+            <Button onSmash={() => alert("Playing!")}>Play Movie</Button>
+            <Button onSmash={() => alert("Uploading!")}>Upload Image</Button>
+        </div>
+    );
 }
 ```
 
 ```css
 button {
-	margin-right: 10px;
+    margin-right: 10px;
 }
 ```
 
@@ -229,31 +229,31 @@ When your component supports multiple interactions, you might name event handler
 
 ```js
 export default function App() {
-	return (
-		<Toolbar
-			onPlayMovie={() => alert("Playing!")}
-			onUploadImage={() => alert("Uploading!")}
-		/>
-	);
+    return (
+        <Toolbar
+            onPlayMovie={() => alert("Playing!")}
+            onUploadImage={() => alert("Uploading!")}
+        />
+    );
 }
 
 function Toolbar({ onPlayMovie, onUploadImage }) {
-	return (
-		<div>
-			<Button on_click={onPlayMovie}>Play Movie</Button>
-			<Button on_click={onUploadImage}>Upload Image</Button>
-		</div>
-	);
+    return (
+        <div>
+            <Button on_click={onPlayMovie}>Play Movie</Button>
+            <Button on_click={onUploadImage}>Upload Image</Button>
+        </div>
+    );
 }
 
 function Button({ on_click, children }) {
-	return <button on_click={on_click}>{children}</button>;
+    return <button on_click={on_click}>{children}</button>;
 }
 ```
 
 ```css
 button {
-	margin-right: 10px;
+    margin-right: 10px;
 }
 ```
 
@@ -273,27 +273,27 @@ This `<div>` contains two buttons. Both the `<div>` _and_ each button have their
 
 ```js
 export default function Toolbar() {
-	return (
-		<div
-			className="Toolbar"
-			on_click={() => {
-				alert("You clicked on the toolbar!");
-			}}
-		>
-			<button on_click={() => alert("Playing!")}>Play Movie</button>
-			<button on_click={() => alert("Uploading!")}>Upload Image</button>
-		</div>
-	);
+    return (
+        <div
+            className="Toolbar"
+            on_click={() => {
+                alert("You clicked on the toolbar!");
+            }}
+        >
+            <button on_click={() => alert("Playing!")}>Play Movie</button>
+            <button on_click={() => alert("Uploading!")}>Upload Image</button>
+        </div>
+    );
 }
 ```
 
 ```css
 .Toolbar {
-	background: #aaa;
-	padding: 5px;
+    background: #aaa;
+    padding: 5px;
 }
 button {
-	margin: 5px;
+    margin: 5px;
 }
 ```
 
@@ -313,40 +313,40 @@ That event object also lets you stop the propagation. If you want to prevent an
 
 ```js
 function Button({ on_click, children }) {
-	return (
-		<button
-			on_click={(e) => {
-				e.stopPropagation();
-				on_click();
-			}}
-		>
-			{children}
-		</button>
-	);
+    return (
+        <button
+            on_click={(e) => {
+                e.stopPropagation();
+                on_click();
+            }}
+        >
+            {children}
+        </button>
+    );
 }
 
 export default function Toolbar() {
-	return (
-		<div
-			className="Toolbar"
-			on_click={() => {
-				alert("You clicked on the toolbar!");
-			}}
-		>
-			<Button on_click={() => alert("Playing!")}>Play Movie</Button>
-			<Button on_click={() => alert("Uploading!")}>Upload Image</Button>
-		</div>
-	);
+    return (
+        <div
+            className="Toolbar"
+            on_click={() => {
+                alert("You clicked on the toolbar!");
+            }}
+        >
+            <Button on_click={() => alert("Playing!")}>Play Movie</Button>
+            <Button on_click={() => alert("Uploading!")}>Upload Image</Button>
+        </div>
+    );
 }
 ```
 
 ```css
 .Toolbar {
-	background: #aaa;
-	padding: 5px;
+    background: #aaa;
+    padding: 5px;
 }
 button {
-	margin: 5px;
+    margin: 5px;
 }
 ```
 
@@ -369,12 +369,12 @@ In rare cases, you might need to catch all events on child elements, _even if th
 
 ```js
 <div
-	on_clickCapture={() => {
-		/* this runs first */
-	}}
+    on_clickCapture={() => {
+        /* this runs first */
+    }}
 >
-	<button on_click={(e) => e.stopPropagation()} />
-	<button on_click={(e) => e.stopPropagation()} />
+    <button on_click={(e) => e.stopPropagation()} />
+    <button on_click={(e) => e.stopPropagation()} />
 </div>
 ```
 
@@ -394,16 +394,16 @@ Notice how this click handler runs a line of code _and then_ calls the `on_click
 
 ```js
 function Button({ on_click, children }) {
-	return (
-		<button
-			on_click={(e) => {
-				e.stopPropagation();
-				on_click();
-			}}
-		>
-			{children}
-		</button>
-	);
+    return (
+        <button
+            on_click={(e) => {
+                e.stopPropagation();
+                on_click();
+            }}
+        >
+            {children}
+        </button>
+    );
 }
 ```
 
@@ -417,18 +417,18 @@ Some browser events have default behavior associated with them. For example, a `
 
 ```js
 export default function Signup() {
-	return (
-		<form onSubmit={() => alert("Submitting!")}>
-			<input />
-			<button>Send</button>
-		</form>
-	);
+    return (
+        <form onSubmit={() => alert("Submitting!")}>
+            <input />
+            <button>Send</button>
+        </form>
+    );
 }
 ```
 
 ```css
 button {
-	margin-left: 5px;
+    margin-left: 5px;
 }
 ```
 
@@ -436,23 +436,23 @@ You can call `e.preventDefault()` on the event object to stop this from happenin
 
 ```js
 export default function Signup() {
-	return (
-		<form
-			onSubmit={(e) => {
-				e.preventDefault();
-				alert("Submitting!");
-			}}
-		>
-			<input />
-			<button>Send</button>
-		</form>
-	);
+    return (
+        <form
+            onSubmit={(e) => {
+                e.preventDefault();
+                alert("Submitting!");
+            }}
+        >
+            <input />
+            <button>Send</button>
+        </form>
+    );
 }
 ```
 
 ```css
 button {
-	margin-left: 5px;
+    margin-left: 5px;
 }
 ```
 
@@ -489,16 +489,16 @@ Clicking this button is supposed to switch the page background between white and
 
 ```js
 export default function LightSwitch() {
-	function handleClick() {
-		let bodyStyle = document.body.style;
-		if (bodyStyle.backgroundColor === "black") {
-			bodyStyle.backgroundColor = "white";
-		} else {
-			bodyStyle.backgroundColor = "black";
-		}
-	}
+    function handleClick() {
+        let bodyStyle = document.body.style;
+        if (bodyStyle.backgroundColor === "black") {
+            bodyStyle.backgroundColor = "white";
+        } else {
+            bodyStyle.backgroundColor = "black";
+        }
+    }
 
-	return <button on_click={handleClick()}>Toggle the lights</button>;
+    return <button on_click={handleClick()}>Toggle the lights</button>;
 }
 ```
 
@@ -508,16 +508,16 @@ The problem is that `<button on_click={handleClick()}>` _calls_ the `handleClick
 
 ```js
 export default function LightSwitch() {
-	function handleClick() {
-		let bodyStyle = document.body.style;
-		if (bodyStyle.backgroundColor === "black") {
-			bodyStyle.backgroundColor = "white";
-		} else {
-			bodyStyle.backgroundColor = "black";
-		}
-	}
+    function handleClick() {
+        let bodyStyle = document.body.style;
+        if (bodyStyle.backgroundColor === "black") {
+            bodyStyle.backgroundColor = "white";
+        } else {
+            bodyStyle.backgroundColor = "black";
+        }
+    }
 
-	return <button on_click={handleClick}>Toggle the lights</button>;
+    return <button on_click={handleClick}>Toggle the lights</button>;
 }
 ```
 
@@ -525,16 +525,16 @@ Alternatively, you could wrap the call into another function, like `<button on_c
 
 ```js
 export default function LightSwitch() {
-	function handleClick() {
-		let bodyStyle = document.body.style;
-		if (bodyStyle.backgroundColor === "black") {
-			bodyStyle.backgroundColor = "white";
-		} else {
-			bodyStyle.backgroundColor = "black";
-		}
-	}
+    function handleClick() {
+        let bodyStyle = document.body.style;
+        if (bodyStyle.backgroundColor === "black") {
+            bodyStyle.backgroundColor = "white";
+        } else {
+            bodyStyle.backgroundColor = "black";
+        }
+    }
 
-	return <button on_click={() => handleClick()}>Toggle the lights</button>;
+    return <button on_click={() => handleClick()}>Toggle the lights</button>;
 }
 ```
 
@@ -548,7 +548,7 @@ After you do this, notice that clicking the button also increments the page clic
 
 ```js
 export default function ColorSwitch({ onChangeColor }) {
-	return <button>Change color</button>;
+    return <button>Change color</button>;
 }
 ```
 
@@ -557,35 +557,35 @@ import { useState } from "react";
 import ColorSwitch from "./ColorSwitch.js";
 
 export default function App() {
-	const [clicks, setClicks] = useState(0);
-
-	function handleClickOutside() {
-		setClicks((c) => c + 1);
-	}
-
-	function getRandomLightColor() {
-		let r = 150 + Math.round(100 * Math.random());
-		let g = 150 + Math.round(100 * Math.random());
-		let b = 150 + Math.round(100 * Math.random());
-		return `rgb(${r}, ${g}, ${b})`;
-	}
-
-	function handleChangeColor() {
-		let bodyStyle = document.body.style;
-		bodyStyle.backgroundColor = getRandomLightColor();
-	}
-
-	return (
-		<div
-			style={{ width: "100%", height: "100%" }}
-			on_click={handleClickOutside}
-		>
-			<ColorSwitch onChangeColor={handleChangeColor} />
-			<br />
-			<br />
-			<h2>Clicks on the page: {clicks}</h2>
-		</div>
-	);
+    const [clicks, setClicks] = useState(0);
+
+    function handleClickOutside() {
+        setClicks((c) => c + 1);
+    }
+
+    function getRandomLightColor() {
+        let r = 150 + Math.round(100 * Math.random());
+        let g = 150 + Math.round(100 * Math.random());
+        let b = 150 + Math.round(100 * Math.random());
+        return `rgb(${r}, ${g}, ${b})`;
+    }
+
+    function handleChangeColor() {
+        let bodyStyle = document.body.style;
+        bodyStyle.backgroundColor = getRandomLightColor();
+    }
+
+    return (
+        <div
+            style={{ width: "100%", height: "100%" }}
+            on_click={handleClickOutside}
+        >
+            <ColorSwitch onChangeColor={handleChangeColor} />
+            <br />
+            <br />
+            <h2>Clicks on the page: {clicks}</h2>
+        </div>
+    );
 }
 ```
 
@@ -597,16 +597,16 @@ However, this introduces the problem of the incrementing counter. If `onChangeCo
 
 ```js
 export default function ColorSwitch({ onChangeColor }) {
-	return (
-		<button
-			on_click={(e) => {
-				e.stopPropagation();
-				onChangeColor();
-			}}
-		>
-			Change color
-		</button>
-	);
+    return (
+        <button
+            on_click={(e) => {
+                e.stopPropagation();
+                onChangeColor();
+            }}
+        >
+            Change color
+        </button>
+    );
 }
 ```
 
@@ -615,35 +615,35 @@ import { useState } from "react";
 import ColorSwitch from "./ColorSwitch.js";
 
 export default function App() {
-	const [clicks, setClicks] = useState(0);
-
-	function handleClickOutside() {
-		setClicks((c) => c + 1);
-	}
-
-	function getRandomLightColor() {
-		let r = 150 + Math.round(100 * Math.random());
-		let g = 150 + Math.round(100 * Math.random());
-		let b = 150 + Math.round(100 * Math.random());
-		return `rgb(${r}, ${g}, ${b})`;
-	}
-
-	function handleChangeColor() {
-		let bodyStyle = document.body.style;
-		bodyStyle.backgroundColor = getRandomLightColor();
-	}
-
-	return (
-		<div
-			style={{ width: "100%", height: "100%" }}
-			on_click={handleClickOutside}
-		>
-			<ColorSwitch onChangeColor={handleChangeColor} />
-			<br />
-			<br />
-			<h2>Clicks on the page: {clicks}</h2>
-		</div>
-	);
+    const [clicks, setClicks] = useState(0);
+
+    function handleClickOutside() {
+        setClicks((c) => c + 1);
+    }
+
+    function getRandomLightColor() {
+        let r = 150 + Math.round(100 * Math.random());
+        let g = 150 + Math.round(100 * Math.random());
+        let b = 150 + Math.round(100 * Math.random());
+        return `rgb(${r}, ${g}, ${b})`;
+    }
+
+    function handleChangeColor() {
+        let bodyStyle = document.body.style;
+        bodyStyle.backgroundColor = getRandomLightColor();
+    }
+
+    return (
+        <div
+            style={{ width: "100%", height: "100%" }}
+            on_click={handleClickOutside}
+        >
+            <ColorSwitch onChangeColor={handleChangeColor} />
+            <br />
+            <br />
+            <h2>Clicks on the page: {clicks}</h2>
+        </div>
+    );
 }
 ```
 
diff --git a/docs/src/learn/start-a-new-react-project.md b/docs/src/learn/start-a-new-react-project.md
deleted file mode 100644
index 490698fab..000000000
--- a/docs/src/learn/start-a-new-react-project.md
+++ /dev/null
@@ -1,155 +0,0 @@
-## Overview
-
-<p class="intro" markdown>
-
-If you want to build a new app or a new website fully with ReactPy, we recommend picking one of the ReactPy-compatible backends popular in the community. These backend frameworks provide features that most apps and sites eventually need, including routing, data fetching, and session management.
-
-</p>
-
-## Built-in Backends
-
-<!-- FIXME: This is reliant on https://github.com/reactive-python/reactpy/issues/1071 -->
-
-!!! abstract "Note"
-
-    Some of our backend frameworks are considered _built-in_, meaning that compatibility for these backends are contained within `reactpy.backend.*`.
-
-    In order to use ReactPy with _built-in_ backend, you will need to run `reactpy.backend.*.configure(...)` on your ASGI application. This command will configure the necessary settings and routes for ReactPy to work properly.
-
-    For example, this is how you would configure ReactPy for FastAPI:
-
-    ```python linenums="0"
-    {% include "../../examples/python/start_a_new_react_project/configure_example.py" %}
-    ```
-
-### FastAPI
-
-FastAPI is a high-performance web framework that is designed for speed and efficiency. It is built on top of the asyncio library and uses a number of optimizations to achieve its performance. FastAPI is a good choice for web applications that need to be fast and scalable.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy[fastapi]
-    ```
-
-If you're new to FastAPI, check out the [FastAPI tutorial](https://fastapi.tiangolo.com/tutorial/).
-
-You will need to [configure FastAPI](#built-in-backends) in order to use it with ReactPy.
-
-### Flask
-
-Flask is a microframework that is lightweight and easy to use. It is a good choice for small and simple web applications. Flask does not include many features out of the box, but it is highly customizable and can be extended with a variety of third-party libraries.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy[flask]
-    ```
-
-If you're new to Flask, check out the [Flask tutorial](https://flask.palletsprojects.com/en/latest/tutorial/).
-
-You will need to [configure Flask](#built-in-backends) in order to use it with ReactPy.
-
-### Sanic
-
-Sanic is a microframework that is designed for speed and performance. It is built on top of the asyncio library and uses a number of optimizations to achieve its performance. Sanic is a good choice for web applications that need to be fast and scalable.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy[sanic]
-    ```
-
-If you're new to Sanic, check out the [Sanic tutorial](https://sanicframework.org/en/guide/).
-
-You will need to [configure Sanic](#built-in-backends) in order to use it with ReactPy.
-
-### Starlette
-
-Starlette is a lightweight framework that is designed for simplicity and flexibility. It is built on top of the ASGI standard and is very easy to extend. Starlette is a good choice for web applications that need to be simple and flexible.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy[starlette]
-    ```
-
-If you're new to Starlette, check out the [Starlette tutorial](https://www.starlette.io/tutorial/).
-
-You will need to [configure Starlette](#built-in-backends) in order to use it with ReactPy.
-
-### Tornado
-
-Tornado is a scalable web framework that is designed for high-traffic applications. It is built on top of the asyncio library and uses a number of optimizations to achieve its scalability. Tornado is a good choice for web applications that need to handle a lot of traffic.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy[tornado]
-    ```
-
-If you're new to Tornado, check out the [Tornado tutorial](https://www.tornadoweb.org/en/stable/guide/).
-
-You will need to [configure Tornado](#built-in-backends) in order to use it with ReactPy.
-
-## External Backends
-
-!!! warning "Pitfall"
-
-    _External_ backends have ReactPy support, but have significantly different installation and configuration instructions than _built-in_ backends.
-
-    Make sure to follow the configuration guide for your chosen _external_ backend.
-
-### Django
-
-[Django](https://www.djangoproject.com/) is a full-featured web framework that provides a batteries-included approach to web development. It includes features such as ORM, templating, authentication, and authorization. Django is a good choice for large and complex web applications.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy-django
-    ```
-
-If you're new to Django, check out the [Django tutorial](https://docs.djangoproject.com/en/dev/intro/tutorial01/).
-
-ReactPy has unique [configuration instructions](https://reactive-python.github.io/reactpy-django/get-started/installation/) to use Django.
-
-### Jupyter
-
-Jupyter is an interactive computing environment that is used for data science and machine learning. It allows users to run code, visualize data, and collaborate with others in a live environment. Jupyter is a powerful tool for data scientists and machine learning engineers.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy-jupyter
-    ```
-
-If you're new to Jupyter, check out the [Jupyter tutorial](https://jupyter.org/try).
-
-ReactPy has unique [configuration instructions](https://github.com/reactive-python/reactpy-jupyter#readme) to use Jupyter.
-
-### Plotly Dash
-
-Plotly Dash is a web application framework that is used to create interactive dashboards. It allows users to create dashboards that can be used to visualize data and interact with it in real time. Plotly Dash is a good choice for creating dashboards that need to be interactive and informative.
-
-!!! example "Terminal"
-
-    ```bash linenums="0"
-    pip install reactpy-dash
-    ```
-
-If you're new to Plotly Dash, check out the [Plotly Dash tutorial](https://dash.plotly.com/installation).
-
-ReactPy has unique [configuration instructions](https://github.com/reactive-python/reactpy-dash#readme) to use Plotly Dash.
-
-!!! info "Deep Dive"
-
-    <font size="4">**Can I use ReactPy without a backend framework?**</font>
-
-    You can not ReactPy without a backend—this project was designed to be built on-top of existing web frameworks.
-
-    Here's why.
-
-    You can think of ReactPy as ReactJS server side rendering, but with a Python server. We rely on Python web frameworks and webservers in order to process ReactPy traffic. **This means that you can [use any Python web framework](../learn/creating-backends.md) as a ReactPy backend, as long as it supports the ASGI standard.** As your project grows with every new feature, you may want to switch backends in the future. As a result, we recommend keeping all backend-related logic within hook functions in order to make the "points of integration" between ReactPy and your backend as small as possible.
-
-    **If you're building a new app or a site fully with ReactPy, we recommend using your favorite backend combined with [`reactpy-router`](https://github.com/reactive-python/reactpy-router) to create a Single Page Application (SPA).**
diff --git a/docs/src/learn/thinking-in-react.md b/docs/src/learn/thinking-in-react.md
index 0328ed5df..57873633e 100644
--- a/docs/src/learn/thinking-in-react.md
+++ b/docs/src/learn/thinking-in-react.md
@@ -13,12 +13,12 @@ Imagine that you already have a JSON API and a mockup from a designer.
 The JSON API returns some data that looks like this:
 
 ```json linenums="0"
-{% include "../../examples/json/thinking_in_react/start_with_the_mockup.json" %}
+{% include "../../examples/thinking_in_react/start_with_the_mockup.json" %}
 ```
 
 The mockup looks like this:
 
-<img src="../../static/images/s_thinking-in-react_ui.png" width="300" style="margin: 0 auto" />
+<img src="../../assets/images/s_thinking-in-react_ui.png" width="300" style="margin: 0 auto" />
 
 To implement a UI in React, you will usually follow the same five steps.
 
@@ -38,7 +38,7 @@ There are five components on this screen:
 
 <!-- TODO: Change this image to use snake_case -->
 
-<img src="../../static/images/s_thinking-in-react_ui_outline.png" width="500" style="margin: 0 auto" />
+<img src="../../assets/images/s_thinking-in-react_ui_outline.png" width="500" style="margin: 0 auto" />
 
 1. `filterable_product_table` (grey) contains the entire app.
 2. `search_bar` (blue) receives the user input.
@@ -67,13 +67,13 @@ You can either build "top down" by starting with building the components higher
 === "app.py"
 
     ```python
-    {% include "../../examples/python/thinking_in_react/build_a_static_version_in_react.py" end="# end" %}
+    {% include "../../examples/thinking_in_react/build_a_static_version_in_react.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/thinking_in_react/build_a_static_version_in_react.css" %}
+    {% include "../../examples/thinking_in_react/build_a_static_version_in_react.css" %}
     ```
 
 === ":material-play: Run"
@@ -159,13 +159,13 @@ So the state values will live in `filterable_product_table`.
 Add state to the component with the [`use_state()` Hook.](../reference/use-state.md) Hooks are special functions that let you "hook into" React. Add two state variables at the top of `filterable_product_table` and specify their initial state:
 
 ```python linenums="0"
-{% include "../../examples/python/thinking_in_react/use_state.py" start="# start" %}
+{% include "../../examples/thinking_in_react/use_state.py" start="# start" %}
 ```
 
 Then, pass `filter_text` and `in_stock_only` to `product_table` and `search_bar` as props:
 
 ```python linenums="0"
-{% include "../../examples/python/thinking_in_react/use_state_with_components.py" start="# start" %}
+{% include "../../examples/thinking_in_react/use_state_with_components.py" start="# start" %}
 ```
 
 You can start seeing how your application will behave. Edit the `filter_text` initial value from `use_state('')` to `use_state('fruit')` in the sandbox code below. You'll see both the search input text and the table update:
@@ -173,13 +173,13 @@ You can start seeing how your application will behave. Edit the `filter_text` in
 === "app.py"
 
     ```python
-    {% include "../../examples/python/thinking_in_react/identify_where_your_state_should_live.py" end="# end" %}
+    {% include "../../examples/thinking_in_react/identify_where_your_state_should_live.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/thinking_in_react/identify_where_your_state_should_live.css" %}
+    {% include "../../examples/thinking_in_react/identify_where_your_state_should_live.css" %}
     ```
 
 === ":material-play: Run"
@@ -193,7 +193,7 @@ Notice that editing the form doesn't work yet.
 In the code above, `product_table` and `search_bar` read the `filter_text` and `in_stock_only` props to render the table, the input, and the checkbox. For example, here is how `search_bar` populates the input value:
 
 ```python linenums="0" hl_lines="2 7"
-{% include "../../examples/python/thinking_in_react/error_example.py" start="# start" %}
+{% include "../../examples/thinking_in_react/error_example.py" start="# start" %}
 ```
 
 However, you haven't added any code to respond to the user actions like typing yet. This will be your final step.
@@ -207,13 +207,13 @@ React makes this data flow explicit, but it requires a little more typing than t
 You want to make it so whenever the user changes the form inputs, the state updates to reflect those changes. The state is owned by `filterable_product_table`, so only it can call `set_filter_text` and `set_in_stock_only`. To let `search_bar` update the `filterable_product_table`'s state, you need to pass these functions down to `search_bar`:
 
 ```python linenums="0" hl_lines="3-4 10-11"
-{% include "../../examples/python/thinking_in_react/set_state_props.py" start="# start" %}
+{% include "../../examples/thinking_in_react/set_state_props.py" start="# start" %}
 ```
 
-Inside the `search_bar`, you will add the `on_change` event handlers and set the parent state from them:
+Inside the `search_bar`, you will add the `onChange` event handlers and set the parent state from them:
 
 ```python linenums="0" hl_lines="6"
-{% include "../../examples/python/thinking_in_react/event_handlers.py" start="# start" %}
+{% include "../../examples/thinking_in_react/event_handlers.py" start="# start" %}
 ```
 
 Now the application fully works!
@@ -223,13 +223,13 @@ Now the application fully works!
     <!-- FIXME: Click event on the checkbox is broken. `event["target"]["checked"]` doesn't exist -->
 
     ```python
-    {% include "../../examples/python/thinking_in_react/add_inverse_data_flow.py" end="# end" %}
+    {% include "../../examples/thinking_in_react/add_inverse_data_flow.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/thinking_in_react/add_inverse_data_flow.css" %}
+    {% include "../../examples/thinking_in_react/add_inverse_data_flow.css" %}
     ```
 
 === ":material-play: Run"
diff --git a/docs/src/learn/tutorial-tic-tac-toe.md b/docs/src/learn/tutorial-tic-tac-toe.md
index 218fec5de..e92f53bf2 100644
--- a/docs/src/learn/tutorial-tic-tac-toe.md
+++ b/docs/src/learn/tutorial-tic-tac-toe.md
@@ -28,13 +28,13 @@ You can see what it will look like when you're finished here:
     <!-- FIXME: Currently this example uses empty string instead of None, due to a bug with ReactPy -->
 
     ```python
-    {% include "../../examples/python/tutorial_tic_tac_toe/tic_tac_toe.py" end="# end" %}
+    {% include "../../examples/tutorial_tic_tac_toe/tic_tac_toe.py" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/tutorial_tic_tac_toe/tic_tac_toe.css" %}
+    {% include "../../examples/tutorial_tic_tac_toe/tic_tac_toe.css" %}
     ```
 
 === ":material-play: Run"
@@ -56,13 +56,13 @@ In the code example below, click **Run** to open the editor in a new tab using t
 === "app.py"
 
     ```python
-    {% include "../../examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
+    {% include "../../examples/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
     ```
 
 === "styles.css"
 
     ```css
-    {% include "../../examples/css/tutorial_tic_tac_toe/setup_for_the_tutorial.css" %}
+    {% include "../../examples/tutorial_tic_tac_toe/setup_for_the_tutorial.css" %}
     ```
 
 === ":material-play: Run"
@@ -102,7 +102,7 @@ In Jupyter you'll see three main sections:
 The `tic-tac-toe.ipynb` file should be selected in the _Files_ section. Click on the first code box, where the contents of that _code editor_ should be:
 
 ```python linenums="0"
-{% include "../../examples/python/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
+{% include "../../examples/tutorial_tic_tac_toe/setup_for_the_tutorial.py" start="# start" %}
 ```
 
 After clicking the _run button_ the notebook should be displaying a square with a X in it like this:
@@ -119,7 +119,7 @@ The code in `App.js` creates a _component_. In React, a component is a piece of
 
 ```js
 export default function Square() {
-	return <button className="square">X</button>;
+    return <button className="square">X</button>;
 }
 ```
 
@@ -127,7 +127,7 @@ The first line defines a function called `Square`. The `export` JavaScript keywo
 
 ```js
 export default function Square() {
-	return <button className="square">X</button>;
+    return <button className="square">X</button>;
 }
 ```
 
@@ -182,12 +182,12 @@ React components need to return a single JSX element and not multiple adjacent J
 
 ```js
 export default function Square() {
-	return (
-		<>
-			<button className="square">X</button>
-			<button className="square">X</button>
-		</>
-	);
+    return (
+        <>
+            <button className="square">X</button>
+            <button className="square">X</button>
+        </>
+    );
 }
 ```
 
@@ -205,25 +205,25 @@ In the `App.js` file, update the `Square` component to look like this:
 
 ```js
 export default function Square() {
-	return (
-		<>
-			<div className="board-row">
-				<button className="square">1</button>
-				<button className="square">2</button>
-				<button className="square">3</button>
-			</div>
-			<div className="board-row">
-				<button className="square">4</button>
-				<button className="square">5</button>
-				<button className="square">6</button>
-			</div>
-			<div className="board-row">
-				<button className="square">7</button>
-				<button className="square">8</button>
-				<button className="square">9</button>
-			</div>
-		</>
-	);
+    return (
+        <>
+            <div className="board-row">
+                <button className="square">1</button>
+                <button className="square">2</button>
+                <button className="square">3</button>
+            </div>
+            <div className="board-row">
+                <button className="square">4</button>
+                <button className="square">5</button>
+                <button className="square">6</button>
+            </div>
+            <div className="board-row">
+                <button className="square">7</button>
+                <button className="square">8</button>
+                <button className="square">9</button>
+            </div>
+        </>
+    );
 }
 ```
 
@@ -235,7 +235,7 @@ But you now have a problem. Your component named `Square`, really isn't a square
 
 ```js
 export default function Board() {
-	//...
+    //...
 }
 ```
 
@@ -243,70 +243,70 @@ At this point your code should look something like this:
 
 ```js
 export default function Board() {
-	return (
-		<>
-			<div className="board-row">
-				<button className="square">1</button>
-				<button className="square">2</button>
-				<button className="square">3</button>
-			</div>
-			<div className="board-row">
-				<button className="square">4</button>
-				<button className="square">5</button>
-				<button className="square">6</button>
-			</div>
-			<div className="board-row">
-				<button className="square">7</button>
-				<button className="square">8</button>
-				<button className="square">9</button>
-			</div>
-		</>
-	);
+    return (
+        <>
+            <div className="board-row">
+                <button className="square">1</button>
+                <button className="square">2</button>
+                <button className="square">3</button>
+            </div>
+            <div className="board-row">
+                <button className="square">4</button>
+                <button className="square">5</button>
+                <button className="square">6</button>
+            </div>
+            <div className="board-row">
+                <button className="square">7</button>
+                <button className="square">8</button>
+                <button className="square">9</button>
+            </div>
+        </>
+    );
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -324,11 +324,11 @@ First, you are going to copy the line defining your first square (`<button class
 
 ```js
 function Square() {
-	return <button className="square">1</button>;
+    return <button className="square">1</button>;
 }
 
 export default function Board() {
-	// ...
+    // ...
 }
 ```
 
@@ -337,25 +337,25 @@ Then you'll update the Board component to render that `Square` component using J
 ```js
 // ...
 export default function Board() {
-	return (
-		<>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-		</>
-	);
+    return (
+        <>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+        </>
+    );
 }
 ```
 
@@ -371,7 +371,7 @@ Update the `Square` component to read the `value` prop that you'll pass from the
 
 ```js
 function Square({ value }) {
-	return <button className="square">1</button>;
+    return <button className="square">1</button>;
 }
 ```
 
@@ -381,7 +381,7 @@ Now you want to display that `value` instead of `1` inside every square. Try doi
 
 ```js
 function Square({ value }) {
-	return <button className="square">value</button>;
+    return <button className="square">value</button>;
 }
 ```
 
@@ -393,7 +393,7 @@ You wanted to render the JavaScript variable called `value` from your component,
 
 ```js
 function Square({ value }) {
-	return <button className="square">{value}</button>;
+    return <button className="square">{value}</button>;
 }
 ```
 
@@ -405,25 +405,25 @@ This is because the `Board` component hasn't passed the `value` prop to each `Sq
 
 ```js
 export default function Board() {
-	return (
-		<>
-			<div className="board-row">
-				<Square value="1" />
-				<Square value="2" />
-				<Square value="3" />
-			</div>
-			<div className="board-row">
-				<Square value="4" />
-				<Square value="5" />
-				<Square value="6" />
-			</div>
-			<div className="board-row">
-				<Square value="7" />
-				<Square value="8" />
-				<Square value="9" />
-			</div>
-		</>
-	);
+    return (
+        <>
+            <div className="board-row">
+                <Square value="1" />
+                <Square value="2" />
+                <Square value="3" />
+            </div>
+            <div className="board-row">
+                <Square value="4" />
+                <Square value="5" />
+                <Square value="6" />
+            </div>
+            <div className="board-row">
+                <Square value="7" />
+                <Square value="8" />
+                <Square value="9" />
+            </div>
+        </>
+    );
 }
 ```
 
@@ -435,74 +435,74 @@ Your updated code should look like this:
 
 ```js
 function Square({ value }) {
-	return <button className="square">{value}</button>;
+    return <button className="square">{value}</button>;
 }
 
 export default function Board() {
-	return (
-		<>
-			<div className="board-row">
-				<Square value="1" />
-				<Square value="2" />
-				<Square value="3" />
-			</div>
-			<div className="board-row">
-				<Square value="4" />
-				<Square value="5" />
-				<Square value="6" />
-			</div>
-			<div className="board-row">
-				<Square value="7" />
-				<Square value="8" />
-				<Square value="9" />
-			</div>
-		</>
-	);
+    return (
+        <>
+            <div className="board-row">
+                <Square value="1" />
+                <Square value="2" />
+                <Square value="3" />
+            </div>
+            <div className="board-row">
+                <Square value="4" />
+                <Square value="5" />
+                <Square value="6" />
+            </div>
+            <div className="board-row">
+                <Square value="7" />
+                <Square value="8" />
+                <Square value="9" />
+            </div>
+        </>
+    );
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -512,15 +512,15 @@ Let's fill the `Square` component with an `X` when you click it. Declare a funct
 
 ```js
 function Square({ value }) {
-	function handleClick() {
-		console.log("clicked!");
-	}
+    function handleClick() {
+        console.log("clicked!");
+    }
 
-	return (
-		<button className="square" on_click={handleClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={handleClick}>
+            {value}
+        </button>
+    );
 }
 ```
 
@@ -555,25 +555,25 @@ Since the `Square` component no longer accepts props anymore, you'll remove the
 ```js
 // ...
 export default function Board() {
-	return (
-		<>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-		</>
-	);
+    return (
+        <>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+        </>
+    );
 }
 ```
 
@@ -581,17 +581,17 @@ Now you'll change `Square` to display an "X" when clicked. Replace the `console.
 
 ```js
 function Square() {
-	const [value, setValue] = useState(null);
+    const [value, setValue] = useState(null);
 
-	function handleClick() {
-		setValue("X");
-	}
+    function handleClick() {
+        setValue("X");
+    }
 
-	return (
-		<button className="square" on_click={handleClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={handleClick}>
+            {value}
+        </button>
+    );
 }
 ```
 
@@ -607,84 +607,84 @@ After you've made the above changes, your code will look like this:
 import { useState } from "react";
 
 function Square() {
-	const [value, setValue] = useState(null);
+    const [value, setValue] = useState(null);
 
-	function handleClick() {
-		setValue("X");
-	}
+    function handleClick() {
+        setValue("X");
+    }
 
-	return (
-		<button className="square" on_click={handleClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={handleClick}>
+            {value}
+        </button>
+    );
 }
 
 export default function Board() {
-	return (
-		<>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-			<div className="board-row">
-				<Square />
-				<Square />
-				<Square />
-			</div>
-		</>
-	);
+    return (
+        <>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+            <div className="board-row">
+                <Square />
+                <Square />
+                <Square />
+            </div>
+        </>
+    );
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -740,26 +740,26 @@ Now your `Board` component needs to pass the `value` prop down to each `Square`
 
 ```js
 export default function Board() {
-	const [squares, setSquares] = useState(Array(9).fill(null));
-	return (
-		<>
-			<div className="board-row">
-				<Square value={squares[0]} />
-				<Square value={squares[1]} />
-				<Square value={squares[2]} />
-			</div>
-			<div className="board-row">
-				<Square value={squares[3]} />
-				<Square value={squares[4]} />
-				<Square value={squares[5]} />
-			</div>
-			<div className="board-row">
-				<Square value={squares[6]} />
-				<Square value={squares[7]} />
-				<Square value={squares[8]} />
-			</div>
-		</>
-	);
+    const [squares, setSquares] = useState(Array(9).fill(null));
+    return (
+        <>
+            <div className="board-row">
+                <Square value={squares[0]} />
+                <Square value={squares[1]} />
+                <Square value={squares[2]} />
+            </div>
+            <div className="board-row">
+                <Square value={squares[3]} />
+                <Square value={squares[4]} />
+                <Square value={squares[5]} />
+            </div>
+            <div className="board-row">
+                <Square value={squares[6]} />
+                <Square value={squares[7]} />
+                <Square value={squares[8]} />
+            </div>
+        </>
+    );
 }
 ```
 
@@ -767,7 +767,7 @@ Next, you'll edit the `Square` component to receive the `value` prop from the Bo
 
 ```js
 function Square({ value }) {
-	return <button className="square">{value}</button>;
+    return <button className="square">{value}</button>;
 }
 ```
 
@@ -781,75 +781,75 @@ And your code should look like this:
 import { useState } from "react";
 
 function Square({ value }) {
-	return <button className="square">{value}</button>;
+    return <button className="square">{value}</button>;
 }
 
 export default function Board() {
-	const [squares, setSquares] = useState(Array(9).fill(null));
-	return (
-		<>
-			<div className="board-row">
-				<Square value={squares[0]} />
-				<Square value={squares[1]} />
-				<Square value={squares[2]} />
-			</div>
-			<div className="board-row">
-				<Square value={squares[3]} />
-				<Square value={squares[4]} />
-				<Square value={squares[5]} />
-			</div>
-			<div className="board-row">
-				<Square value={squares[6]} />
-				<Square value={squares[7]} />
-				<Square value={squares[8]} />
-			</div>
-		</>
-	);
+    const [squares, setSquares] = useState(Array(9).fill(null));
+    return (
+        <>
+            <div className="board-row">
+                <Square value={squares[0]} />
+                <Square value={squares[1]} />
+                <Square value={squares[2]} />
+            </div>
+            <div className="board-row">
+                <Square value={squares[3]} />
+                <Square value={squares[4]} />
+                <Square value={squares[5]} />
+            </div>
+            <div className="board-row">
+                <Square value={squares[6]} />
+                <Square value={squares[7]} />
+                <Square value={squares[8]} />
+            </div>
+        </>
+    );
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -861,11 +861,11 @@ Instead, you'll pass down a function from the `Board` component to the `Square`
 
 ```js
 function Square({ value }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 ```
 
@@ -873,11 +873,11 @@ Next, you'll add the `onSquareClick` function to the `Square` component's props:
 
 ```js
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 ```
 
@@ -982,53 +982,53 @@ Now you need to update the other eight squares to call `handleClick` from the ar
 
 ```js
 export default function Board() {
-	// ...
-	return (
-		<>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    // ...
+    return (
+        <>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 ```
 
@@ -1044,113 +1044,113 @@ This is what your code should look like:
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 export default function Board() {
-	const [squares, setSquares] = useState(Array(9).fill(null));
-
-	function handleClick(i) {
-		const nextSquares = squares.slice();
-		nextSquares[i] = "X";
-		setSquares(nextSquares);
-	}
-
-	return (
-		<>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    const [squares, setSquares] = useState(Array(9).fill(null));
+
+    function handleClick(i) {
+        const nextSquares = squares.slice();
+        nextSquares[i] = "X";
+        setSquares(nextSquares);
+    }
+
+    return (
+        <>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -1204,10 +1204,10 @@ You'll set the first move to be "X" by default. Let's keep track of this by addi
 
 ```js
 function Board() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [squares, setSquares] = useState(Array(9).fill(null));
+    const [xIsNext, setXIsNext] = useState(true);
+    const [squares, setSquares] = useState(Array(9).fill(null));
 
-	// ...
+    // ...
 }
 ```
 
@@ -1247,11 +1247,11 @@ When you mark a square with a `X` or an `O` you aren't first checking to see if
 
 ```js
 function handleClick(i) {
-	if (squares[i]) {
-		return;
-	}
-	const nextSquares = squares.slice();
-	//...
+    if (squares[i]) {
+        return;
+    }
+    const nextSquares = squares.slice();
+    //...
 }
 ```
 
@@ -1261,122 +1261,122 @@ Now you can only add `X`'s or `O`'s to empty squares! Here is what your code sho
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 export default function Board() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [squares, setSquares] = useState(Array(9).fill(null));
-
-	function handleClick(i) {
-		if (squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		setSquares(nextSquares);
-		setXIsNext(!xIsNext);
-	}
-
-	return (
-		<>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    const [xIsNext, setXIsNext] = useState(true);
+    const [squares, setSquares] = useState(Array(9).fill(null));
+
+    function handleClick(i) {
+        if (squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        setSquares(nextSquares);
+        setXIsNext(!xIsNext);
+    }
+
+    return (
+        <>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -1386,31 +1386,31 @@ Now that the players can take turns, you'll want to show when the game is won an
 
 ```js
 export default function Board() {
-	//...
+    //...
 }
 
 function calculateWinner(squares) {
-	const lines = [
-		[0, 1, 2],
-		[3, 4, 5],
-		[6, 7, 8],
-		[0, 3, 6],
-		[1, 4, 7],
-		[2, 5, 8],
-		[0, 4, 8],
-		[2, 4, 6],
-	];
-	for (let i = 0; i < lines.length; i++) {
-		const [a, b, c] = lines[i];
-		if (
-			squares[a] &&
-			squares[a] === squares[b] &&
-			squares[a] === squares[c]
-		) {
-			return squares[a];
-		}
-	}
-	return null;
+    const lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ];
+    for (let i = 0; i < lines.length; i++) {
+        const [a, b, c] = lines[i];
+        if (
+            squares[a] &&
+            squares[a] === squares[b] &&
+            squares[a] === squares[c]
+        ) {
+            return squares[a];
+        }
+    }
+    return null;
 }
 ```
 
@@ -1424,11 +1424,11 @@ You will call `calculateWinner(squares)` in the `Board` component's `handleClick
 
 ```js
 function handleClick(i) {
-	if (squares[i] || calculateWinner(squares)) {
-		return;
-	}
-	const nextSquares = squares.slice();
-	//...
+    if (squares[i] || calculateWinner(squares)) {
+        return;
+    }
+    const nextSquares = squares.slice();
+    //...
 }
 ```
 
@@ -1460,155 +1460,155 @@ Congratulations! You now have a working tic-tac-toe game. And you've just learne
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 export default function Board() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [squares, setSquares] = useState(Array(9).fill(null));
-
-	function handleClick(i) {
-		if (calculateWinner(squares) || squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		setSquares(nextSquares);
-		setXIsNext(!xIsNext);
-	}
-
-	const winner = calculateWinner(squares);
-	let status;
-	if (winner) {
-		status = "Winner: " + winner;
-	} else {
-		status = "Next player: " + (xIsNext ? "X" : "O");
-	}
-
-	return (
-		<>
-			<div className="status">{status}</div>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    const [xIsNext, setXIsNext] = useState(true);
+    const [squares, setSquares] = useState(Array(9).fill(null));
+
+    function handleClick(i) {
+        if (calculateWinner(squares) || squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        setSquares(nextSquares);
+        setXIsNext(!xIsNext);
+    }
+
+    const winner = calculateWinner(squares);
+    let status;
+    if (winner) {
+        status = "Winner: " + winner;
+    } else {
+        status = "Next player: " + (xIsNext ? "X" : "O");
+    }
+
+    return (
+        <>
+            <div className="status">{status}</div>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 
 function calculateWinner(squares) {
-	const lines = [
-		[0, 1, 2],
-		[3, 4, 5],
-		[6, 7, 8],
-		[0, 3, 6],
-		[1, 4, 7],
-		[2, 5, 8],
-		[0, 4, 8],
-		[2, 4, 6],
-	];
-	for (let i = 0; i < lines.length; i++) {
-		const [a, b, c] = lines[i];
-		if (
-			squares[a] &&
-			squares[a] === squares[b] &&
-			squares[a] === squares[c]
-		) {
-			return squares[a];
-		}
-	}
-	return null;
+    const lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ];
+    for (let i = 0; i < lines.length; i++) {
+        const [a, b, c] = lines[i];
+        if (
+            squares[a] &&
+            squares[a] === squares[b] &&
+            squares[a] === squares[c]
+        ) {
+            return squares[a];
+        }
+    }
+    return null;
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -1626,13 +1626,13 @@ You'll store the past `squares` arrays in another array called `history`, which
 
 ```jsx
 [
-	// Before first move
-	[null, null, null, null, null, null, null, null, null],
-	// After first move
-	[null, null, null, null, "X", null, null, null, null],
-	// After second move
-	[null, null, null, null, "X", null, null, null, "O"],
-	// ...
+    // Before first move
+    [null, null, null, null, null, null, null, null, null],
+    // After first move
+    [null, null, null, null, "X", null, null, null, null],
+    // After second move
+    [null, null, null, null, "X", null, null, null, "O"],
+    // ...
 ];
 ```
 
@@ -1646,20 +1646,20 @@ First, add a `Game` component with `export default`. Have it render the `Board`
 
 ```js
 function Board() {
-	// ...
+    // ...
 }
 
 export default function Game() {
-	return (
-		<div className="game">
-			<div className="game-board">
-				<Board />
-			</div>
-			<div className="game-info">
-				<ol>{/*TODO*/}</ol>
-			</div>
-		</div>
-	);
+    return (
+        <div className="game">
+            <div className="game-board">
+                <Board />
+            </div>
+            <div className="game-info">
+                <ol>{/*TODO*/}</ol>
+            </div>
+        </div>
+    );
 }
 ```
 
@@ -1711,10 +1711,10 @@ Let's make the `Board` component fully controlled by the props it receives. Chan
 
 ```js
 function Board({ xIsNext, squares, onPlay }) {
-	function handleClick(i) {
-		//...
-	}
-	// ...
+    function handleClick(i) {
+        //...
+    }
+    // ...
 }
 ```
 
@@ -1722,19 +1722,19 @@ Now replace the `setSquares` and `setXIsNext` calls in `handleClick` in the `Boa
 
 ```js
 function Board({ xIsNext, squares, onPlay }) {
-	function handleClick(i) {
-		if (calculateWinner(squares) || squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		onPlay(nextSquares);
-	}
-	//...
+    function handleClick(i) {
+        if (calculateWinner(squares) || squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        onPlay(nextSquares);
+    }
+    //...
 }
 ```
 
@@ -1746,12 +1746,12 @@ The `handlePlay` function needs to update `Game`'s state to trigger a re-render,
 
 ```js
 export default function Game() {
-	//...
-	function handlePlay(nextSquares) {
-		setHistory([...history, nextSquares]);
-		setXIsNext(!xIsNext);
-	}
-	//...
+    //...
+    function handlePlay(nextSquares) {
+        setHistory([...history, nextSquares]);
+        setXIsNext(!xIsNext);
+    }
+    //...
 }
 ```
 
@@ -1765,177 +1765,177 @@ At this point, you've moved the state to live in the `Game` component, and the U
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 function Board({ xIsNext, squares, onPlay }) {
-	function handleClick(i) {
-		if (calculateWinner(squares) || squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		onPlay(nextSquares);
-	}
-
-	const winner = calculateWinner(squares);
-	let status;
-	if (winner) {
-		status = "Winner: " + winner;
-	} else {
-		status = "Next player: " + (xIsNext ? "X" : "O");
-	}
-
-	return (
-		<>
-			<div className="status">{status}</div>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    function handleClick(i) {
+        if (calculateWinner(squares) || squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        onPlay(nextSquares);
+    }
+
+    const winner = calculateWinner(squares);
+    let status;
+    if (winner) {
+        status = "Winner: " + winner;
+    } else {
+        status = "Next player: " + (xIsNext ? "X" : "O");
+    }
+
+    return (
+        <>
+            <div className="status">{status}</div>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 
 export default function Game() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const currentSquares = history[history.length - 1];
-
-	function handlePlay(nextSquares) {
-		setHistory([...history, nextSquares]);
-		setXIsNext(!xIsNext);
-	}
-
-	return (
-		<div className="game">
-			<div className="game-board">
-				<Board
-					xIsNext={xIsNext}
-					squares={currentSquares}
-					onPlay={handlePlay}
-				/>
-			</div>
-			<div className="game-info">
-				<ol>{/*TODO*/}</ol>
-			</div>
-		</div>
-	);
+    const [xIsNext, setXIsNext] = useState(true);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const currentSquares = history[history.length - 1];
+
+    function handlePlay(nextSquares) {
+        setHistory([...history, nextSquares]);
+        setXIsNext(!xIsNext);
+    }
+
+    return (
+        <div className="game">
+            <div className="game-board">
+                <Board
+                    xIsNext={xIsNext}
+                    squares={currentSquares}
+                    onPlay={handlePlay}
+                />
+            </div>
+            <div className="game-info">
+                <ol>{/*TODO*/}</ol>
+            </div>
+        </div>
+    );
 }
 
 function calculateWinner(squares) {
-	const lines = [
-		[0, 1, 2],
-		[3, 4, 5],
-		[6, 7, 8],
-		[0, 3, 6],
-		[1, 4, 7],
-		[2, 5, 8],
-		[0, 4, 8],
-		[2, 4, 6],
-	];
-	for (let i = 0; i < lines.length; i++) {
-		const [a, b, c] = lines[i];
-		if (
-			squares[a] &&
-			squares[a] === squares[b] &&
-			squares[a] === squares[c]
-		) {
-			return squares[a];
-		}
-	}
-	return null;
+    const lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ];
+    for (let i = 0; i < lines.length; i++) {
+        const [a, b, c] = lines[i];
+        if (
+            squares[a] &&
+            squares[a] === squares[b] &&
+            squares[a] === squares[c]
+        ) {
+            return squares[a];
+        }
+    }
+    return null;
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -1955,47 +1955,47 @@ You'll use `map` to transform your `history` of moves into React elements repres
 
 ```js
 export default function Game() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const currentSquares = history[history.length - 1];
-
-	function handlePlay(nextSquares) {
-		setHistory([...history, nextSquares]);
-		setXIsNext(!xIsNext);
-	}
-
-	function jumpTo(nextMove) {
-		// TODO
-	}
-
-	const moves = history.map((squares, move) => {
-		let description;
-		if (move > 0) {
-			description = "Go to move #" + move;
-		} else {
-			description = "Go to game start";
-		}
-		return (
-			<li>
-				<button on_click={() => jumpTo(move)}>{description}</button>
-			</li>
-		);
-	});
-
-	return (
-		<div className="game">
-			<div className="game-board">
-				<Board
-					xIsNext={xIsNext}
-					squares={currentSquares}
-					onPlay={handlePlay}
-				/>
-			</div>
-			<div className="game-info">
-				<ol>{moves}</ol>
-			</div>
-		</div>
-	);
+    const [xIsNext, setXIsNext] = useState(true);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const currentSquares = history[history.length - 1];
+
+    function handlePlay(nextSquares) {
+        setHistory([...history, nextSquares]);
+        setXIsNext(!xIsNext);
+    }
+
+    function jumpTo(nextMove) {
+        // TODO
+    }
+
+    const moves = history.map((squares, move) => {
+        let description;
+        if (move > 0) {
+            description = "Go to move #" + move;
+        } else {
+            description = "Go to game start";
+        }
+        return (
+            <li>
+                <button on_click={() => jumpTo(move)}>{description}</button>
+            </li>
+        );
+    });
+
+    return (
+        <div className="game">
+            <div className="game-board">
+                <Board
+                    xIsNext={xIsNext}
+                    squares={currentSquares}
+                    onPlay={handlePlay}
+                />
+            </div>
+            <div className="game-info">
+                <ol>{moves}</ol>
+            </div>
+        </div>
+    );
 }
 ```
 
@@ -2005,196 +2005,196 @@ You can see what your code should look like below. Note that you should see an e
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 function Board({ xIsNext, squares, onPlay }) {
-	function handleClick(i) {
-		if (calculateWinner(squares) || squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		onPlay(nextSquares);
-	}
-
-	const winner = calculateWinner(squares);
-	let status;
-	if (winner) {
-		status = "Winner: " + winner;
-	} else {
-		status = "Next player: " + (xIsNext ? "X" : "O");
-	}
-
-	return (
-		<>
-			<div className="status">{status}</div>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    function handleClick(i) {
+        if (calculateWinner(squares) || squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        onPlay(nextSquares);
+    }
+
+    const winner = calculateWinner(squares);
+    let status;
+    if (winner) {
+        status = "Winner: " + winner;
+    } else {
+        status = "Next player: " + (xIsNext ? "X" : "O");
+    }
+
+    return (
+        <>
+            <div className="status">{status}</div>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 
 export default function Game() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const currentSquares = history[history.length - 1];
-
-	function handlePlay(nextSquares) {
-		setHistory([...history, nextSquares]);
-		setXIsNext(!xIsNext);
-	}
-
-	function jumpTo(nextMove) {
-		// TODO
-	}
-
-	const moves = history.map((squares, move) => {
-		let description;
-		if (move > 0) {
-			description = "Go to move #" + move;
-		} else {
-			description = "Go to game start";
-		}
-		return (
-			<li>
-				<button on_click={() => jumpTo(move)}>{description}</button>
-			</li>
-		);
-	});
-
-	return (
-		<div className="game">
-			<div className="game-board">
-				<Board
-					xIsNext={xIsNext}
-					squares={currentSquares}
-					onPlay={handlePlay}
-				/>
-			</div>
-			<div className="game-info">
-				<ol>{moves}</ol>
-			</div>
-		</div>
-	);
+    const [xIsNext, setXIsNext] = useState(true);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const currentSquares = history[history.length - 1];
+
+    function handlePlay(nextSquares) {
+        setHistory([...history, nextSquares]);
+        setXIsNext(!xIsNext);
+    }
+
+    function jumpTo(nextMove) {
+        // TODO
+    }
+
+    const moves = history.map((squares, move) => {
+        let description;
+        if (move > 0) {
+            description = "Go to move #" + move;
+        } else {
+            description = "Go to game start";
+        }
+        return (
+            <li>
+                <button on_click={() => jumpTo(move)}>{description}</button>
+            </li>
+        );
+    });
+
+    return (
+        <div className="game">
+            <div className="game-board">
+                <Board
+                    xIsNext={xIsNext}
+                    squares={currentSquares}
+                    onPlay={handlePlay}
+                />
+            </div>
+            <div className="game-info">
+                <ol>{moves}</ol>
+            </div>
+        </div>
+    );
 }
 
 function calculateWinner(squares) {
-	const lines = [
-		[0, 1, 2],
-		[3, 4, 5],
-		[6, 7, 8],
-		[0, 3, 6],
-		[1, 4, 7],
-		[2, 5, 8],
-		[0, 4, 8],
-		[2, 4, 6],
-	];
-	for (let i = 0; i < lines.length; i++) {
-		const [a, b, c] = lines[i];
-		if (
-			squares[a] &&
-			squares[a] === squares[b] &&
-			squares[a] === squares[c]
-		) {
-			return squares[a];
-		}
-	}
-	return null;
+    const lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ];
+    for (let i = 0; i < lines.length; i++) {
+        const [a, b, c] = lines[i];
+        if (
+            squares[a] &&
+            squares[a] === squares[b] &&
+            squares[a] === squares[c]
+        ) {
+            return squares[a];
+        }
+    }
+    return null;
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -2227,7 +2227,7 @@ In addition to the updated counts, a human reading this would probably say that
 
 ```js
 <li key={user.id}>
-	{user.name}: {user.taskCount} tasks left
+    {user.name}: {user.taskCount} tasks left
 </li>
 ```
 
@@ -2251,12 +2251,12 @@ In the `Game` function, you can add the key as `<li key={move}>`, and if you rel
 
 ```js
 const moves = history.map((squares, move) => {
-	//...
-	return (
-		<li key={move}>
-			<button on_click={() => jumpTo(move)}>{description}</button>
-		</li>
-	);
+    //...
+    return (
+        <li key={move}>
+            <button on_click={() => jumpTo(move)}>{description}</button>
+        </li>
+    );
 });
 ```
 
@@ -2264,196 +2264,196 @@ const moves = history.map((squares, move) => {
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 function Board({ xIsNext, squares, onPlay }) {
-	function handleClick(i) {
-		if (calculateWinner(squares) || squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		onPlay(nextSquares);
-	}
-
-	const winner = calculateWinner(squares);
-	let status;
-	if (winner) {
-		status = "Winner: " + winner;
-	} else {
-		status = "Next player: " + (xIsNext ? "X" : "O");
-	}
-
-	return (
-		<>
-			<div className="status">{status}</div>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    function handleClick(i) {
+        if (calculateWinner(squares) || squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        onPlay(nextSquares);
+    }
+
+    const winner = calculateWinner(squares);
+    let status;
+    if (winner) {
+        status = "Winner: " + winner;
+    } else {
+        status = "Next player: " + (xIsNext ? "X" : "O");
+    }
+
+    return (
+        <>
+            <div className="status">{status}</div>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 
 export default function Game() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const currentSquares = history[history.length - 1];
-
-	function handlePlay(nextSquares) {
-		setHistory([...history, nextSquares]);
-		setXIsNext(!xIsNext);
-	}
-
-	function jumpTo(nextMove) {
-		// TODO
-	}
-
-	const moves = history.map((squares, move) => {
-		let description;
-		if (move > 0) {
-			description = "Go to move #" + move;
-		} else {
-			description = "Go to game start";
-		}
-		return (
-			<li key={move}>
-				<button on_click={() => jumpTo(move)}>{description}</button>
-			</li>
-		);
-	});
-
-	return (
-		<div className="game">
-			<div className="game-board">
-				<Board
-					xIsNext={xIsNext}
-					squares={currentSquares}
-					onPlay={handlePlay}
-				/>
-			</div>
-			<div className="game-info">
-				<ol>{moves}</ol>
-			</div>
-		</div>
-	);
+    const [xIsNext, setXIsNext] = useState(true);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const currentSquares = history[history.length - 1];
+
+    function handlePlay(nextSquares) {
+        setHistory([...history, nextSquares]);
+        setXIsNext(!xIsNext);
+    }
+
+    function jumpTo(nextMove) {
+        // TODO
+    }
+
+    const moves = history.map((squares, move) => {
+        let description;
+        if (move > 0) {
+            description = "Go to move #" + move;
+        } else {
+            description = "Go to game start";
+        }
+        return (
+            <li key={move}>
+                <button on_click={() => jumpTo(move)}>{description}</button>
+            </li>
+        );
+    });
+
+    return (
+        <div className="game">
+            <div className="game-board">
+                <Board
+                    xIsNext={xIsNext}
+                    squares={currentSquares}
+                    onPlay={handlePlay}
+                />
+            </div>
+            <div className="game-info">
+                <ol>{moves}</ol>
+            </div>
+        </div>
+    );
 }
 
 function calculateWinner(squares) {
-	const lines = [
-		[0, 1, 2],
-		[3, 4, 5],
-		[6, 7, 8],
-		[0, 3, 6],
-		[1, 4, 7],
-		[2, 5, 8],
-		[0, 4, 8],
-		[2, 4, 6],
-	];
-	for (let i = 0; i < lines.length; i++) {
-		const [a, b, c] = lines[i];
-		if (
-			squares[a] &&
-			squares[a] === squares[b] &&
-			squares[a] === squares[c]
-		) {
-			return squares[a];
-		}
-	}
-	return null;
+    const lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ];
+    for (let i = 0; i < lines.length; i++) {
+        const [a, b, c] = lines[i];
+        if (
+            squares[a] &&
+            squares[a] === squares[b] &&
+            squares[a] === squares[c]
+        ) {
+            return squares[a];
+        }
+    }
+    return null;
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -2461,11 +2461,11 @@ Before you can implement `jumpTo`, you need the `Game` component to keep track o
 
 ```js
 export default function Game() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const [currentMove, setCurrentMove] = useState(0);
-	const currentSquares = history[history.length - 1];
-	//...
+    const [xIsNext, setXIsNext] = useState(true);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const [currentMove, setCurrentMove] = useState(0);
+    const currentSquares = history[history.length - 1];
+    //...
 }
 ```
 
@@ -2473,12 +2473,12 @@ Next, update the `jumpTo` function inside `Game` to update that `currentMove`. Y
 
 ```js
 export default function Game() {
-	// ...
-	function jumpTo(nextMove) {
-		setCurrentMove(nextMove);
-		setXIsNext(nextMove % 2 === 0);
-	}
-	//...
+    // ...
+    function jumpTo(nextMove) {
+        setCurrentMove(nextMove);
+        setXIsNext(nextMove % 2 === 0);
+    }
+    //...
 }
 ```
 
@@ -2489,10 +2489,10 @@ You will now make two changes to the `Game`'s `handlePlay` function which is cal
 
 ```js
 function handlePlay(nextSquares) {
-	const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
-	setHistory(nextHistory);
-	setCurrentMove(nextHistory.length - 1);
-	setXIsNext(!xIsNext);
+    const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+    setHistory(nextHistory);
+    setCurrentMove(nextHistory.length - 1);
+    setXIsNext(!xIsNext);
 }
 ```
 
@@ -2500,12 +2500,12 @@ Finally, you will modify the `Game` component to render the currently selected m
 
 ```js
 export default function Game() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const [currentMove, setCurrentMove] = useState(0);
-	const currentSquares = history[currentMove];
+    const [xIsNext, setXIsNext] = useState(true);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const [currentMove, setCurrentMove] = useState(0);
+    const currentSquares = history[currentMove];
 
-	// ...
+    // ...
 }
 ```
 
@@ -2515,199 +2515,199 @@ If you click on any step in the game's history, the tic-tac-toe board should imm
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 function Board({ xIsNext, squares, onPlay }) {
-	function handleClick(i) {
-		if (calculateWinner(squares) || squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		onPlay(nextSquares);
-	}
-
-	const winner = calculateWinner(squares);
-	let status;
-	if (winner) {
-		status = "Winner: " + winner;
-	} else {
-		status = "Next player: " + (xIsNext ? "X" : "O");
-	}
-
-	return (
-		<>
-			<div className="status">{status}</div>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    function handleClick(i) {
+        if (calculateWinner(squares) || squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        onPlay(nextSquares);
+    }
+
+    const winner = calculateWinner(squares);
+    let status;
+    if (winner) {
+        status = "Winner: " + winner;
+    } else {
+        status = "Next player: " + (xIsNext ? "X" : "O");
+    }
+
+    return (
+        <>
+            <div className="status">{status}</div>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 
 export default function Game() {
-	const [xIsNext, setXIsNext] = useState(true);
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const [currentMove, setCurrentMove] = useState(0);
-	const currentSquares = history[currentMove];
-
-	function handlePlay(nextSquares) {
-		const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
-		setHistory(nextHistory);
-		setCurrentMove(nextHistory.length - 1);
-		setXIsNext(!xIsNext);
-	}
-
-	function jumpTo(nextMove) {
-		setCurrentMove(nextMove);
-		setXIsNext(nextMove % 2 === 0);
-	}
-
-	const moves = history.map((squares, move) => {
-		let description;
-		if (move > 0) {
-			description = "Go to move #" + move;
-		} else {
-			description = "Go to game start";
-		}
-		return (
-			<li key={move}>
-				<button on_click={() => jumpTo(move)}>{description}</button>
-			</li>
-		);
-	});
-
-	return (
-		<div className="game">
-			<div className="game-board">
-				<Board
-					xIsNext={xIsNext}
-					squares={currentSquares}
-					onPlay={handlePlay}
-				/>
-			</div>
-			<div className="game-info">
-				<ol>{moves}</ol>
-			</div>
-		</div>
-	);
+    const [xIsNext, setXIsNext] = useState(true);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const [currentMove, setCurrentMove] = useState(0);
+    const currentSquares = history[currentMove];
+
+    function handlePlay(nextSquares) {
+        const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+        setHistory(nextHistory);
+        setCurrentMove(nextHistory.length - 1);
+        setXIsNext(!xIsNext);
+    }
+
+    function jumpTo(nextMove) {
+        setCurrentMove(nextMove);
+        setXIsNext(nextMove % 2 === 0);
+    }
+
+    const moves = history.map((squares, move) => {
+        let description;
+        if (move > 0) {
+            description = "Go to move #" + move;
+        } else {
+            description = "Go to game start";
+        }
+        return (
+            <li key={move}>
+                <button on_click={() => jumpTo(move)}>{description}</button>
+            </li>
+        );
+    });
+
+    return (
+        <div className="game">
+            <div className="game-board">
+                <Board
+                    xIsNext={xIsNext}
+                    squares={currentSquares}
+                    onPlay={handlePlay}
+                />
+            </div>
+            <div className="game-info">
+                <ol>{moves}</ol>
+            </div>
+        </div>
+    );
 }
 
 function calculateWinner(squares) {
-	const lines = [
-		[0, 1, 2],
-		[3, 4, 5],
-		[6, 7, 8],
-		[0, 3, 6],
-		[1, 4, 7],
-		[2, 5, 8],
-		[0, 4, 8],
-		[2, 4, 6],
-	];
-	for (let i = 0; i < lines.length; i++) {
-		const [a, b, c] = lines[i];
-		if (
-			squares[a] &&
-			squares[a] === squares[b] &&
-			squares[a] === squares[c]
-		) {
-			return squares[a];
-		}
-	}
-	return null;
+    const lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ];
+    for (let i = 0; i < lines.length; i++) {
+        const [a, b, c] = lines[i];
+        if (
+            squares[a] &&
+            squares[a] === squares[b] &&
+            squares[a] === squares[c]
+        ) {
+            return squares[a];
+        }
+    }
+    return null;
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
@@ -2719,21 +2719,21 @@ There's no reason for you to store both of these in state. In fact, always try t
 
 ```js
 export default function Game() {
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const [currentMove, setCurrentMove] = useState(0);
-	const xIsNext = currentMove % 2 === 0;
-	const currentSquares = history[currentMove];
-
-	function handlePlay(nextSquares) {
-		const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
-		setHistory(nextHistory);
-		setCurrentMove(nextHistory.length - 1);
-	}
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const [currentMove, setCurrentMove] = useState(0);
+    const xIsNext = currentMove % 2 === 0;
+    const currentSquares = history[currentMove];
+
+    function handlePlay(nextSquares) {
+        const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+        setHistory(nextHistory);
+        setCurrentMove(nextHistory.length - 1);
+    }
 
-	function jumpTo(nextMove) {
-		setCurrentMove(nextMove);
-	}
-	// ...
+    function jumpTo(nextMove) {
+        setCurrentMove(nextMove);
+    }
+    // ...
 }
 ```
 
@@ -2756,197 +2756,197 @@ Check out the final result here:
 import { useState } from "react";
 
 function Square({ value, onSquareClick }) {
-	return (
-		<button className="square" on_click={onSquareClick}>
-			{value}
-		</button>
-	);
+    return (
+        <button className="square" on_click={onSquareClick}>
+            {value}
+        </button>
+    );
 }
 
 function Board({ xIsNext, squares, onPlay }) {
-	function handleClick(i) {
-		if (calculateWinner(squares) || squares[i]) {
-			return;
-		}
-		const nextSquares = squares.slice();
-		if (xIsNext) {
-			nextSquares[i] = "X";
-		} else {
-			nextSquares[i] = "O";
-		}
-		onPlay(nextSquares);
-	}
-
-	const winner = calculateWinner(squares);
-	let status;
-	if (winner) {
-		status = "Winner: " + winner;
-	} else {
-		status = "Next player: " + (xIsNext ? "X" : "O");
-	}
-
-	return (
-		<>
-			<div className="status">{status}</div>
-			<div className="board-row">
-				<Square
-					value={squares[0]}
-					onSquareClick={() => handleClick(0)}
-				/>
-				<Square
-					value={squares[1]}
-					onSquareClick={() => handleClick(1)}
-				/>
-				<Square
-					value={squares[2]}
-					onSquareClick={() => handleClick(2)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[3]}
-					onSquareClick={() => handleClick(3)}
-				/>
-				<Square
-					value={squares[4]}
-					onSquareClick={() => handleClick(4)}
-				/>
-				<Square
-					value={squares[5]}
-					onSquareClick={() => handleClick(5)}
-				/>
-			</div>
-			<div className="board-row">
-				<Square
-					value={squares[6]}
-					onSquareClick={() => handleClick(6)}
-				/>
-				<Square
-					value={squares[7]}
-					onSquareClick={() => handleClick(7)}
-				/>
-				<Square
-					value={squares[8]}
-					onSquareClick={() => handleClick(8)}
-				/>
-			</div>
-		</>
-	);
+    function handleClick(i) {
+        if (calculateWinner(squares) || squares[i]) {
+            return;
+        }
+        const nextSquares = squares.slice();
+        if (xIsNext) {
+            nextSquares[i] = "X";
+        } else {
+            nextSquares[i] = "O";
+        }
+        onPlay(nextSquares);
+    }
+
+    const winner = calculateWinner(squares);
+    let status;
+    if (winner) {
+        status = "Winner: " + winner;
+    } else {
+        status = "Next player: " + (xIsNext ? "X" : "O");
+    }
+
+    return (
+        <>
+            <div className="status">{status}</div>
+            <div className="board-row">
+                <Square
+                    value={squares[0]}
+                    onSquareClick={() => handleClick(0)}
+                />
+                <Square
+                    value={squares[1]}
+                    onSquareClick={() => handleClick(1)}
+                />
+                <Square
+                    value={squares[2]}
+                    onSquareClick={() => handleClick(2)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[3]}
+                    onSquareClick={() => handleClick(3)}
+                />
+                <Square
+                    value={squares[4]}
+                    onSquareClick={() => handleClick(4)}
+                />
+                <Square
+                    value={squares[5]}
+                    onSquareClick={() => handleClick(5)}
+                />
+            </div>
+            <div className="board-row">
+                <Square
+                    value={squares[6]}
+                    onSquareClick={() => handleClick(6)}
+                />
+                <Square
+                    value={squares[7]}
+                    onSquareClick={() => handleClick(7)}
+                />
+                <Square
+                    value={squares[8]}
+                    onSquareClick={() => handleClick(8)}
+                />
+            </div>
+        </>
+    );
 }
 
 export default function Game() {
-	const [history, setHistory] = useState([Array(9).fill(null)]);
-	const [currentMove, setCurrentMove] = useState(0);
-	const xIsNext = currentMove % 2 === 0;
-	const currentSquares = history[currentMove];
-
-	function handlePlay(nextSquares) {
-		const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
-		setHistory(nextHistory);
-		setCurrentMove(nextHistory.length - 1);
-	}
-
-	function jumpTo(nextMove) {
-		setCurrentMove(nextMove);
-	}
-
-	const moves = history.map((squares, move) => {
-		let description;
-		if (move > 0) {
-			description = "Go to move #" + move;
-		} else {
-			description = "Go to game start";
-		}
-		return (
-			<li key={move}>
-				<button on_click={() => jumpTo(move)}>{description}</button>
-			</li>
-		);
-	});
-
-	return (
-		<div className="game">
-			<div className="game-board">
-				<Board
-					xIsNext={xIsNext}
-					squares={currentSquares}
-					onPlay={handlePlay}
-				/>
-			</div>
-			<div className="game-info">
-				<ol>{moves}</ol>
-			</div>
-		</div>
-	);
+    const [history, setHistory] = useState([Array(9).fill(null)]);
+    const [currentMove, setCurrentMove] = useState(0);
+    const xIsNext = currentMove % 2 === 0;
+    const currentSquares = history[currentMove];
+
+    function handlePlay(nextSquares) {
+        const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
+        setHistory(nextHistory);
+        setCurrentMove(nextHistory.length - 1);
+    }
+
+    function jumpTo(nextMove) {
+        setCurrentMove(nextMove);
+    }
+
+    const moves = history.map((squares, move) => {
+        let description;
+        if (move > 0) {
+            description = "Go to move #" + move;
+        } else {
+            description = "Go to game start";
+        }
+        return (
+            <li key={move}>
+                <button on_click={() => jumpTo(move)}>{description}</button>
+            </li>
+        );
+    });
+
+    return (
+        <div className="game">
+            <div className="game-board">
+                <Board
+                    xIsNext={xIsNext}
+                    squares={currentSquares}
+                    onPlay={handlePlay}
+                />
+            </div>
+            <div className="game-info">
+                <ol>{moves}</ol>
+            </div>
+        </div>
+    );
 }
 
 function calculateWinner(squares) {
-	const lines = [
-		[0, 1, 2],
-		[3, 4, 5],
-		[6, 7, 8],
-		[0, 3, 6],
-		[1, 4, 7],
-		[2, 5, 8],
-		[0, 4, 8],
-		[2, 4, 6],
-	];
-	for (let i = 0; i < lines.length; i++) {
-		const [a, b, c] = lines[i];
-		if (
-			squares[a] &&
-			squares[a] === squares[b] &&
-			squares[a] === squares[c]
-		) {
-			return squares[a];
-		}
-	}
-	return null;
+    const lines = [
+        [0, 1, 2],
+        [3, 4, 5],
+        [6, 7, 8],
+        [0, 3, 6],
+        [1, 4, 7],
+        [2, 5, 8],
+        [0, 4, 8],
+        [2, 4, 6],
+    ];
+    for (let i = 0; i < lines.length; i++) {
+        const [a, b, c] = lines[i];
+        if (
+            squares[a] &&
+            squares[a] === squares[b] &&
+            squares[a] === squares[c]
+        ) {
+            return squares[a];
+        }
+    }
+    return null;
 }
 ```
 
 ```css
 * {
-	box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 body {
-	font-family: sans-serif;
-	margin: 20px;
-	padding: 0;
+    font-family: sans-serif;
+    margin: 20px;
+    padding: 0;
 }
 
 .square {
-	background: #fff;
-	border: 1px solid #999;
-	float: left;
-	font-size: 24px;
-	font-weight: bold;
-	line-height: 34px;
-	height: 34px;
-	margin-right: -1px;
-	margin-top: -1px;
-	padding: 0;
-	text-align: center;
-	width: 34px;
+    background: #fff;
+    border: 1px solid #999;
+    float: left;
+    font-size: 24px;
+    font-weight: bold;
+    line-height: 34px;
+    height: 34px;
+    margin-right: -1px;
+    margin-top: -1px;
+    padding: 0;
+    text-align: center;
+    width: 34px;
 }
 
 .board-row:after {
-	clear: both;
-	content: "";
-	display: table;
+    clear: both;
+    content: "";
+    display: table;
 }
 
 .status {
-	margin-bottom: 10px;
+    margin-bottom: 10px;
 }
 .game {
-	display: flex;
-	flex-direction: row;
+    display: flex;
+    flex-direction: row;
 }
 
 .game-info {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 ```
 
diff --git a/tasks.py b/tasks.py
deleted file mode 100644
index e19476202..000000000
--- a/tasks.py
+++ /dev/null
@@ -1,426 +0,0 @@
-from __future__ import annotations
-
-import json
-import logging
-import os
-import re
-import sys
-from dataclasses import dataclass
-from pathlib import Path
-from shutil import rmtree
-from typing import TYPE_CHECKING, Any, Callable
-
-import semver
-import toml
-from invoke import task
-from invoke.context import Context
-from invoke.exceptions import Exit
-
-# --- Typing Preamble ------------------------------------------------------------------
-
-
-if TYPE_CHECKING:
-    # not available in typing module until Python 3.8
-    # not available in typing module until Python 3.10
-    from typing import Literal, Protocol, TypeAlias
-
-    class ReleasePrepFunc(Protocol):
-        def __call__(
-            self, context: Context, package: PackageInfo
-        ) -> Callable[[bool], None]:
-            ...
-
-    LanguageName: TypeAlias = "Literal['py', 'js']"
-
-
-# --- Constants ------------------------------------------------------------------------
-
-
-log = logging.getLogger(__name__)
-log.setLevel("INFO")
-log_handler = logging.StreamHandler(sys.stdout)
-log_handler.setFormatter(logging.Formatter("%(message)s"))
-log.addHandler(log_handler)
-
-
-# --- Constants ------------------------------------------------------------------------
-
-
-ROOT = Path(__file__).parent
-DOCS_DIR = ROOT / "docs"
-SRC_DIR = ROOT / "src"
-JS_DIR = SRC_DIR / "js"
-PY_DIR = SRC_DIR / "py"
-PY_PROJECTS = [p for p in PY_DIR.iterdir() if (p / "pyproject.toml").exists()]
-TAG_PATTERN = re.compile(
-    # start
-    r"^"
-    # package name
-    r"(?P<name>[0-9a-zA-Z-@/]+)-"
-    # package version
-    r"v(?P<version>[0-9][0-9a-zA-Z-\.\+]*)"
-    # end
-    r"$"
-)
-
-
-# --- Tasks ----------------------------------------------------------------------------
-
-
-@task
-def env(context: Context):
-    """Install development environment"""
-    env_py(context)
-    env_js(context)
-
-
-@task
-def env_py(context: Context):
-    """Install Python development environment"""
-    for py_proj in PY_PROJECTS:
-        py_proj_toml = toml.load(py_proj / "pyproject.toml")
-        hatch_default_env = py_proj_toml["tool"]["hatch"]["envs"].get("default", {})
-        hatch_default_features = hatch_default_env.get("features", [])
-        hatch_default_deps = hatch_default_env.get("dependencies", [])
-        with context.cd(py_proj):
-            context.run(f"pip install '.[{','.join(hatch_default_features)}]'")
-        context.run(f"pip install {' '.join(map(repr, hatch_default_deps))}")
-
-
-@task
-def env_js(context: Context):
-    """Install JS development environment"""
-    in_js(
-        context,
-        "npm ci",
-        "npm run build",
-        hide="out",
-    )
-
-
-@task
-def lint_py(context: Context, fix: bool = False):
-    """Run linters and type checkers"""
-    if fix:
-        context.run("ruff --fix .")
-    else:
-        context.run("ruff .")
-        context.run("black --check --diff .")
-        in_py(
-            context,
-            f"flake8 --toml-config '{ROOT / 'pyproject.toml'}' .",
-            "hatch run lint:all",
-        )
-
-
-@task(pre=[env_js])
-def lint_js(context: Context, fix: bool = False):
-    """Run linters and type checkers"""
-    if fix:
-        in_js(context, "npm run fix:format")
-    else:
-        in_js(context, "npm run check:format")
-    in_js(context, "npm run check:types")
-
-
-@task
-def test_py(context: Context, no_cov: bool = False):
-    """Run test suites"""
-    in_py(
-        context,
-        f"hatch run {'test' if no_cov else 'cov'} --maxfail=3 --reruns=3",
-    )
-
-
-@task(pre=[env_js])
-def test_js(context: Context):
-    """Run test suites"""
-    in_js(context, "npm run check:tests")
-
-
-@task(pre=[env_py])
-def test_docs(context: Context):
-    with context.cd(DOCS_DIR):
-        context.run("poetry install")
-        context.run(
-            "poetry run sphinx-build "
-            "-a "  # re-write all output files
-            "-T "  # show full tracebacks
-            "-W "  # turn warnings into errors
-            "--keep-going "  # complete the build, but still report warnings as errors
-            "-b doctest "
-            "source "
-            "build",
-        )
-        context.run("poetry run sphinx-build -b doctest source build")
-
-    context.run("docker build . --file ./docs/Dockerfile")
-
-
-@task
-def docs(context: Context, docker: bool = False):
-    """Build documentation"""
-    if docker:
-        _docker_docs(context)
-    else:
-        _live_docs(context)
-
-
-def _docker_docs(context: Context) -> None:
-    context.run("docker build . --file ./docs/Dockerfile --tag reactpy-docs:latest")
-    context.run(
-        "docker run -it -p 5000:5000 -e DEBUG=1 --rm reactpy-docs:latest", pty=True
-    )
-
-
-def _live_docs(context: Context) -> None:
-    with context.cd(DOCS_DIR):
-        context.run("poetry install")
-        context.run(
-            "poetry run python main.py "
-            "--open-browser "
-            # watch python source too
-            "--watch=../src/py "
-            # for some reason this matches absolute paths
-            "--ignore=**/_auto/* "
-            "--ignore=**/_static/custom.js "
-            "--ignore=**/node_modules/* "
-            "--ignore=**/package-lock.json "
-            "-a "
-            "-E "
-            "-b "
-            "html "
-            "source "
-            "build"
-        )
-
-
-@task
-def publish(context: Context, dry_run: str = ""):
-    """Publish packages that have been tagged for release in the current commit
-
-    To perform a test run use `--dry-run=<name>-v<version>` to specify a comma-separated
-    list of tags to simulate a release of. For example, to simulate a release of
-    `@foo/bar-v1.2.3` and `baz-v4.5.6` use `--dry-run=@foo/bar-v1.2.3,baz-v4.5.6`.
-    """
-    packages = get_packages(context)
-
-    release_prep: dict[LanguageName, ReleasePrepFunc] = {
-        "js": prepare_js_release,
-        "py": prepare_py_release,
-    }
-
-    parsed_tags: list[TagInfo] = [
-        parse_tag(tag) for tag in dry_run.split(",") or get_current_tags(context)
-    ]
-
-    publishers: list[Callable[[bool], None]] = []
-    for tag_info in parsed_tags:
-        if tag_info.name not in packages:
-            msg = f"Tag {tag_info.tag} references package {tag_info.name} that does not exist"
-            raise Exit(msg)
-
-        pkg_info = packages[tag_info.name]
-        if pkg_info.version != tag_info.version:
-            msg = f"Tag {tag_info.tag} references version {tag_info.version} of package {tag_info.name}, but the current version is {pkg_info.version}"
-            raise Exit(msg)
-
-        log.info(f"Preparing {tag_info.name} for release...")
-        publishers.append(release_prep[pkg_info.language](context, pkg_info))
-
-    for publish in publishers:
-        publish(bool(dry_run))
-
-
-# --- Utilities ------------------------------------------------------------------------
-
-
-def in_py(context: Context, *commands: str, **kwargs: Any) -> None:
-    for p in PY_PROJECTS:
-        with context.cd(p):
-            log.info(f"Running commands in {p}...")
-            for c in commands:
-                context.run(c, **kwargs)
-
-
-def in_js(context: Context, *commands: str, **kwargs: Any) -> None:
-    with context.cd(JS_DIR):
-        for c in commands:
-            context.run(c, **kwargs)
-
-
-def get_packages(context: Context) -> dict[str, PackageInfo]:
-    packages: list[PackageInfo] = []
-
-    for maybe_pkg in PY_DIR.glob("*"):
-        if (maybe_pkg / "pyproject.toml").exists():
-            packages.append(make_py_pkg_info(context, maybe_pkg))
-        else:
-            msg = f"unexpected dir or file: {maybe_pkg}"
-            raise Exit(msg)
-
-    packages_dir = JS_DIR / "packages"
-    for maybe_pkg in packages_dir.glob("*"):
-        if (maybe_pkg / "package.json").exists():
-            packages.append(make_js_pkg_info(maybe_pkg))
-        elif maybe_pkg.is_dir():
-            for maybe_ns_pkg in maybe_pkg.glob("*"):
-                if (maybe_ns_pkg / "package.json").exists():
-                    packages.append(make_js_pkg_info(maybe_ns_pkg))
-        else:
-            msg = f"unexpected dir or file: {maybe_pkg}"
-            raise Exit(msg)
-
-    packages_by_name = {p.name: p for p in packages}
-    if len(packages_by_name) != len(packages):
-        raise Exit("duplicate package names detected")
-
-    return packages_by_name
-
-
-def make_py_pkg_info(context: Context, pkg_dir: Path) -> PackageInfo:
-    with context.cd(pkg_dir):
-        proj_metadata = json.loads(context.run("hatch project metadata").stdout)
-    return PackageInfo(
-        name=proj_metadata["name"],
-        path=pkg_dir,
-        language="py",
-        version=proj_metadata["version"],
-    )
-
-
-def make_js_pkg_info(pkg_dir: Path) -> PackageInfo:
-    with (pkg_dir / "package.json").open() as f:
-        pkg_json = json.load(f)
-    return PackageInfo(
-        name=pkg_json["name"],
-        path=pkg_dir,
-        language="js",
-        version=pkg_json["version"],
-    )
-
-
-@dataclass
-class PackageInfo:
-    name: str
-    path: Path
-    language: LanguageName
-    version: str
-
-
-def get_current_tags(context: Context) -> set[str]:
-    """Get tags for the current commit"""
-    # check if unstaged changes
-    try:
-        context.run("git diff --cached --exit-code", hide=True)
-        context.run("git diff --exit-code", hide=True)
-    except Exception:
-        log.error("Cannot create a tag - there are uncommitted changes")
-        return set()
-
-    tags_per_commit: dict[str, list[str]] = {}
-    for commit, tag in map(
-        str.split,
-        context.run(
-            r"git for-each-ref --format '%(objectname) %(refname:short)' refs/tags",
-            hide=True,
-        ).stdout.splitlines(),
-    ):
-        tags_per_commit.setdefault(commit, []).append(tag)
-
-    current_commit = context.run(
-        "git rev-parse HEAD", silent=True, external=True
-    ).stdout.strip()
-    tags = set(tags_per_commit.get(current_commit, set()))
-
-    if not tags:
-        log.error("No tags found for current commit")
-
-    for t in tags:
-        if not TAG_PATTERN.match(t):
-            msg = f"Invalid tag: {t}"
-            raise Exit(msg)
-
-    log.info(f"Found tags: {tags}")
-
-    return tags
-
-
-def parse_tag(tag: str) -> TagInfo:
-    match = TAG_PATTERN.match(tag)
-    if not match:
-        msg = f"Invalid tag: {tag}"
-        raise Exit(msg)
-
-    version = match.group("version")
-    if not semver.Version.is_valid(version):
-        raise Exit(f"Invalid version: {version} in tag {tag}")
-
-    return TagInfo(tag=tag, name=match.group("name"), version=match.group("version"))
-
-
-@dataclass
-class TagInfo:
-    tag: str
-    name: str
-    version: str
-
-
-def prepare_js_release(
-    context: Context, package: PackageInfo
-) -> Callable[[bool], None]:
-    node_auth_token = os.getenv("NODE_AUTH_TOKEN")
-    if node_auth_token is None:
-        msg = "NODE_AUTH_TOKEN environment variable must be set"
-        raise Exit(msg)
-
-    with context.cd(JS_DIR):
-        context.run("npm ci")
-        context.run("npm run build")
-
-    def publish(dry_run: bool) -> None:
-        with context.cd(JS_DIR):
-            if dry_run:
-                context.run(f"npm --workspace {package.name} pack --dry-run")
-                return
-            context.run(
-                f"npm --workspace {package.name} publish --access public",
-                env={"NODE_AUTH_TOKEN": node_auth_token},
-            )
-
-    return publish
-
-
-def prepare_py_release(
-    context: Context, package: PackageInfo
-) -> Callable[[bool], None]:
-    twine_username = os.getenv("PYPI_USERNAME")
-    twine_password = os.getenv("PYPI_PASSWORD")
-
-    if not (twine_password and twine_username):
-        msg = "PYPI_USERNAME and PYPI_PASSWORD environment variables must be set"
-        raise Exit(msg)
-
-    for build_dir_name in ["build", "dist"]:
-        build_dir_path = Path.cwd() / build_dir_name
-        if build_dir_path.exists():
-            rmtree(str(build_dir_path))
-
-    with context.cd(package.path):
-        context.run("hatch build")
-
-    def publish(dry_run: bool):
-        with context.cd(package.path):
-            if dry_run:
-                context.run("twine check dist/*")
-                return
-
-            context.run(
-                "twine upload dist/*",
-                env_dict={
-                    "TWINE_USERNAME": twine_username,
-                    "TWINE_PASSWORD": twine_password,
-                },
-            )
-
-    return publish

From 1e935761ec3622a7b1d4842b997d360ad67b4672 Mon Sep 17 00:00:00 2001
From: Archmonger <16909269+Archmonger@users.noreply.github.com>
Date: Fri, 14 Mar 2025 23:28:15 -0700
Subject: [PATCH 49/49] fix a few pages

---
 docs/mkdocs.yml                               |   45 +-
 .../django.md => about/licenses.md}           |    0
 ...d => components-and-hooks-must-be-pure.md} |    0
 docs/src/reference/overview.md                |   38 +
 ...md => react-calls-components-and-hooks.md} |    0
 .../reference/{jupyter.md => reactpy-csr.md}  |    0
 .../{plotly-dash.md => reactpy-middleware.md} |    0
 docs/src/reference/{sanic.md => reactpy.md}   |    0
 .../{starlette.md => rules-of-hooks.md}       |    0
 .../{tornado.md => rules-of-react.md}         |    0
 docs/src/reference/use-async-effect.md        | 1860 +++++++++++++++++
 11 files changed, 1919 insertions(+), 24 deletions(-)
 rename docs/src/{reference/django.md => about/licenses.md} (100%)
 rename docs/src/reference/{fastapi.md => components-and-hooks-must-be-pure.md} (100%)
 create mode 100644 docs/src/reference/overview.md
 rename docs/src/reference/{flask.md => react-calls-components-and-hooks.md} (100%)
 rename docs/src/reference/{jupyter.md => reactpy-csr.md} (100%)
 rename docs/src/reference/{plotly-dash.md => reactpy-middleware.md} (100%)
 rename docs/src/reference/{sanic.md => reactpy.md} (100%)
 rename docs/src/reference/{starlette.md => rules-of-hooks.md} (100%)
 rename docs/src/reference/{tornado.md => rules-of-react.md} (100%)
 create mode 100644 docs/src/reference/use-async-effect.md

diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index 3a7e0694b..77af61224 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -11,17 +11,17 @@ nav:
                 - Add React to an Existing Project: learn/add-react-to-an-existing-project.md
           - Setup:
                 - Editor Setup: learn/editor-setup.md
-                - React Developer Tools 🚫: learn/react-developer-tools.md
-                - Extra Tools and Packages 🚧: learn/extra-tools-and-packages.md
-          - More Tutorials:
-                - "Tutorial: React Bootstrap 🚫": learn/tutorial-react-bootstrap.md
-                - "Tutorial: Material UI 🚫": learn/tutorial-material-ui.md
+                # - ReactPy Developer Tools 🚫: learn/react-developer-tools.md
+                - Tools, Modules, and Packages 🚧: learn/extra-tools-and-packages.md
+          # - More Tutorials:
+          #       - "Tutorial: React Bootstrap 🚫": learn/tutorial-react-bootstrap.md
+          #       - "Tutorial: Material UI 🚫": learn/tutorial-material-ui.md
     - Learn:
           - Describing the UI:
                 - Your First Component 🚧: learn/your-first-component.md
                 - Importing and Exporting Components 🚧: learn/importing-and-exporting-components.md
-                - Writing Markup with PSX 🚫: learn/writing-markup-with-psx.md
-                - Python in PSX with Curly Braces 🚫: learn/python-in-psx-with-curly-braces.md
+                # - Writing Markup with PSX 🚫: learn/writing-markup-with-psx.md
+                # - Python in PSX with Curly Braces 🚫: learn/python-in-psx-with-curly-braces.md
                 - Passing Props to a Component 🚧: learn/passing-props-to-a-component.md
                 - Conditional Rendering 🚧: learn/conditional-rendering.md
                 - Rendering Lists 🚧: learn/rendering-lists.md
@@ -59,9 +59,11 @@ nav:
                 - Creating Backends 🚧: learn/creating-backends.md
                 - Manually Register a Client 🚧: learn/manually-register-a-client.md
     - Reference:
+          - Overview: reference/overview.md
           - Hooks:
                 - Use State 🚧: reference/use-state.md
                 - Use Effect 🚧: reference/use-effect.md
+                - Use Async Effect 🚧: reference/use-async-effect.md
                 - Use Context 🚧: reference/use-context.md
                 - Use Reducer 🚧: reference/use-reducer.md
                 - Use Callback 🚧: reference/use-callback.md
@@ -71,26 +73,20 @@ nav:
                 - Use Connection 🚧: reference/use-connection.md
                 - Use Scope 🚧: reference/use-scope.md
                 - Use Location 🚧: reference/use-location.md
-                - Use ID 🚫: reference/use-id.md
-                - Use Deferred Value 🚫: reference/use-deferred-value.md
-                - Use Imperative Handle 🚫: reference/use-imperative-handle.md
-                - Use Insertion Effect 🚫: reference/use-insertion-effect.md
-                - Use Layout Effect 🚫: reference/use-layout-effect.md
-                - Use Sync External Store 🚫: reference/use-sync-external-store.md
-                - Use Transition 🚫: reference/use-transition.md
           - HTML Tags:
                 - Common Props 🚧: reference/common-props.md
                 - Usage 🚧: reference/usage.md
-          - Backends:
-                - FastAPI 🚧: reference/fastapi.md
-                - Flask 🚧: reference/flask.md
-                - Sanic 🚧: reference/sanic.md
-                - Starlette 🚧: reference/starlette.md
-                - Tornado 🚧: reference/tornado.md
-                - Django 🚧: reference/django.md
-                - Jupyter 🚧: reference/jupyter.md
-                - Plotly Dash 🚧: reference/plotly-dash.md
-                - PyScript 🚫: reference/pyscript.md
+          - Executors:
+                - ReactPy: reference/reactpy.md
+                - ReactPyCsr 🚧: reference/reactpy-csr.md
+                - ReactPyMiddleware 🚧: reference/reactpy-middleware.md
+          - Rules of React:
+                - Overview 🚧: reference/rules-of-react.md
+                - Components and Hooks must be pure 🚧: reference/components-and-hooks-must-be-pure.md
+                - React calls Components and Hooks 🚧: reference/react-calls-components-and-hooks.md
+                - Rules of Hooks 🚧: reference/rules-of-hooks.md
+          # - Template Tags:
+          #       - Jinja 🚧: reference/jinja.md
           - Protocol Structure 🚧: reference/protocol-structure.md
           - Client API 🚧: reference/client-api.md
     - About:
@@ -99,6 +95,7 @@ nav:
           - Running Tests 🚧: about/running-tests.md
           - Contributing Code 🚧: about/code.md
           - Contributing Documentation 🚧: about/docs.md
+          - Licenses 🚧: about/licenses.md
 
 theme:
     name: material
diff --git a/docs/src/reference/django.md b/docs/src/about/licenses.md
similarity index 100%
rename from docs/src/reference/django.md
rename to docs/src/about/licenses.md
diff --git a/docs/src/reference/fastapi.md b/docs/src/reference/components-and-hooks-must-be-pure.md
similarity index 100%
rename from docs/src/reference/fastapi.md
rename to docs/src/reference/components-and-hooks-must-be-pure.md
diff --git a/docs/src/reference/overview.md b/docs/src/reference/overview.md
new file mode 100644
index 000000000..51d6b24b9
--- /dev/null
+++ b/docs/src/reference/overview.md
@@ -0,0 +1,38 @@
+<p class="intro" markdown>
+
+This section provides detailed reference documentation for working with React. For an introduction to React, please visit the [Learn](/learn) section.
+
+</p>
+
+The React reference documentation is broken down into functional subsections:
+
+## React
+
+Programmatic React features:
+
+-   [Hooks](/reference/react/hooks) - Use different React features from your components.
+-   [Components](/reference/react/components) - Built-in components that you can use in your JSX.
+-   [APIs](/reference/react/apis) - APIs that are useful for defining components.
+-   [Directives](/reference/rsc/directives) - Provide instructions to bundlers compatible with React Server Components.
+
+## React DOM
+
+React-dom contains features that are only supported for web applications (which run in the browser DOM environment). This section is broken into the following:
+
+-   [Hooks](/reference/react-dom/hooks) - Hooks for web applications which run in the browser DOM environment.
+-   [Components](/reference/react-dom/components) - React supports all of the browser built-in HTML and SVG components.
+-   [APIs](/reference/react-dom) - The `react-dom` package contains methods supported only in web applications.
+-   [Client APIs](/reference/react-dom/client) - The `react-dom/client` APIs let you render React components on the client (in the browser).
+-   [Server APIs](/reference/react-dom/server) - The `react-dom/server` APIs let you render React components to HTML on the server.
+
+## Rules of React
+
+React has idioms — or rules — for how to express patterns in a way that is easy to understand and yields high-quality applications:
+
+-   [Components and Hooks must be pure](/reference/rules/components-and-hooks-must-be-pure) – Purity makes your code easier to understand, debug, and allows React to automatically optimize your components and hooks correctly.
+-   [React calls Components and Hooks](/reference/rules/react-calls-components-and-hooks) – React is responsible for rendering components and hooks when necessary to optimize the user experience.
+-   [Rules of Hooks](/reference/rules/rules-of-hooks) – Hooks are defined using JavaScript functions, but they represent a special type of reusable UI logic with restrictions on where they can be called.
+
+## Legacy APIs
+
+-   [Legacy APIs](/reference/react/legacy) - Exported from the `react` package, but not recommended for use in newly written code.
diff --git a/docs/src/reference/flask.md b/docs/src/reference/react-calls-components-and-hooks.md
similarity index 100%
rename from docs/src/reference/flask.md
rename to docs/src/reference/react-calls-components-and-hooks.md
diff --git a/docs/src/reference/jupyter.md b/docs/src/reference/reactpy-csr.md
similarity index 100%
rename from docs/src/reference/jupyter.md
rename to docs/src/reference/reactpy-csr.md
diff --git a/docs/src/reference/plotly-dash.md b/docs/src/reference/reactpy-middleware.md
similarity index 100%
rename from docs/src/reference/plotly-dash.md
rename to docs/src/reference/reactpy-middleware.md
diff --git a/docs/src/reference/sanic.md b/docs/src/reference/reactpy.md
similarity index 100%
rename from docs/src/reference/sanic.md
rename to docs/src/reference/reactpy.md
diff --git a/docs/src/reference/starlette.md b/docs/src/reference/rules-of-hooks.md
similarity index 100%
rename from docs/src/reference/starlette.md
rename to docs/src/reference/rules-of-hooks.md
diff --git a/docs/src/reference/tornado.md b/docs/src/reference/rules-of-react.md
similarity index 100%
rename from docs/src/reference/tornado.md
rename to docs/src/reference/rules-of-react.md
diff --git a/docs/src/reference/use-async-effect.md b/docs/src/reference/use-async-effect.md
new file mode 100644
index 000000000..c11ea69cd
--- /dev/null
+++ b/docs/src/reference/use-async-effect.md
@@ -0,0 +1,1860 @@
+## Overview
+
+<p class="intro" markdown>
+
+`useEffect` is a React Hook that lets you [synchronize a component with an external system.](/learn/synchronizing-with-effects)
+
+```js
+useEffect(setup, dependencies?)
+```
+
+</p>
+
+---
+
+## Reference
+
+### `useEffect(setup, dependencies?)`
+
+Call `useEffect` at the top level of your component to declare an Effect:
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [serverUrl, roomId]);
+	// ...
+}
+```
+
+[See more examples below.](#usage)
+
+#### Parameters
+
+-   `setup`: The function with your Effect's logic. Your setup function may also optionally return a _cleanup_ function. When your component is added to the DOM, React will run your setup function. After every re-render with changed dependencies, React will first run the cleanup function (if you provided it) with the old values, and then run your setup function with the new values. After your component is removed from the DOM, React will run your cleanup function.
+
+-   **optional** `dependencies`: The list of all reactive values referenced inside of the `setup` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. If you omit this argument, your Effect will re-run after every re-render of the component. [See the difference between passing an array of dependencies, an empty array, and no dependencies at all.](#examples-dependencies)
+
+#### Returns
+
+`useEffect` returns `undefined`.
+
+#### Caveats
+
+-   `useEffect` is a Hook, so you can only call it **at the top level of your component** or your own Hooks. You can't call it inside loops or conditions. If you need that, extract a new component and move the state into it.
+
+-   If you're **not trying to synchronize with some external system,** [you probably don't need an Effect.](/learn/you-might-not-need-an-effect)
+
+-   When Strict Mode is on, React will **run one extra development-only setup+cleanup cycle** before the first real setup. This is a stress-test that ensures that your cleanup logic "mirrors" your setup logic and that it stops or undoes whatever the setup is doing. If this causes a problem, [implement the cleanup function.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+-   If some of your dependencies are objects or functions defined inside the component, there is a risk that they will **cause the Effect to re-run more often than needed.** To fix this, remove unnecessary [object](#removing-unnecessary-object-dependencies) and [function](#removing-unnecessary-function-dependencies) dependencies. You can also [extract state updates](#updating-state-based-on-previous-state-from-an-effect) and [non-reactive logic](#reading-the-latest-props-and-state-from-an-effect) outside of your Effect.
+
+-   If your Effect wasn't caused by an interaction (like a click), React will let the browser **paint the updated screen first before running your Effect.** If your Effect is doing something visual (for example, positioning a tooltip), and the delay is noticeable (for example, it flickers), replace `useEffect` with [`useLayoutEffect`.](/reference/react/useLayoutEffect)
+
+-   Even if your Effect was caused by an interaction (like a click), **the browser may repaint the screen before processing the state updates inside your Effect.** Usually, that's what you want. However, if you must block the browser from repainting the screen, you need to replace `useEffect` with [`useLayoutEffect`.](/reference/react/useLayoutEffect)
+
+-   Effects **only run on the client.** They don't run during server rendering.
+
+---
+
+## Usage
+
+### Connecting to an external system
+
+Some components need to stay connected to the network, some browser API, or a third-party library, while they are displayed on the page. These systems aren't controlled by React, so they are called _external._
+
+To [connect your component to some external system,](/learn/synchronizing-with-effects) call `useEffect` at the top level of your component:
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [serverUrl, roomId]);
+	// ...
+}
+```
+
+You need to pass two arguments to `useEffect`:
+
+1. A _setup function_ with <CodeStep step={1}>setup code</CodeStep> that connects to that system.
+    - It should return a _cleanup function_ with <CodeStep step={2}>cleanup code</CodeStep> that disconnects from that system.
+2. A <CodeStep step={3}>list of dependencies</CodeStep> including every value from your component used inside of those functions.
+
+**React calls your setup and cleanup functions whenever it's necessary, which may happen multiple times:**
+
+1. Your <CodeStep step={1}>setup code</CodeStep> runs when your component is added to the page _(mounts)_.
+2. After every re-render of your component where the <CodeStep step={3}>dependencies</CodeStep> have changed:
+    - First, your <CodeStep step={2}>cleanup code</CodeStep> runs with the old props and state.
+    - Then, your <CodeStep step={1}>setup code</CodeStep> runs with the new props and state.
+3. Your <CodeStep step={2}>cleanup code</CodeStep> runs one final time after your component is removed from the page _(unmounts)._
+
+**Let's illustrate this sequence for the example above.**
+
+When the `ChatRoom` component above gets added to the page, it will connect to the chat room with the initial `serverUrl` and `roomId`. If either `serverUrl` or `roomId` change as a result of a re-render (say, if the user picks a different chat room in a dropdown), your Effect will _disconnect from the previous room, and connect to the next one._ When the `ChatRoom` component is removed from the page, your Effect will disconnect one last time.
+
+**To [help you find bugs,](/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed) in development React runs <CodeStep step={1}>setup</CodeStep> and <CodeStep step={2}>cleanup</CodeStep> one extra time before the <CodeStep step={1}>setup</CodeStep>.** This is a stress-test that verifies your Effect's logic is implemented correctly. If this causes visible issues, your cleanup function is missing some logic. The cleanup function should stop or undo whatever the setup function was doing. The rule of thumb is that the user shouldn't be able to distinguish between the setup being called once (as in production) and a _setup_ → _cleanup_ → _setup_ sequence (as in development). [See common solutions.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+**Try to [write every Effect as an independent process](/learn/lifecycle-of-reactive-effects#each-effect-represents-a-separate-synchronization-process) and [think about a single setup/cleanup cycle at a time.](/learn/lifecycle-of-reactive-effects#thinking-from-the-effects-perspective)** It shouldn't matter whether your component is mounting, updating, or unmounting. When your cleanup logic correctly "mirrors" the setup logic, your Effect is resilient to running setup and cleanup as often as needed.
+
+<Note>
+
+An Effect lets you [keep your component synchronized](/learn/synchronizing-with-effects) with some external system (like a chat service). Here, _external system_ means any piece of code that's not controlled by React, such as:
+
+-   A timer managed with <CodeStep step={1}>[`setInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/setInterval)</CodeStep> and <CodeStep step={2}>[`clearInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval)</CodeStep>.
+-   An event subscription using <CodeStep step={1}>[`window.addEventListener()`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)</CodeStep> and <CodeStep step={2}>[`window.removeEventListener()`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener)</CodeStep>.
+-   A third-party animation library with an API like <CodeStep step={1}>`animation.start()`</CodeStep> and <CodeStep step={2}>`animation.reset()`</CodeStep>.
+
+**If you're not connecting to any external system, [you probably don't need an Effect.](/learn/you-might-not-need-an-effect)**
+
+</Note>
+
+<Recipes titleText="Examples of connecting to an external system" titleId="examples-connecting">
+
+#### Connecting to a chat server
+
+In this example, the `ChatRoom` component uses an Effect to stay connected to an external system defined in `chat.js`. Press "Open chat" to make the `ChatRoom` component appear. This sandbox runs in development mode, so there is an extra connect-and-disconnect cycle, as [explained here.](/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed) Try changing the `roomId` and `serverUrl` using the dropdown and the input, and see how the Effect re-connects to the chat. Press "Close chat" to see the Effect disconnect one last time.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId, serverUrl]);
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+#### Listening to a global browser event
+
+In this example, the external system is the browser DOM itself. Normally, you'd specify event listeners with JSX, but you can't listen to the global [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window) object this way. An Effect lets you connect to the `window` object and listen to its events. Listening to the `pointermove` event lets you track the cursor (or finger) position and update the red dot to move with it.
+
+```js
+import { useState, useEffect } from "react";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+
+	useEffect(() => {
+		function handleMove(e) {
+			setPosition({ x: e.clientX, y: e.clientY });
+		}
+		window.addEventListener("pointermove", handleMove);
+		return () => {
+			window.removeEventListener("pointermove", handleMove);
+		};
+	}, []);
+
+	return (
+		<div
+			style={{
+				position: "absolute",
+				backgroundColor: "pink",
+				borderRadius: "50%",
+				opacity: 0.6,
+				transform: `translate(${position.x}px, ${position.y}px)`,
+				pointerEvents: "none",
+				left: -20,
+				top: -20,
+				width: 40,
+				height: 40,
+			}}
+		/>
+	);
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+#### Triggering an animation
+
+In this example, the external system is the animation library in `animation.js`. It provides a JavaScript class called `FadeInAnimation` that takes a DOM node as an argument and exposes `start()` and `stop()` methods to control the animation. This component [uses a ref](/learn/manipulating-the-dom-with-refs) to access the underlying DOM node. The Effect reads the DOM node from the ref and automatically starts the animation for that node when the component appears.
+
+```js
+import { useState, useEffect, useRef } from "react";
+import { FadeInAnimation } from "./animation.js";
+
+function Welcome() {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		const animation = new FadeInAnimation(ref.current);
+		animation.start(1000);
+		return () => {
+			animation.stop();
+		};
+	}, []);
+
+	return (
+		<h1
+			ref={ref}
+			style={{
+				opacity: 0,
+				color: "white",
+				padding: 50,
+				textAlign: "center",
+				fontSize: 50,
+				backgroundImage:
+					"radial-gradient(circle, rgba(63,94,251,1) 0%, rgba(252,70,107,1) 100%)",
+			}}
+		>
+			Welcome
+		</h1>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Remove" : "Show"}
+			</button>
+			<hr />
+			{show && <Welcome />}
+		</>
+	);
+}
+```
+
+```js
+export class FadeInAnimation {
+	constructor(node) {
+		this.node = node;
+	}
+	start(duration) {
+		this.duration = duration;
+		if (this.duration === 0) {
+			// Jump to end immediately
+			this.onProgress(1);
+		} else {
+			this.onProgress(0);
+			// Start animating
+			this.startTime = performance.now();
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onFrame() {
+		const timePassed = performance.now() - this.startTime;
+		const progress = Math.min(timePassed / this.duration, 1);
+		this.onProgress(progress);
+		if (progress < 1) {
+			// We still have more frames to paint
+			this.frameId = requestAnimationFrame(() => this.onFrame());
+		}
+	}
+	onProgress(progress) {
+		this.node.style.opacity = progress;
+	}
+	stop() {
+		cancelAnimationFrame(this.frameId);
+		this.startTime = null;
+		this.frameId = null;
+		this.duration = 0;
+	}
+}
+```
+
+```css
+label,
+button {
+	display: block;
+	margin-bottom: 20px;
+}
+html,
+body {
+	min-height: 300px;
+}
+```
+
+#### Controlling a modal dialog
+
+In this example, the external system is the browser DOM. The `ModalDialog` component renders a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) element. It uses an Effect to synchronize the `isOpen` prop to the [`showModal()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/showModal) and [`close()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/close) method calls.
+
+```js
+import { useState } from "react";
+import ModalDialog from "./ModalDialog.js";
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button onClick={() => setShow(true)}>Open dialog</button>
+			<ModalDialog isOpen={show}>
+				Hello there!
+				<br />
+				<button
+					onClick={() => {
+						setShow(false);
+					}}
+				>
+					Close
+				</button>
+			</ModalDialog>
+		</>
+	);
+}
+```
+
+```js
+import { useEffect, useRef } from "react";
+
+export default function ModalDialog({ isOpen, children }) {
+	const ref = useRef();
+
+	useEffect(() => {
+		if (!isOpen) {
+			return;
+		}
+		const dialog = ref.current;
+		dialog.showModal();
+		return () => {
+			dialog.close();
+		};
+	}, [isOpen]);
+
+	return <dialog ref={ref}>{children}</dialog>;
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+#### Tracking element visibility
+
+In this example, the external system is again the browser DOM. The `App` component displays a long list, then a `Box` component, and then another long list. Scroll the list down. Notice that when the `Box` component appears in the viewport, the background color changes to black. To implement this, the `Box` component uses an Effect to manage an [`IntersectionObserver`](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API). This browser API notifies you when the DOM element is visible in the viewport.
+
+```js
+import Box from "./Box.js";
+
+export default function App() {
+	return (
+		<>
+			<LongSection />
+			<Box />
+			<LongSection />
+			<Box />
+			<LongSection />
+		</>
+	);
+}
+
+function LongSection() {
+	const items = [];
+	for (let i = 0; i < 50; i++) {
+		items.push(<li key={i}>Item #{i} (keep scrolling)</li>);
+	}
+	return <ul>{items}</ul>;
+}
+```
+
+```js
+import { useRef, useEffect } from "react";
+
+export default function Box() {
+	const ref = useRef(null);
+
+	useEffect(() => {
+		const div = ref.current;
+		const observer = new IntersectionObserver((entries) => {
+			const entry = entries[0];
+			if (entry.isIntersecting) {
+				document.body.style.backgroundColor = "black";
+				document.body.style.color = "white";
+			} else {
+				document.body.style.backgroundColor = "white";
+				document.body.style.color = "black";
+			}
+		});
+		observer.observe(div, {
+			threshold: 1.0,
+		});
+		return () => {
+			observer.disconnect();
+		};
+	}, []);
+
+	return (
+		<div
+			ref={ref}
+			style={{
+				margin: 20,
+				height: 100,
+				width: 100,
+				border: "2px solid black",
+				backgroundColor: "blue",
+			}}
+		/>
+	);
+}
+```
+
+</Recipes>
+
+---
+
+### Wrapping Effects in custom Hooks
+
+Effects are an ["escape hatch":](/learn/escape-hatches) you use them when you need to "step outside React" and when there is no better built-in solution for your use case. If you find yourself often needing to manually write Effects, it's usually a sign that you need to extract some [custom Hooks](/learn/reusing-logic-with-custom-hooks) for common behaviors your components rely on.
+
+For example, this `useChatRoom` custom Hook "hides" the logic of your Effect behind a more declarative API:
+
+```js
+function useChatRoom({ serverUrl, roomId }) {
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId, serverUrl]);
+}
+```
+
+Then you can use it from any component like this:
+
+```js
+function ChatRoom({ roomId }) {
+  const [serverUrl, setServerUrl] = useState('https://localhost:1234');
+
+  useChatRoom({
+    roomId: roomId,
+    serverUrl: serverUrl
+  });
+  // ...
+```
+
+There are also many excellent custom Hooks for every purpose available in the React ecosystem.
+
+[Learn more about wrapping Effects in custom Hooks.](/learn/reusing-logic-with-custom-hooks)
+
+<Recipes titleText="Examples of wrapping Effects in custom Hooks" titleId="examples-custom-hooks">
+
+#### Custom `useChatRoom` Hook
+
+This example is identical to one of the [earlier examples,](#examples-connecting) but the logic is extracted to a custom Hook.
+
+```js
+import { useState } from "react";
+import { useChatRoom } from "./useChatRoom.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useChatRoom({
+		roomId: roomId,
+		serverUrl: serverUrl,
+	});
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+import { useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+export function useChatRoom({ serverUrl, roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [roomId, serverUrl]);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+#### Custom `useWindowListener` Hook
+
+This example is identical to one of the [earlier examples,](#examples-connecting) but the logic is extracted to a custom Hook.
+
+```js
+import { useState } from "react";
+import { useWindowListener } from "./useWindowListener.js";
+
+export default function App() {
+	const [position, setPosition] = useState({ x: 0, y: 0 });
+
+	useWindowListener("pointermove", (e) => {
+		setPosition({ x: e.clientX, y: e.clientY });
+	});
+
+	return (
+		<div
+			style={{
+				position: "absolute",
+				backgroundColor: "pink",
+				borderRadius: "50%",
+				opacity: 0.6,
+				transform: `translate(${position.x}px, ${position.y}px)`,
+				pointerEvents: "none",
+				left: -20,
+				top: -20,
+				width: 40,
+				height: 40,
+			}}
+		/>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useWindowListener(eventType, listener) {
+	useEffect(() => {
+		window.addEventListener(eventType, listener);
+		return () => {
+			window.removeEventListener(eventType, listener);
+		};
+	}, [eventType, listener]);
+}
+```
+
+```css
+body {
+	min-height: 300px;
+}
+```
+
+#### Custom `useIntersectionObserver` Hook
+
+This example is identical to one of the [earlier examples,](#examples-connecting) but the logic is partially extracted to a custom Hook.
+
+```js
+import Box from "./Box.js";
+
+export default function App() {
+	return (
+		<>
+			<LongSection />
+			<Box />
+			<LongSection />
+			<Box />
+			<LongSection />
+		</>
+	);
+}
+
+function LongSection() {
+	const items = [];
+	for (let i = 0; i < 50; i++) {
+		items.push(<li key={i}>Item #{i} (keep scrolling)</li>);
+	}
+	return <ul>{items}</ul>;
+}
+```
+
+```js
+import { useRef, useEffect } from "react";
+import { useIntersectionObserver } from "./useIntersectionObserver.js";
+
+export default function Box() {
+	const ref = useRef(null);
+	const isIntersecting = useIntersectionObserver(ref);
+
+	useEffect(() => {
+		if (isIntersecting) {
+			document.body.style.backgroundColor = "black";
+			document.body.style.color = "white";
+		} else {
+			document.body.style.backgroundColor = "white";
+			document.body.style.color = "black";
+		}
+	}, [isIntersecting]);
+
+	return (
+		<div
+			ref={ref}
+			style={{
+				margin: 20,
+				height: 100,
+				width: 100,
+				border: "2px solid black",
+				backgroundColor: "blue",
+			}}
+		/>
+	);
+}
+```
+
+```js
+import { useState, useEffect } from "react";
+
+export function useIntersectionObserver(ref) {
+	const [isIntersecting, setIsIntersecting] = useState(false);
+
+	useEffect(() => {
+		const div = ref.current;
+		const observer = new IntersectionObserver((entries) => {
+			const entry = entries[0];
+			setIsIntersecting(entry.isIntersecting);
+		});
+		observer.observe(div, {
+			threshold: 1.0,
+		});
+		return () => {
+			observer.disconnect();
+		};
+	}, [ref]);
+
+	return isIntersecting;
+}
+```
+
+</Recipes>
+
+---
+
+### Controlling a non-React widget
+
+Sometimes, you want to keep an external system synchronized to some prop or state of your component.
+
+For example, if you have a third-party map widget or a video player component written without React, you can use an Effect to call methods on it that make its state match the current state of your React component. This Effect creates an instance of a `MapWidget` class defined in `map-widget.js`. When you change the `zoomLevel` prop of the `Map` component, the Effect calls the `setZoom()` on the class instance to keep it synchronized:
+
+```json package.json hidden
+{
+	"dependencies": {
+		"leaflet": "1.9.1",
+		"react": "latest",
+		"react-dom": "latest",
+		"react-scripts": "latest",
+		"remarkable": "2.0.1"
+	},
+	"scripts": {
+		"start": "react-scripts start",
+		"build": "react-scripts build",
+		"test": "react-scripts test --env=jsdom",
+		"eject": "react-scripts eject"
+	}
+}
+```
+
+```js
+import { useState } from "react";
+import Map from "./Map.js";
+
+export default function App() {
+	const [zoomLevel, setZoomLevel] = useState(0);
+	return (
+		<>
+			Zoom level: {zoomLevel}x
+			<button onClick={() => setZoomLevel(zoomLevel + 1)}>+</button>
+			<button onClick={() => setZoomLevel(zoomLevel - 1)}>-</button>
+			<hr />
+			<Map zoomLevel={zoomLevel} />
+		</>
+	);
+}
+```
+
+```js
+import { useRef, useEffect } from "react";
+import { MapWidget } from "./map-widget.js";
+
+export default function Map({ zoomLevel }) {
+	const containerRef = useRef(null);
+	const mapRef = useRef(null);
+
+	useEffect(() => {
+		if (mapRef.current === null) {
+			mapRef.current = new MapWidget(containerRef.current);
+		}
+
+		const map = mapRef.current;
+		map.setZoom(zoomLevel);
+	}, [zoomLevel]);
+
+	return <div style={{ width: 200, height: 200 }} ref={containerRef} />;
+}
+```
+
+```js
+import "leaflet/dist/leaflet.css";
+import * as L from "leaflet";
+
+export class MapWidget {
+	constructor(domNode) {
+		this.map = L.map(domNode, {
+			zoomControl: false,
+			doubleClickZoom: false,
+			boxZoom: false,
+			keyboard: false,
+			scrollWheelZoom: false,
+			zoomAnimation: false,
+			touchZoom: false,
+			zoomSnap: 0.1,
+		});
+		L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
+			maxZoom: 19,
+			attribution: "© OpenStreetMap",
+		}).addTo(this.map);
+		this.map.setView([0, 0], 0);
+	}
+	setZoom(level) {
+		this.map.setZoom(level);
+	}
+}
+```
+
+```css
+button {
+	margin: 5px;
+}
+```
+
+In this example, a cleanup function is not needed because the `MapWidget` class manages only the DOM node that was passed to it. After the `Map` React component is removed from the tree, both the DOM node and the `MapWidget` class instance will be automatically garbage-collected by the browser JavaScript engine.
+
+---
+
+### Fetching data with Effects
+
+You can use an Effect to fetch data for your component. Note that [if you use a framework,](/learn/start-a-new-react-project#production-grade-react-frameworks) using your framework's data fetching mechanism will be a lot more efficient than writing Effects manually.
+
+If you want to fetch data from an Effect manually, your code might look like this:
+
+```js
+import { useState, useEffect } from 'react';
+import { fetchBio } from './api.js';
+
+export default function Page() {
+  const [person, setPerson] = useState('Alice');
+  const [bio, setBio] = useState(null);
+
+  useEffect(() => {
+    let ignore = false;
+    setBio(null);
+    fetchBio(person).then(result => {
+      if (!ignore) {
+        setBio(result);
+      }
+    });
+    return () => {
+      ignore = true;
+    };
+  }, [person]);
+
+  // ...
+```
+
+Note the `ignore` variable which is initialized to `false`, and is set to `true` during cleanup. This ensures [your code doesn't suffer from "race conditions":](https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect) network responses may arrive in a different order than you sent them.
+
+```js
+import { useState, useEffect } from "react";
+import { fetchBio } from "./api.js";
+
+export default function Page() {
+	const [person, setPerson] = useState("Alice");
+	const [bio, setBio] = useState(null);
+	useEffect(() => {
+		let ignore = false;
+		setBio(null);
+		fetchBio(person).then((result) => {
+			if (!ignore) {
+				setBio(result);
+			}
+		});
+		return () => {
+			ignore = true;
+		};
+	}, [person]);
+
+	return (
+		<>
+			<select
+				value={person}
+				onChange={(e) => {
+					setPerson(e.target.value);
+				}}
+			>
+				<option value="Alice">Alice</option>
+				<option value="Bob">Bob</option>
+				<option value="Taylor">Taylor</option>
+			</select>
+			<hr />
+			<p>
+				<i>{bio ?? "Loading..."}</i>
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export async function fetchBio(person) {
+	const delay = person === "Bob" ? 2000 : 200;
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve("This is " + person + "’s bio.");
+		}, delay);
+	});
+}
+```
+
+You can also rewrite using the [`async` / `await`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) syntax, but you still need to provide a cleanup function:
+
+```js
+import { useState, useEffect } from "react";
+import { fetchBio } from "./api.js";
+
+export default function Page() {
+	const [person, setPerson] = useState("Alice");
+	const [bio, setBio] = useState(null);
+	useEffect(() => {
+		async function startFetching() {
+			setBio(null);
+			const result = await fetchBio(person);
+			if (!ignore) {
+				setBio(result);
+			}
+		}
+
+		let ignore = false;
+		startFetching();
+		return () => {
+			ignore = true;
+		};
+	}, [person]);
+
+	return (
+		<>
+			<select
+				value={person}
+				onChange={(e) => {
+					setPerson(e.target.value);
+				}}
+			>
+				<option value="Alice">Alice</option>
+				<option value="Bob">Bob</option>
+				<option value="Taylor">Taylor</option>
+			</select>
+			<hr />
+			<p>
+				<i>{bio ?? "Loading..."}</i>
+			</p>
+		</>
+	);
+}
+```
+
+```js
+export async function fetchBio(person) {
+	const delay = person === "Bob" ? 2000 : 200;
+	return new Promise((resolve) => {
+		setTimeout(() => {
+			resolve("This is " + person + "’s bio.");
+		}, delay);
+	});
+}
+```
+
+Writing data fetching directly in Effects gets repetitive and makes it difficult to add optimizations like caching and server rendering later. [It's easier to use a custom Hook--either your own or maintained by the community.](/learn/reusing-logic-with-custom-hooks#when-to-use-custom-hooks)
+
+<DeepDive>
+
+#### What are good alternatives to data fetching in Effects?
+
+Writing `fetch` calls inside Effects is a [popular way to fetch data](https://www.robinwieruch.de/react-hooks-fetch-data/), especially in fully client-side apps. This is, however, a very manual approach and it has significant downsides:
+
+-   **Effects don't run on the server.** This means that the initial server-rendered HTML will only include a loading state with no data. The client computer will have to download all JavaScript and render your app only to discover that now it needs to load the data. This is not very efficient.
+-   **Fetching directly in Effects makes it easy to create "network waterfalls".** You render the parent component, it fetches some data, renders the child components, and then they start fetching their data. If the network is not very fast, this is significantly slower than fetching all data in parallel.
+-   **Fetching directly in Effects usually means you don't preload or cache data.** For example, if the component unmounts and then mounts again, it would have to fetch the data again.
+-   **It's not very ergonomic.** There's quite a bit of boilerplate code involved when writing `fetch` calls in a way that doesn't suffer from bugs like [race conditions.](https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect)
+
+This list of downsides is not specific to React. It applies to fetching data on mount with any library. Like with routing, data fetching is not trivial to do well, so we recommend the following approaches:
+
+-   **If you use a [framework](/learn/start-a-new-react-project#production-grade-react-frameworks), use its built-in data fetching mechanism.** Modern React frameworks have integrated data fetching mechanisms that are efficient and don't suffer from the above pitfalls.
+-   **Otherwise, consider using or building a client-side cache.** Popular open source solutions include [React Query](https://react-query.tanstack.com/), [useSWR](https://swr.vercel.app/), and [React Router 6.4+.](https://beta.reactrouter.com/en/main/start/overview) You can build your own solution too, in which case you would use Effects under the hood but also add logic for deduplicating requests, caching responses, and avoiding network waterfalls (by preloading data or hoisting data requirements to routes).
+
+You can continue fetching data directly in Effects if neither of these approaches suit you.
+
+</DeepDive>
+
+---
+
+### Specifying reactive dependencies
+
+**Notice that you can't "choose" the dependencies of your Effect.** Every <CodeStep step={2}>reactive value</CodeStep> used by your Effect's code must be declared as a dependency. Your Effect's dependency list is determined by the surrounding code:
+
+```js
+function ChatRoom({ roomId }) {
+	// This is a reactive value
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234"); // This is a reactive value too
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId); // This Effect reads these reactive values
+		connection.connect();
+		return () => connection.disconnect();
+	}, [serverUrl, roomId]); // ✅ So you must specify them as dependencies of your Effect
+	// ...
+}
+```
+
+If either `serverUrl` or `roomId` change, your Effect will reconnect to the chat using the new values.
+
+**[Reactive values](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) include props and all variables and functions declared directly inside of your component.** Since `roomId` and `serverUrl` are reactive values, you can't remove them from the dependencies. If you try to omit them and [your linter is correctly configured for React,](/learn/editor-setup#linting) the linter will flag this as a mistake you need to fix:
+
+```js
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // 🔴 React Hook useEffect has missing dependencies: 'roomId' and 'serverUrl'
+	// ...
+}
+```
+
+**To remove a dependency, you need to ["prove" to the linter that it _doesn't need_ to be a dependency.](/learn/removing-effect-dependencies#removing-unnecessary-dependencies)** For example, you can move `serverUrl` out of your component to prove that it's not reactive and won't change on re-renders:
+
+```js
+const serverUrl = "https://localhost:1234"; // Not a reactive value anymore
+
+function ChatRoom({ roomId }) {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+Now that `serverUrl` is not a reactive value (and can't change on a re-render), it doesn't need to be a dependency. **If your Effect's code doesn't use any reactive values, its dependency list should be empty (`[]`):**
+
+```js
+const serverUrl = "https://localhost:1234"; // Not a reactive value anymore
+const roomId = "music"; // Not a reactive value anymore
+
+function ChatRoom() {
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []); // ✅ All dependencies declared
+	// ...
+}
+```
+
+[An Effect with empty dependencies](/learn/lifecycle-of-reactive-effects#what-an-effect-with-empty-dependencies-means) doesn't re-run when any of your component's props or state change.
+
+<Pitfall>
+
+If you have an existing codebase, you might have some Effects that suppress the linter like this:
+
+```js
+useEffect(() => {
+	// ...
+	// 🔴 Avoid suppressing the linter like this:
+	// eslint-ignore-next-line react-hooks/exhaustive-deps
+}, []);
+```
+
+**When dependencies don't match the code, there is a high risk of introducing bugs.** By suppressing the linter, you "lie" to React about the values your Effect depends on. [Instead, prove they're unnecessary.](/learn/removing-effect-dependencies#removing-unnecessary-dependencies)
+
+</Pitfall>
+
+<Recipes titleText="Examples of passing reactive dependencies" titleId="examples-dependencies">
+
+#### Passing a dependency array
+
+If you specify the dependencies, your Effect runs **after the initial render _and_ after re-renders with changed dependencies.**
+
+```js
+useEffect(() => {
+	// ...
+}, [a, b]); // Runs again if a or b are different
+```
+
+In the below example, `serverUrl` and `roomId` are [reactive values,](/learn/lifecycle-of-reactive-effects#effects-react-to-reactive-values) so they both must be specified as dependencies. As a result, selecting a different room in the dropdown or editing the server URL input causes the chat to re-connect. However, since `message` isn't used in the Effect (and so it isn't a dependency), editing the message doesn't re-connect to the chat.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}, [serverUrl, roomId]);
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+			<label>
+				Your message:{" "}
+				<input
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+			</label>
+		</>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+				<button onClick={() => setShow(!show)}>{show ? "Close chat" : "Open chat"}</button>
+			</label>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	margin-bottom: 10px;
+}
+button {
+	margin-left: 5px;
+}
+```
+
+#### Passing an empty dependency array
+
+If your Effect truly doesn't use any reactive values, it will only run **after the initial render.**
+
+```js
+useEffect(() => {
+	// ...
+}, []); // Does not run again (except once in development)
+```
+
+**Even with empty dependencies, setup and cleanup will [run one extra time in development](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development) to help you find bugs.**
+
+In this example, both `serverUrl` and `roomId` are hardcoded. Since they're declared outside the component, they are not reactive values, and so they aren't dependencies. The dependency list is empty, so the Effect doesn't re-run on re-renders.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+const roomId = "music";
+
+function ChatRoom() {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => connection.disconnect();
+	}, []);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<label>
+				Your message:{" "}
+				<input
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+			</label>
+		</>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	return (
+		<>
+			<button onClick={() => setShow(!show)}>
+				{show ? "Close chat" : "Open chat"}
+			</button>
+			{show && <hr />}
+			{show && <ChatRoom />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+#### Passing no dependency array at all
+
+If you pass no dependency array at all, your Effect runs **after every single render (and re-render)** of your component.
+
+```js
+useEffect(() => {
+	// ...
+}); // Always runs again
+```
+
+In this example, the Effect re-runs when you change `serverUrl` and `roomId`, which is sensible. However, it _also_ re-runs when you change the `message`, which is probably undesirable. This is why usually you'll specify the dependency array.
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+function ChatRoom({ roomId }) {
+	const [serverUrl, setServerUrl] = useState("https://localhost:1234");
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const connection = createConnection(serverUrl, roomId);
+		connection.connect();
+		return () => {
+			connection.disconnect();
+		};
+	}); // No dependency array at all
+
+	return (
+		<>
+			<label>
+				Server URL:{" "}
+				<input
+					value={serverUrl}
+					onChange={(e) => setServerUrl(e.target.value)}
+				/>
+			</label>
+			<h1>Welcome to the {roomId} room!</h1>
+			<label>
+				Your message:{" "}
+				<input
+					value={message}
+					onChange={(e) => setMessage(e.target.value)}
+				/>
+			</label>
+		</>
+	);
+}
+
+export default function App() {
+	const [show, setShow] = useState(false);
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+				<button onClick={() => setShow(!show)}>{show ? "Close chat" : "Open chat"}</button>
+			</label>
+			{show && <hr />}
+			{show && <ChatRoom roomId={roomId} />}
+		</>
+	);
+}
+```
+
+```js
+export function createConnection(serverUrl, roomId) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	margin-bottom: 10px;
+}
+button {
+	margin-left: 5px;
+}
+```
+
+</Recipes>
+
+---
+
+### Updating state based on previous state from an Effect
+
+When you want to update state based on previous state from an Effect, you might run into a problem:
+
+```js
+function Counter() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		const intervalId = setInterval(() => {
+			setCount(count + 1); // You want to increment the counter every second...
+		}, 1000);
+		return () => clearInterval(intervalId);
+	}, [count]); // 🚩 ... but specifying `count` as a dependency always resets the interval.
+	// ...
+}
+```
+
+Since `count` is a reactive value, it must be specified in the list of dependencies. However, that causes the Effect to cleanup and setup again every time the `count` changes. This is not ideal.
+
+To fix this, [pass the `c => c + 1` state updater](/reference/react/useState#updating-state-based-on-the-previous-state) to `setCount`:
+
+```js
+import { useState, useEffect } from "react";
+
+export default function Counter() {
+	const [count, setCount] = useState(0);
+
+	useEffect(() => {
+		const intervalId = setInterval(() => {
+			setCount((c) => c + 1); // ✅ Pass a state updater
+		}, 1000);
+		return () => clearInterval(intervalId);
+	}, []); // ✅ Now count is not a dependency
+
+	return <h1>{count}</h1>;
+}
+```
+
+```css
+label {
+	display: block;
+	margin-top: 20px;
+	margin-bottom: 20px;
+}
+
+body {
+	min-height: 150px;
+}
+```
+
+Now that you're passing `c => c + 1` instead of `count + 1`, [your Effect no longer needs to depend on `count`.](/learn/removing-effect-dependencies#are-you-reading-some-state-to-calculate-the-next-state) As a result of this fix, it won't need to cleanup and setup the interval again every time the `count` changes.
+
+---
+
+### Removing unnecessary object dependencies
+
+If your Effect depends on an object or a function created during rendering, it might run too often. For example, this Effect re-connects after every render because the `options` object is [different for every render:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
+
+```js
+const serverUrl = 'https://localhost:1234';
+
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  const options = { // 🚩 This object is created from scratch on every re-render
+    serverUrl: serverUrl,
+    roomId: roomId
+  };
+
+  useEffect(() => {
+    const connection = createConnection(options); // It's used inside the Effect
+    connection.connect();
+    return () => connection.disconnect();
+  }, [options]); // 🚩 As a result, these dependencies are always different on a re-render
+  // ...
+```
+
+Avoid using an object created during rendering as a dependency. Instead, create the object inside the Effect:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		const options = {
+			serverUrl: serverUrl,
+			roomId: roomId,
+		};
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Now that you create the `options` object inside the Effect, the Effect itself only depends on the `roomId` string.
+
+With this fix, typing into the input doesn't reconnect the chat. Unlike an object which gets re-created, a string like `roomId` doesn't change unless you set it to another value. [Read more about removing dependencies.](/learn/removing-effect-dependencies)
+
+---
+
+### Removing unnecessary function dependencies
+
+If your Effect depends on an object or a function created during rendering, it might run too often. For example, this Effect re-connects after every render because the `createOptions` function is [different for every render:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
+
+```js
+function ChatRoom({ roomId }) {
+  const [message, setMessage] = useState('');
+
+  function createOptions() { // 🚩 This function is created from scratch on every re-render
+    return {
+      serverUrl: serverUrl,
+      roomId: roomId
+    };
+  }
+
+  useEffect(() => {
+    const options = createOptions(); // It's used inside the Effect
+    const connection = createConnection();
+    connection.connect();
+    return () => connection.disconnect();
+  }, [createOptions]); // 🚩 As a result, these dependencies are always different on a re-render
+  // ...
+```
+
+By itself, creating a function from scratch on every re-render is not a problem. You don't need to optimize that. However, if you use it as a dependency of your Effect, it will cause your Effect to re-run after every re-render.
+
+Avoid using a function created during rendering as a dependency. Instead, declare it inside the Effect:
+
+```js
+import { useState, useEffect } from "react";
+import { createConnection } from "./chat.js";
+
+const serverUrl = "https://localhost:1234";
+
+function ChatRoom({ roomId }) {
+	const [message, setMessage] = useState("");
+
+	useEffect(() => {
+		function createOptions() {
+			return {
+				serverUrl: serverUrl,
+				roomId: roomId,
+			};
+		}
+
+		const options = createOptions();
+		const connection = createConnection(options);
+		connection.connect();
+		return () => connection.disconnect();
+	}, [roomId]);
+
+	return (
+		<>
+			<h1>Welcome to the {roomId} room!</h1>
+			<input
+				value={message}
+				onChange={(e) => setMessage(e.target.value)}
+			/>
+		</>
+	);
+}
+
+export default function App() {
+	const [roomId, setRoomId] = useState("general");
+	return (
+		<>
+			<label>
+				Choose the chat room:{" "}
+				<select
+					value={roomId}
+					onChange={(e) => setRoomId(e.target.value)}
+				>
+					<option value="general">general</option>
+					<option value="travel">travel</option>
+					<option value="music">music</option>
+				</select>
+			</label>
+			<hr />
+			<ChatRoom roomId={roomId} />
+		</>
+	);
+}
+```
+
+```js
+export function createConnection({ serverUrl, roomId }) {
+	// A real implementation would actually connect to the server
+	return {
+		connect() {
+			console.log(
+				'✅ Connecting to "' + roomId + '" room at ' + serverUrl + "..."
+			);
+		},
+		disconnect() {
+			console.log(
+				'❌ Disconnected from "' + roomId + '" room at ' + serverUrl
+			);
+		},
+	};
+}
+```
+
+```css
+input {
+	display: block;
+	margin-bottom: 20px;
+}
+button {
+	margin-left: 10px;
+}
+```
+
+Now that you define the `createOptions` function inside the Effect, the Effect itself only depends on the `roomId` string. With this fix, typing into the input doesn't reconnect the chat. Unlike a function which gets re-created, a string like `roomId` doesn't change unless you set it to another value. [Read more about removing dependencies.](/learn/removing-effect-dependencies)
+
+---
+
+### Reading the latest props and state from an Effect
+
+<Wip>
+
+This section describes an **experimental API that has not yet been released** in a stable version of React.
+
+</Wip>
+
+By default, when you read a reactive value from an Effect, you have to add it as a dependency. This ensures that your Effect "reacts" to every change of that value. For most dependencies, that's the behavior you want.
+
+**However, sometimes you'll want to read the _latest_ props and state from an Effect without "reacting" to them.** For example, imagine you want to log the number of the items in the shopping cart for every page visit:
+
+```js
+function Page({ url, shoppingCart }) {
+	useEffect(() => {
+		logVisit(url, shoppingCart.length);
+	}, [url, shoppingCart]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+**What if you want to log a new page visit after every `url` change, but _not_ if only the `shoppingCart` changes?** You can't exclude `shoppingCart` from dependencies without breaking the [reactivity rules.](#specifying-reactive-dependencies) However, you can express that you _don't want_ a piece of code to "react" to changes even though it is called from inside an Effect. [Declare an _Effect Event_](/learn/separating-events-from-effects#declaring-an-effect-event) with the [`useEffectEvent`](/reference/react/experimental_useEffectEvent) Hook, and move the code reading `shoppingCart` inside of it:
+
+```js
+function Page({ url, shoppingCart }) {
+	const onVisit = useEffectEvent((visitedUrl) => {
+		logVisit(visitedUrl, shoppingCart.length);
+	});
+
+	useEffect(() => {
+		onVisit(url);
+	}, [url]); // ✅ All dependencies declared
+	// ...
+}
+```
+
+**Effect Events are not reactive and must always be omitted from dependencies of your Effect.** This is what lets you put non-reactive code (where you can read the latest value of some props and state) inside of them. By reading `shoppingCart` inside of `onVisit`, you ensure that `shoppingCart` won't re-run your Effect.
+
+[Read more about how Effect Events let you separate reactive and non-reactive code.](/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)
+
+---
+
+### Displaying different content on the server and the client
+
+If your app uses server rendering (either [directly](/reference/react-dom/server) or via a [framework](/learn/start-a-new-react-project#production-grade-react-frameworks)), your component will render in two different environments. On the server, it will render to produce the initial HTML. On the client, React will run the rendering code again so that it can attach your event handlers to that HTML. This is why, for [hydration](/reference/react-dom/client/hydrateRoot#hydrating-server-rendered-html) to work, your initial render output must be identical on the client and the server.
+
+In rare cases, you might need to display different content on the client. For example, if your app reads some data from [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), it can't possibly do that on the server. Here is how you could implement this:
+
+```js
+function MyComponent() {
+	const [didMount, setDidMount] = useState(false);
+
+	useEffect(() => {
+		setDidMount(true);
+	}, []);
+
+	if (didMount) {
+		// ... return client-only JSX ...
+	} else {
+		// ... return initial JSX ...
+	}
+}
+```
+
+While the app is loading, the user will see the initial render output. Then, when it's loaded and hydrated, your Effect will run and set `didMount` to `true`, triggering a re-render. This will switch to the client-only render output. Effects don't run on the server, so this is why `didMount` was `false` during the initial server render.
+
+Use this pattern sparingly. Keep in mind that users with a slow connection will see the initial content for quite a bit of time--potentially, many seconds--so you don't want to make jarring changes to your component's appearance. In many cases, you can avoid the need for this by conditionally showing different things with CSS.
+
+---
+
+## Troubleshooting
+
+### My Effect runs twice when the component mounts
+
+When Strict Mode is on, in development, React runs setup and cleanup one extra time before the actual setup.
+
+This is a stress-test that verifies your Effect’s logic is implemented correctly. If this causes visible issues, your cleanup function is missing some logic. The cleanup function should stop or undo whatever the setup function was doing. The rule of thumb is that the user shouldn’t be able to distinguish between the setup being called once (as in production) and a setup → cleanup → setup sequence (as in development).
+
+Read more about [how this helps find bugs](/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed) and [how to fix your logic.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
+
+---
+
+### My Effect runs after every re-render
+
+First, check that you haven't forgotten to specify the dependency array:
+
+```js
+useEffect(() => {
+	// ...
+}); // 🚩 No dependency array: re-runs after every render!
+```
+
+If you've specified the dependency array but your Effect still re-runs in a loop, it's because one of your dependencies is different on every re-render.
+
+You can debug this problem by manually logging your dependencies to the console:
+
+```js
+useEffect(() => {
+	// ..
+}, [serverUrl, roomId]);
+
+console.log([serverUrl, roomId]);
+```
+
+You can then right-click on the arrays from different re-renders in the console and select "Store as a global variable" for both of them. Assuming the first one got saved as `temp1` and the second one got saved as `temp2`, you can then use the browser console to check whether each dependency in both arrays is the same:
+
+```js
+Object.is(temp1[0], temp2[0]); // Is the first dependency the same between the arrays?
+Object.is(temp1[1], temp2[1]); // Is the second dependency the same between the arrays?
+Object.is(temp1[2], temp2[2]); // ... and so on for every dependency ...
+```
+
+When you find the dependency that is different on every re-render, you can usually fix it in one of these ways:
+
+-   [Updating state based on previous state from an Effect](#updating-state-based-on-previous-state-from-an-effect)
+-   [Removing unnecessary object dependencies](#removing-unnecessary-object-dependencies)
+-   [Removing unnecessary function dependencies](#removing-unnecessary-function-dependencies)
+-   [Reading the latest props and state from an Effect](#reading-the-latest-props-and-state-from-an-effect)
+
+As a last resort (if these methods didn't help), wrap its creation with [`useMemo`](/reference/react/useMemo#memoizing-a-dependency-of-another-hook) or [`useCallback`](/reference/react/useCallback#preventing-an-effect-from-firing-too-often) (for functions).
+
+---
+
+### My Effect keeps re-running in an infinite cycle
+
+If your Effect runs in an infinite cycle, these two things must be true:
+
+-   Your Effect is updating some state.
+-   That state leads to a re-render, which causes the Effect's dependencies to change.
+
+Before you start fixing the problem, ask yourself whether your Effect is connecting to some external system (like DOM, network, a third-party widget, and so on). Why does your Effect need to set state? Does it synchronize with that external system? Or are you trying to manage your application's data flow with it?
+
+If there is no external system, consider whether [removing the Effect altogether](/learn/you-might-not-need-an-effect) would simplify your logic.
+
+If you're genuinely synchronizing with some external system, think about why and under what conditions your Effect should update the state. Has something changed that affects your component's visual output? If you need to keep track of some data that isn't used by rendering, a [ref](/reference/react/useRef#referencing-a-value-with-a-ref) (which doesn't trigger re-renders) might be more appropriate. Verify your Effect doesn't update the state (and trigger re-renders) more than needed.
+
+Finally, if your Effect is updating the state at the right time, but there is still a loop, it's because that state update leads to one of the Effect's dependencies changing. [Read how to debug dependency changes.](/reference/react/useEffect#my-effect-runs-after-every-re-render)
+
+---
+
+### My cleanup logic runs even though my component didn't unmount
+
+The cleanup function runs not only during unmount, but before every re-render with changed dependencies. Additionally, in development, React [runs setup+cleanup one extra time immediately after component mounts.](#my-effect-runs-twice-when-the-component-mounts)
+
+If you have cleanup code without corresponding setup code, it's usually a code smell:
+
+```js
+useEffect(() => {
+	// 🔴 Avoid: Cleanup logic without corresponding setup logic
+	return () => {
+		doSomething();
+	};
+}, []);
+```
+
+Your cleanup logic should be "symmetrical" to the setup logic, and should stop or undo whatever setup did:
+
+```js
+useEffect(() => {
+	const connection = createConnection(serverUrl, roomId);
+	connection.connect();
+	return () => {
+		connection.disconnect();
+	};
+}, [serverUrl, roomId]);
+```
+
+[Learn how the Effect lifecycle is different from the component's lifecycle.](/learn/lifecycle-of-reactive-effects#the-lifecycle-of-an-effect)
+
+---
+
+### My Effect does something visual, and I see a flicker before it runs
+
+If your Effect must block the browser from [painting the screen,](/learn/render-and-commit#epilogue-browser-paint) replace `useEffect` with [`useLayoutEffect`](/reference/react/useLayoutEffect). Note that **this shouldn't be needed for the vast majority of Effects.** You'll only need this if it's crucial to run your Effect before the browser paint: for example, to measure and position a tooltip before the user sees it.