From 83e53e59de2188337e57f9d1fa9ed13dbbeb18e3 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 14 Sep 2015 15:38:09 +0000 Subject: [PATCH] Rebuild website --- blog/2013/06/02/jsfiddle-integration.html | 4 +- blog/2013/06/05/why-react.html | 4 +- blog/2013/06/12/community-roundup.html | 4 +- blog/2013/06/19/community-roundup-2.html | 4 +- blog/2013/06/21/react-v0-3-3.html | 4 +- blog/2013/06/27/community-roundup-3.html | 4 +- .../07/02/react-v0-4-autobind-by-default.html | 4 +- blog/2013/07/03/community-roundup-4.html | 4 +- ...-4-prop-validation-and-default-values.html | 4 +- blog/2013/07/17/react-v0-4-0.html | 4 +- blog/2013/07/23/community-roundup-5.html | 4 +- blog/2013/07/26/react-v0-4-1.html | 4 +- .../use-react-and-jsx-in-ruby-on-rails.html | 4 +- blog/2013/08/05/community-roundup-6.html | 4 +- ...-react-and-jsx-in-python-applications.html | 4 +- blog/2013/08/26/community-roundup-7.html | 4 +- blog/2013/09/24/community-roundup-8.html | 4 +- blog/2013/10/03/community-roundup-9.html | 4 +- blog/2013/10/16/react-v0.5.0.html | 4 +- blog/2013/10/29/react-v0-5-1.html | 4 +- blog/2013/11/06/community-roundup-10.html | 4 +- blog/2013/11/18/community-roundup-11.html | 4 +- blog/2013/12/18/react-v0.5.2-v0.4.2.html | 4 +- blog/2013/12/19/react-v0.8.0.html | 4 +- blog/2013/12/23/community-roundup-12.html | 4 +- blog/2013/12/30/community-roundup-13.html | 4 +- .../01/02/react-chrome-developer-tools.html | 4 +- blog/2014/01/06/community-roundup-14.html | 4 +- blog/2014/02/05/community-roundup-15.html | 4 +- blog/2014/02/15/community-roundup-16.html | 4 +- blog/2014/02/16/react-v0.9-rc1.html | 4 +- blog/2014/02/20/react-v0.9.html | 4 +- blog/2014/02/24/community-roundup-17.html | 4 +- blog/2014/03/14/community-roundup-18.html | 4 +- blog/2014/03/19/react-v0.10-rc1.html | 4 +- blog/2014/03/21/react-v0.10.html | 4 +- blog/2014/03/28/the-road-to-1.0.html | 4 +- blog/2014/04/04/reactnet.html | 4 +- blog/2014/05/06/flux.html | 4 +- .../05/29/one-year-of-open-source-react.html | 4 +- blog/2014/06/27/community-roundup-19.html | 4 +- blog/2014/07/13/react-v0.11-rc1.html | 4 +- blog/2014/07/17/react-v0.11.html | 4 +- blog/2014/07/25/react-v0.11.1.html | 4 +- blog/2014/07/28/community-roundup-20.html | 4 +- .../30/flux-actions-and-the-dispatcher.html | 4 +- blog/2014/08/03/community-roundup-21.html | 4 +- .../03/introducing-the-jsx-specification.html | 4 +- blog/2014/09/12/community-round-up-22.html | 4 +- blog/2014/09/16/react-v0.11.2.html | 4 +- .../2014/09/24/testing-flux-applications.html | 4 +- .../10/14/introducing-react-elements.html | 4 +- blog/2014/10/16/react-v0.12-rc1.html | 4 +- blog/2014/10/17/community-roundup-23.html | 4 +- blog/2014/10/27/react-js-conf.html | 4 +- blog/2014/10/28/react-v0.12.html | 4 +- blog/2014/11/24/react-js-conf-updates.html | 4 +- blog/2014/11/25/community-roundup-24.html | 4 +- blog/2014/12/18/react-v0.12.2.html | 4 +- .../react-js-conf-diversity-scholarship.html | 4 +- blog/2015/01/27/react-v0.13.0-beta-1.html | 4 +- blog/2015/02/18/react-conf-roundup-2015.html | 4 +- .../02/20/introducing-relay-and-graphql.html | 4 +- blog/2015/02/24/react-v0.13-rc1.html | 4 +- .../02/24/streamlining-react-elements.html | 4 +- blog/2015/03/03/react-v0.13-rc2.html | 4 +- blog/2015/03/04/community-roundup-25.html | 4 +- blog/2015/03/10/react-v0.13.html | 4 +- blog/2015/03/16/react-v0.13.1.html | 4 +- ...ing-the-facebook-news-feed-with-relay.html | 4 +- blog/2015/03/26/introducing-react-native.html | 4 +- blog/2015/03/30/community-roundup-26.html | 4 +- blog/2015/04/17/react-native-v0.4.html | 4 +- blog/2015/04/18/react-v0.13.2.html | 4 +- blog/2015/05/01/graphql-introduction.html | 4 +- blog/2015/05/08/react-v0.13.3.html | 4 +- .../05/22/react-native-release-process.html | 4 +- ...precating-jstransform-and-react-tools.html | 4 +- blog/2015/07/03/react-v0.14-beta-1.html | 4 +- blog/2015/08/03/new-react-devtools-beta.html | 4 +- blog/2015/08/11/relay-technical-preview.html | 4 +- blog/2015/08/13/reacteurope-roundup.html | 4 +- .../2015/09/02/new-react-developer-tools.html | 4 +- blog/2015/09/10/react-v0.14-rc1.html | 4 +- blog/2015/09/14/community-roundup-27.html | 222 ++++++++++++ blog/all.html | 3 + blog/index.html | 199 +++++------ blog/page10/index.html | 134 +++---- blog/page11/index.html | 183 +++++----- blog/page12/index.html | 189 +++++----- blog/page13/index.html | 143 +++++--- blog/page14/index.html | 105 +++--- blog/page15/index.html | 125 +++---- blog/page16/index.html | 107 +++--- blog/page17/index.html | 47 ++- blog/page2/index.html | 221 ++++++------ blog/page3/index.html | 330 ++++++------------ blog/page4/index.html | 308 +++++++++++----- blog/page5/index.html | 156 +++++---- blog/page6/index.html | 101 +++--- blog/page7/index.html | 116 +++--- blog/page8/index.html | 185 ++++------ blog/page9/index.html | 147 +++++--- feed.xml | 166 ++++----- img/blog/relay-visual-architecture-tour.png | Bin 0 -> 285245 bytes 105 files changed, 1909 insertions(+), 1614 deletions(-) create mode 100644 blog/2015/09/14/community-roundup-27.html create mode 100644 img/blog/relay-visual-architecture-tour.png diff --git a/blog/2013/06/02/jsfiddle-integration.html b/blog/2013/06/02/jsfiddle-integration.html index 2b59d464e8..789afcc787 100644 --- a/blog/2013/06/02/jsfiddle-integration.html +++ b/blog/2013/06/02/jsfiddle-integration.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/06/05/why-react.html b/blog/2013/06/05/why-react.html index 655c69869c..12c51cec2e 100644 --- a/blog/2013/06/05/why-react.html +++ b/blog/2013/06/05/why-react.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/06/12/community-roundup.html b/blog/2013/06/12/community-roundup.html index b3eeecdebd..5fc62bee32 100644 --- a/blog/2013/06/12/community-roundup.html +++ b/blog/2013/06/12/community-roundup.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/06/19/community-roundup-2.html b/blog/2013/06/19/community-roundup-2.html index 0a7757230d..1dc128a2b4 100644 --- a/blog/2013/06/19/community-roundup-2.html +++ b/blog/2013/06/19/community-roundup-2.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/06/21/react-v0-3-3.html b/blog/2013/06/21/react-v0-3-3.html index 1e6544f728..f216d065ae 100644 --- a/blog/2013/06/21/react-v0-3-3.html +++ b/blog/2013/06/21/react-v0-3-3.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/06/27/community-roundup-3.html b/blog/2013/06/27/community-roundup-3.html index ae8c51c955..36c51845a6 100644 --- a/blog/2013/06/27/community-roundup-3.html +++ b/blog/2013/06/27/community-roundup-3.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/07/02/react-v0-4-autobind-by-default.html b/blog/2013/07/02/react-v0-4-autobind-by-default.html index 8aa83b89ae..82a7129cf1 100644 --- a/blog/2013/07/02/react-v0-4-autobind-by-default.html +++ b/blog/2013/07/02/react-v0-4-autobind-by-default.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/07/03/community-roundup-4.html b/blog/2013/07/03/community-roundup-4.html index 75859914b9..941d75ddb2 100644 --- a/blog/2013/07/03/community-roundup-4.html +++ b/blog/2013/07/03/community-roundup-4.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html b/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html index 70f831aac8..ce97027cc2 100644 --- a/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html +++ b/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/07/17/react-v0-4-0.html b/blog/2013/07/17/react-v0-4-0.html index 924e24b314..87aa433db7 100644 --- a/blog/2013/07/17/react-v0-4-0.html +++ b/blog/2013/07/17/react-v0-4-0.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/07/23/community-roundup-5.html b/blog/2013/07/23/community-roundup-5.html index 47fa3e4fa0..0b803512b5 100644 --- a/blog/2013/07/23/community-roundup-5.html +++ b/blog/2013/07/23/community-roundup-5.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/07/26/react-v0-4-1.html b/blog/2013/07/26/react-v0-4-1.html index 40ce363972..a2bc626914 100644 --- a/blog/2013/07/26/react-v0-4-1.html +++ b/blog/2013/07/26/react-v0-4-1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html b/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html index d31e80d155..59a1a38bf2 100644 --- a/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html +++ b/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/08/05/community-roundup-6.html b/blog/2013/08/05/community-roundup-6.html index 6b8c65a698..e5f0f7921b 100644 --- a/blog/2013/08/05/community-roundup-6.html +++ b/blog/2013/08/05/community-roundup-6.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/08/19/use-react-and-jsx-in-python-applications.html b/blog/2013/08/19/use-react-and-jsx-in-python-applications.html index 3d67cec616..00b8474a6a 100644 --- a/blog/2013/08/19/use-react-and-jsx-in-python-applications.html +++ b/blog/2013/08/19/use-react-and-jsx-in-python-applications.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/08/26/community-roundup-7.html b/blog/2013/08/26/community-roundup-7.html index 85950cbc5f..e6c15dcd9e 100644 --- a/blog/2013/08/26/community-roundup-7.html +++ b/blog/2013/08/26/community-roundup-7.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/09/24/community-roundup-8.html b/blog/2013/09/24/community-roundup-8.html index 917154f51a..138fab7a64 100644 --- a/blog/2013/09/24/community-roundup-8.html +++ b/blog/2013/09/24/community-roundup-8.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/10/03/community-roundup-9.html b/blog/2013/10/03/community-roundup-9.html index 3631703c2c..73dd467987 100644 --- a/blog/2013/10/03/community-roundup-9.html +++ b/blog/2013/10/03/community-roundup-9.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/10/16/react-v0.5.0.html b/blog/2013/10/16/react-v0.5.0.html index 39ce0e4d16..1be0dbd80b 100644 --- a/blog/2013/10/16/react-v0.5.0.html +++ b/blog/2013/10/16/react-v0.5.0.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/10/29/react-v0-5-1.html b/blog/2013/10/29/react-v0-5-1.html index 246af6d411..fe71ba025a 100644 --- a/blog/2013/10/29/react-v0-5-1.html +++ b/blog/2013/10/29/react-v0-5-1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/11/06/community-roundup-10.html b/blog/2013/11/06/community-roundup-10.html index f55011d885..be55e65336 100644 --- a/blog/2013/11/06/community-roundup-10.html +++ b/blog/2013/11/06/community-roundup-10.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/11/18/community-roundup-11.html b/blog/2013/11/18/community-roundup-11.html index 4a47fc90e4..756ab21bf5 100644 --- a/blog/2013/11/18/community-roundup-11.html +++ b/blog/2013/11/18/community-roundup-11.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/12/18/react-v0.5.2-v0.4.2.html b/blog/2013/12/18/react-v0.5.2-v0.4.2.html index 92eeeccb1b..896cb85306 100644 --- a/blog/2013/12/18/react-v0.5.2-v0.4.2.html +++ b/blog/2013/12/18/react-v0.5.2-v0.4.2.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/12/19/react-v0.8.0.html b/blog/2013/12/19/react-v0.8.0.html index 164145ae95..9e992b9728 100644 --- a/blog/2013/12/19/react-v0.8.0.html +++ b/blog/2013/12/19/react-v0.8.0.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/12/23/community-roundup-12.html b/blog/2013/12/23/community-roundup-12.html index e7c619f1a9..27387b206c 100644 --- a/blog/2013/12/23/community-roundup-12.html +++ b/blog/2013/12/23/community-roundup-12.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2013/12/30/community-roundup-13.html b/blog/2013/12/30/community-roundup-13.html index aca6f0c259..c3ba1cd921 100644 --- a/blog/2013/12/30/community-roundup-13.html +++ b/blog/2013/12/30/community-roundup-13.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/01/02/react-chrome-developer-tools.html b/blog/2014/01/02/react-chrome-developer-tools.html index 9877490ded..8f75d60990 100644 --- a/blog/2014/01/02/react-chrome-developer-tools.html +++ b/blog/2014/01/02/react-chrome-developer-tools.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/01/06/community-roundup-14.html b/blog/2014/01/06/community-roundup-14.html index daf43beef4..59baddca61 100644 --- a/blog/2014/01/06/community-roundup-14.html +++ b/blog/2014/01/06/community-roundup-14.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/02/05/community-roundup-15.html b/blog/2014/02/05/community-roundup-15.html index c5526484fe..ca40160200 100644 --- a/blog/2014/02/05/community-roundup-15.html +++ b/blog/2014/02/05/community-roundup-15.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/02/15/community-roundup-16.html b/blog/2014/02/15/community-roundup-16.html index bb2e065f67..e6e5d067eb 100644 --- a/blog/2014/02/15/community-roundup-16.html +++ b/blog/2014/02/15/community-roundup-16.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/02/16/react-v0.9-rc1.html b/blog/2014/02/16/react-v0.9-rc1.html index a156969dc0..c6d6d3bae2 100644 --- a/blog/2014/02/16/react-v0.9-rc1.html +++ b/blog/2014/02/16/react-v0.9-rc1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/02/20/react-v0.9.html b/blog/2014/02/20/react-v0.9.html index 88ca1561e4..e3f6c7b88c 100644 --- a/blog/2014/02/20/react-v0.9.html +++ b/blog/2014/02/20/react-v0.9.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/02/24/community-roundup-17.html b/blog/2014/02/24/community-roundup-17.html index 6433b7a47b..eac8801de4 100644 --- a/blog/2014/02/24/community-roundup-17.html +++ b/blog/2014/02/24/community-roundup-17.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/03/14/community-roundup-18.html b/blog/2014/03/14/community-roundup-18.html index 37a8b9a9fe..00ce14f796 100644 --- a/blog/2014/03/14/community-roundup-18.html +++ b/blog/2014/03/14/community-roundup-18.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/03/19/react-v0.10-rc1.html b/blog/2014/03/19/react-v0.10-rc1.html index fb8323e2c9..25100aa185 100644 --- a/blog/2014/03/19/react-v0.10-rc1.html +++ b/blog/2014/03/19/react-v0.10-rc1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/03/21/react-v0.10.html b/blog/2014/03/21/react-v0.10.html index 73466ce7ee..c42cf7560a 100644 --- a/blog/2014/03/21/react-v0.10.html +++ b/blog/2014/03/21/react-v0.10.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/03/28/the-road-to-1.0.html b/blog/2014/03/28/the-road-to-1.0.html index 9dc2d1f484..6dbfe81a24 100644 --- a/blog/2014/03/28/the-road-to-1.0.html +++ b/blog/2014/03/28/the-road-to-1.0.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/04/04/reactnet.html b/blog/2014/04/04/reactnet.html index 108f77d5d4..b9ba31d90e 100644 --- a/blog/2014/04/04/reactnet.html +++ b/blog/2014/04/04/reactnet.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/05/06/flux.html b/blog/2014/05/06/flux.html index 8bc2184d87..223ce2a234 100644 --- a/blog/2014/05/06/flux.html +++ b/blog/2014/05/06/flux.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/05/29/one-year-of-open-source-react.html b/blog/2014/05/29/one-year-of-open-source-react.html index 621845f9c4..bd95310adc 100644 --- a/blog/2014/05/29/one-year-of-open-source-react.html +++ b/blog/2014/05/29/one-year-of-open-source-react.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/06/27/community-roundup-19.html b/blog/2014/06/27/community-roundup-19.html index 1dc6770708..78e745a0c9 100644 --- a/blog/2014/06/27/community-roundup-19.html +++ b/blog/2014/06/27/community-roundup-19.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/07/13/react-v0.11-rc1.html b/blog/2014/07/13/react-v0.11-rc1.html index fb0417d623..3ecb678019 100644 --- a/blog/2014/07/13/react-v0.11-rc1.html +++ b/blog/2014/07/13/react-v0.11-rc1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/07/17/react-v0.11.html b/blog/2014/07/17/react-v0.11.html index 62cd01b1f1..9a97ba844b 100644 --- a/blog/2014/07/17/react-v0.11.html +++ b/blog/2014/07/17/react-v0.11.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/07/25/react-v0.11.1.html b/blog/2014/07/25/react-v0.11.1.html index d58c550289..e3f7510fdc 100644 --- a/blog/2014/07/25/react-v0.11.1.html +++ b/blog/2014/07/25/react-v0.11.1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/07/28/community-roundup-20.html b/blog/2014/07/28/community-roundup-20.html index 3bff61535f..3ce902a1ae 100644 --- a/blog/2014/07/28/community-roundup-20.html +++ b/blog/2014/07/28/community-roundup-20.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/07/30/flux-actions-and-the-dispatcher.html b/blog/2014/07/30/flux-actions-and-the-dispatcher.html index 8f4b6c3816..a93efab10a 100644 --- a/blog/2014/07/30/flux-actions-and-the-dispatcher.html +++ b/blog/2014/07/30/flux-actions-and-the-dispatcher.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/08/03/community-roundup-21.html b/blog/2014/08/03/community-roundup-21.html index 34dd31197f..cb7465cd6a 100644 --- a/blog/2014/08/03/community-roundup-21.html +++ b/blog/2014/08/03/community-roundup-21.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/09/03/introducing-the-jsx-specification.html b/blog/2014/09/03/introducing-the-jsx-specification.html index d08ffdc09c..02f852e86d 100644 --- a/blog/2014/09/03/introducing-the-jsx-specification.html +++ b/blog/2014/09/03/introducing-the-jsx-specification.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/09/12/community-round-up-22.html b/blog/2014/09/12/community-round-up-22.html index a7dd97fe4c..3ec7869e39 100644 --- a/blog/2014/09/12/community-round-up-22.html +++ b/blog/2014/09/12/community-round-up-22.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/09/16/react-v0.11.2.html b/blog/2014/09/16/react-v0.11.2.html index b6f603dc86..3bae95c6bd 100644 --- a/blog/2014/09/16/react-v0.11.2.html +++ b/blog/2014/09/16/react-v0.11.2.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/09/24/testing-flux-applications.html b/blog/2014/09/24/testing-flux-applications.html index 3500436ee9..7ed6120537 100644 --- a/blog/2014/09/24/testing-flux-applications.html +++ b/blog/2014/09/24/testing-flux-applications.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/10/14/introducing-react-elements.html b/blog/2014/10/14/introducing-react-elements.html index 739c240d26..4dd9da4411 100644 --- a/blog/2014/10/14/introducing-react-elements.html +++ b/blog/2014/10/14/introducing-react-elements.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/10/16/react-v0.12-rc1.html b/blog/2014/10/16/react-v0.12-rc1.html index dc24dc8639..6796c3379d 100644 --- a/blog/2014/10/16/react-v0.12-rc1.html +++ b/blog/2014/10/16/react-v0.12-rc1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/10/17/community-roundup-23.html b/blog/2014/10/17/community-roundup-23.html index 99a7c52b1d..ab9af909bc 100644 --- a/blog/2014/10/17/community-roundup-23.html +++ b/blog/2014/10/17/community-roundup-23.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/10/27/react-js-conf.html b/blog/2014/10/27/react-js-conf.html index 056b1f8450..f8147e6064 100644 --- a/blog/2014/10/27/react-js-conf.html +++ b/blog/2014/10/27/react-js-conf.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/10/28/react-v0.12.html b/blog/2014/10/28/react-v0.12.html index 90b92c0cf6..0728d9517f 100644 --- a/blog/2014/10/28/react-v0.12.html +++ b/blog/2014/10/28/react-v0.12.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/11/24/react-js-conf-updates.html b/blog/2014/11/24/react-js-conf-updates.html index f0373c0019..874d41fbe2 100644 --- a/blog/2014/11/24/react-js-conf-updates.html +++ b/blog/2014/11/24/react-js-conf-updates.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/11/25/community-roundup-24.html b/blog/2014/11/25/community-roundup-24.html index 02fefd50f8..6b7a720082 100644 --- a/blog/2014/11/25/community-roundup-24.html +++ b/blog/2014/11/25/community-roundup-24.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/12/18/react-v0.12.2.html b/blog/2014/12/18/react-v0.12.2.html index 3d55dbec79..68c01305f7 100644 --- a/blog/2014/12/18/react-v0.12.2.html +++ b/blog/2014/12/18/react-v0.12.2.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2014/12/19/react-js-conf-diversity-scholarship.html b/blog/2014/12/19/react-js-conf-diversity-scholarship.html index 2c9c590f95..eb46d2cda2 100644 --- a/blog/2014/12/19/react-js-conf-diversity-scholarship.html +++ b/blog/2014/12/19/react-js-conf-diversity-scholarship.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/01/27/react-v0.13.0-beta-1.html b/blog/2015/01/27/react-v0.13.0-beta-1.html index f1cc125ddb..bd460b2ec0 100644 --- a/blog/2015/01/27/react-v0.13.0-beta-1.html +++ b/blog/2015/01/27/react-v0.13.0-beta-1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/02/18/react-conf-roundup-2015.html b/blog/2015/02/18/react-conf-roundup-2015.html index e43e45361c..f5f9e17d36 100644 --- a/blog/2015/02/18/react-conf-roundup-2015.html +++ b/blog/2015/02/18/react-conf-roundup-2015.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/02/20/introducing-relay-and-graphql.html b/blog/2015/02/20/introducing-relay-and-graphql.html index 212c5ec078..21d98f52b6 100644 --- a/blog/2015/02/20/introducing-relay-and-graphql.html +++ b/blog/2015/02/20/introducing-relay-and-graphql.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/02/24/react-v0.13-rc1.html b/blog/2015/02/24/react-v0.13-rc1.html index 67b9b30daa..1f650bdded 100644 --- a/blog/2015/02/24/react-v0.13-rc1.html +++ b/blog/2015/02/24/react-v0.13-rc1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/02/24/streamlining-react-elements.html b/blog/2015/02/24/streamlining-react-elements.html index 253ab73b4a..ec39b0944d 100644 --- a/blog/2015/02/24/streamlining-react-elements.html +++ b/blog/2015/02/24/streamlining-react-elements.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/03/03/react-v0.13-rc2.html b/blog/2015/03/03/react-v0.13-rc2.html index 3dca1443c1..fc9d472a75 100644 --- a/blog/2015/03/03/react-v0.13-rc2.html +++ b/blog/2015/03/03/react-v0.13-rc2.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/03/04/community-roundup-25.html b/blog/2015/03/04/community-roundup-25.html index df97626deb..3dc1101310 100644 --- a/blog/2015/03/04/community-roundup-25.html +++ b/blog/2015/03/04/community-roundup-25.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/03/10/react-v0.13.html b/blog/2015/03/10/react-v0.13.html index 9a91030957..3043cca2c8 100644 --- a/blog/2015/03/10/react-v0.13.html +++ b/blog/2015/03/10/react-v0.13.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/03/16/react-v0.13.1.html b/blog/2015/03/16/react-v0.13.1.html index 2b70ba32a4..fe652087f1 100644 --- a/blog/2015/03/16/react-v0.13.1.html +++ b/blog/2015/03/16/react-v0.13.1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html b/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html index 9cc068bb4c..542edbd35c 100644 --- a/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html +++ b/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/03/26/introducing-react-native.html b/blog/2015/03/26/introducing-react-native.html index 8617676fe0..02ca32db3c 100644 --- a/blog/2015/03/26/introducing-react-native.html +++ b/blog/2015/03/26/introducing-react-native.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/03/30/community-roundup-26.html b/blog/2015/03/30/community-roundup-26.html index 26c8b28c18..ef6f1b5036 100644 --- a/blog/2015/03/30/community-roundup-26.html +++ b/blog/2015/03/30/community-roundup-26.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/04/17/react-native-v0.4.html b/blog/2015/04/17/react-native-v0.4.html index f05cbd028c..ae159672bd 100644 --- a/blog/2015/04/17/react-native-v0.4.html +++ b/blog/2015/04/17/react-native-v0.4.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/04/18/react-v0.13.2.html b/blog/2015/04/18/react-v0.13.2.html index bdf8835646..949e678640 100644 --- a/blog/2015/04/18/react-v0.13.2.html +++ b/blog/2015/04/18/react-v0.13.2.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/05/01/graphql-introduction.html b/blog/2015/05/01/graphql-introduction.html index 29041b2bfb..31e59f4353 100644 --- a/blog/2015/05/01/graphql-introduction.html +++ b/blog/2015/05/01/graphql-introduction.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/05/08/react-v0.13.3.html b/blog/2015/05/08/react-v0.13.3.html index 5b969e970e..cb117699df 100644 --- a/blog/2015/05/08/react-v0.13.3.html +++ b/blog/2015/05/08/react-v0.13.3.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/05/22/react-native-release-process.html b/blog/2015/05/22/react-native-release-process.html index 36c0819c60..7365f6c1fb 100644 --- a/blog/2015/05/22/react-native-release-process.html +++ b/blog/2015/05/22/react-native-release-process.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/06/12/deprecating-jstransform-and-react-tools.html b/blog/2015/06/12/deprecating-jstransform-and-react-tools.html index 1c11a33b0a..cd57497c4c 100644 --- a/blog/2015/06/12/deprecating-jstransform-and-react-tools.html +++ b/blog/2015/06/12/deprecating-jstransform-and-react-tools.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/07/03/react-v0.14-beta-1.html b/blog/2015/07/03/react-v0.14-beta-1.html index cd64de6f74..d316d7796f 100644 --- a/blog/2015/07/03/react-v0.14-beta-1.html +++ b/blog/2015/07/03/react-v0.14-beta-1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/08/03/new-react-devtools-beta.html b/blog/2015/08/03/new-react-devtools-beta.html index 96b14dc406..ab47f1ee85 100644 --- a/blog/2015/08/03/new-react-devtools-beta.html +++ b/blog/2015/08/03/new-react-devtools-beta.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/08/11/relay-technical-preview.html b/blog/2015/08/11/relay-technical-preview.html index 45c209dacd..2bb2588263 100644 --- a/blog/2015/08/11/relay-technical-preview.html +++ b/blog/2015/08/11/relay-technical-preview.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/08/13/reacteurope-roundup.html b/blog/2015/08/13/reacteurope-roundup.html index 7633095c70..2a57a0173e 100644 --- a/blog/2015/08/13/reacteurope-roundup.html +++ b/blog/2015/08/13/reacteurope-roundup.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/09/02/new-react-developer-tools.html b/blog/2015/09/02/new-react-developer-tools.html index 3cab306bde..b5fe32f7d2 100644 --- a/blog/2015/09/02/new-react-developer-tools.html +++ b/blog/2015/09/02/new-react-developer-tools.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/09/10/react-v0.14-rc1.html b/blog/2015/09/10/react-v0.14-rc1.html index 65eabed6e6..c26e21e7d2 100644 --- a/blog/2015/09/10/react-v0.14-rc1.html +++ b/blog/2015/09/10/react-v0.14-rc1.html @@ -66,6 +66,8 @@

Recent posts

diff --git a/blog/2015/09/14/community-roundup-27.html b/blog/2015/09/14/community-roundup-27.html new file mode 100644 index 0000000000..481fbc8be5 --- /dev/null +++ b/blog/2015/09/14/community-roundup-27.html @@ -0,0 +1,222 @@ + + + + + + + Community Round-up #27 – Relay Edition | React + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + + +

+ + Community Round-up #27 – Relay Edition + +

+ +

+ September 14, 2015 + by + + Steven Luscher + +

+ +
+ +
+

In the weeks following the open-source release of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together!

+

Teaching servers to speak GraphQL #

+

Every great Relay app starts by finding a GraphQL server to talk to. The community has spent the past few weeks teaching GraphQL to a few backend systems.

+ +

Bryan Goldstein (brysgo) has built a tool to help you define a GraphQL schema that wraps a set of Bookshelf.JS models. Check out graphql-bookshelf.

+ +

RisingStack (risingstack) created a GraphQL ORM called graffiti that you can plug into mongoose and serve using Express, Hapi, or Koa.

+ +

David Mongeau-Petitpas (dmongeau) is working on a way to vend your Laravel models through a GraphQL endpoint, laravel-graphql.

+ +

Gerald Monaco (devknoll) created graphql-schema to allow the creation of JavaScript GraphQL schemas using a fluent/chainable interface.

+ +

Jason Dusek (solidsnack) dove deep into PostgreSQL to teach it how to respond to GraphQL query strings as though they were SQL queries. Check out GraphpostgresQL.

+ +

Espen Hovlandsdal (rexxars) built a sql-to-graphql tool that can perform introspection on the tables of a MySQL or PostgreSQL database, and produce a queryable HTTP GraphQL endpoint out of it.

+ +

Mick Hansen (mickhansen) offers a set of schema-building helpers for use with the Sequelize ORM for MySQL, PostgreSQL, SQLite, and MSSQL.

+

GraphQL beyond JavaScript #

+

Robert Mosolgo (rmosolgo) brought the full set of schema-building and query execution tools to Ruby, in the form of graphql-ruby and graphql-relay-ruby. Check out his Rails-based demo.

+ +

Andreas Marek (andimarek) has brewed up a Java implementation of GraphQL, graphql-java.

+ +

vladar is hard at work on a PHP port of the GraphQL reference implementation, graphql-php.

+ +

Taeho Kim (dittos) is bringing GraphQL to Python, with graphql-py.

+ +

Oleg Ilyenko (OlegIlyenko) made a beautiful and delicious-looking website for a Scala implementation of GraphQL, sangria.

+ +

Joe McBride (joemcbride) has an up-and-running example of GraphQL for .NET, graphql-dotnet.

+

Show me, don't tell me #

+

Interact with this visual tour of Relay's architecture by Sam Gwilym (sgwilym).

+ +

+ Relay for visual learners +

+ +

Sam has already launched a product that leverages Relay's data-fetching, optimistic responses, pagination, and mutations – all atop a Ruby GraphQL server: new.comique.co

+

Prototyping in the browser #

+

I (steveluscher) whipped up a prototyping tool that you can use to hack on a schema and a React/Relay app, from the comfort of your browser. Thanks to Jimmy Jia (taion) for supplying the local-only network layer, relay-local-schema.

+

Skeletons in the closet #

+

Joseph Rollins (fortruce) created a hot-reloading, auto schema-regenerating, Relay skeleton that you can use to get up and running quickly.

+ +

Michael Hart (mhart) built a simple-relay-starter kit using Browserify.

+

Routing around #

+

Jimmy Jia (taion) and Gerald Monaco (devknoll) have been helping lost URLs find their way to Relay apps through their work on react-router-relay. Check out Christoph Pojer's (cpojer) blog post on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at taion/relay-todomvc.

+ +

Chen Hung-Tu (transedward) built a chat app atop the above mentioned router, with threaded conversations and pagination. Check it out at transedward/relay-chat.

+

In your words #

+
+
+ + + + + +
+
+ + + + + +
+
+ +
+ + +
+ + +
+
+ + +
+
+ A Facebook & Instagram collaboration.
+ Acknowledgements +
+
+ © 2013–2015 Facebook Inc.
+ Documentation licensed under CC BY 4.0. +
+
+
+
+ + + + diff --git a/blog/all.html b/blog/all.html index bd7a1571c6..5ea4edf8a0 100644 --- a/blog/all.html +++ b/blog/all.html @@ -65,6 +65,9 @@

All Posts

+

Community Round-up #27 – Relay Edition on September 14, 2015 by Steven Luscher

+ +

React v0.14 Release Candidate on September 10, 2015 by Ben Alpert

diff --git a/blog/index.html b/blog/index.html index 8fa97c7743..19f802aa9a 100644 --- a/blog/index.html +++ b/blog/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,98 @@ +

+ + Community Round-up #27 – Relay Edition + +

+ +

+ September 14, 2015 + by + + Steven Luscher + +

+ +
+ +
+

In the weeks following the open-source release of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together!

+

Teaching servers to speak GraphQL #

+

Every great Relay app starts by finding a GraphQL server to talk to. The community has spent the past few weeks teaching GraphQL to a few backend systems.

+ +

Bryan Goldstein (brysgo) has built a tool to help you define a GraphQL schema that wraps a set of Bookshelf.JS models. Check out graphql-bookshelf.

+ +

RisingStack (risingstack) created a GraphQL ORM called graffiti that you can plug into mongoose and serve using Express, Hapi, or Koa.

+ +

David Mongeau-Petitpas (dmongeau) is working on a way to vend your Laravel models through a GraphQL endpoint, laravel-graphql.

+ +

Gerald Monaco (devknoll) created graphql-schema to allow the creation of JavaScript GraphQL schemas using a fluent/chainable interface.

+ +

Jason Dusek (solidsnack) dove deep into PostgreSQL to teach it how to respond to GraphQL query strings as though they were SQL queries. Check out GraphpostgresQL.

+ +

Espen Hovlandsdal (rexxars) built a sql-to-graphql tool that can perform introspection on the tables of a MySQL or PostgreSQL database, and produce a queryable HTTP GraphQL endpoint out of it.

+ +

Mick Hansen (mickhansen) offers a set of schema-building helpers for use with the Sequelize ORM for MySQL, PostgreSQL, SQLite, and MSSQL.

+

GraphQL beyond JavaScript #

+

Robert Mosolgo (rmosolgo) brought the full set of schema-building and query execution tools to Ruby, in the form of graphql-ruby and graphql-relay-ruby. Check out his Rails-based demo.

+ +

Andreas Marek (andimarek) has brewed up a Java implementation of GraphQL, graphql-java.

+ +

vladar is hard at work on a PHP port of the GraphQL reference implementation, graphql-php.

+ +

Taeho Kim (dittos) is bringing GraphQL to Python, with graphql-py.

+ +

Oleg Ilyenko (OlegIlyenko) made a beautiful and delicious-looking website for a Scala implementation of GraphQL, sangria.

+ +

Joe McBride (joemcbride) has an up-and-running example of GraphQL for .NET, graphql-dotnet.

+

Show me, don't tell me #

+

Interact with this visual tour of Relay's architecture by Sam Gwilym (sgwilym).

+ +

+ Relay for visual learners +

+ +

Sam has already launched a product that leverages Relay's data-fetching, optimistic responses, pagination, and mutations – all atop a Ruby GraphQL server: new.comique.co

+

Prototyping in the browser #

+

I (steveluscher) whipped up a prototyping tool that you can use to hack on a schema and a React/Relay app, from the comfort of your browser. Thanks to Jimmy Jia (taion) for supplying the local-only network layer, relay-local-schema.

+

Skeletons in the closet #

+

Joseph Rollins (fortruce) created a hot-reloading, auto schema-regenerating, Relay skeleton that you can use to get up and running quickly.

+ +

Michael Hart (mhart) built a simple-relay-starter kit using Browserify.

+

Routing around #

+

Jimmy Jia (taion) and Gerald Monaco (devknoll) have been helping lost URLs find their way to Relay apps through their work on react-router-relay. Check out Christoph Pojer's (cpojer) blog post on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at taion/relay-todomvc.

+ +

Chen Hung-Tu (transedward) built a chat app atop the above mentioned router, with threaded conversations and pagination. Check it out at transedward/relay-chat.

+

In your words #

+
+
+ + + + + +
+
+ + + + + +
+
+ +
+ + + + + +
+ + +

React v0.14 Release Candidate @@ -463,109 +555,6 @@ Minified build for production: - - - -

- - New React Devtools Beta - -

- -

- August 3, 2015 - by - - Jared Forsyth - -

- -
- -
-

We've made an entirely new version of the devtools, and we want you to try it -out!

- -

The full devtools gif

-

Why entirely new? #

-

Perhaps the biggest reason was to create a defined API for dealing with -internals, so that other tools could benefit as well and not have to depend on -implementation details. This gives us more freedom to refactor things -internally without worrying about breaking tooling.

- -

The current version of the devtools is a fork of Blink's "Elements" pane, and -is imperative, mutation-driven, and tightly integrated with Chrome-specific -APIs. The new devtools are much less coupled to Chrome, and easier to reason -about thanks to React.

-

What are the benefits? #

-
    -
  • 100% React
  • -
  • Firefox compatible
  • -
  • React Native compatible
  • -
  • more extensible & hackable
  • -
-

Are there any new features? #

-

Yeah!

-

The Tree View #

-

The new tree view of the devtools

- -
    -
  • Much richer view of your props, including the contents of objects and arrays
  • -
  • Custom components are emphasized, native components are de-emphasized
  • -
  • Stateful components have a red collapser
  • -
  • Improved keyboard navigation (hjkl or arrow keys)
  • -
  • Selected component is available in the console as $r
  • -
  • Props that change highlight in green
  • -
  • Right-click menu

    - -
      -
    • Scroll node into view
    • -
    • Show the source for a component in the "Sources" pane
    • -
    • Show the element in the "Elements" pane
    • -
  • -
-

Searching #

-

Select the search bar (or press "/"), and start searching for a component by -name.

- -

-

The Side Pane #

-
    -
  • Now shows the context for a component
  • -
  • Right-click to store a prop/state value as a global variable
  • -
- -

-

How do I install it? #

-

First, disable the Chrome web store version, or it will break things. Then -download the .crx and -drag it into your chrome://extensions page. If it's not working to drag it -from the downloads bar, try opening your downloads folder and drag it from -there.

- -

Once we've determined that there aren't any major regressions, we'll update -the official web store version, and everyone will be automatically upgraded.

-

Also Firefox! #

-

We also have an initial version of the devtools for Firefox, which you can -download from the same release page.

-

Feedback welcome #

-

Let us know what issues you run into -on GitHub, and check out -the README -for more info.

-

Update #

-

August 12, 2015

- -

A second beta is out, with a number of bugfixes. It is also listed on the -releases page.

- -
- - -

diff --git a/blog/page10/index.html b/blog/page10/index.html index 5de69fd91e..c07e181e8c 100644 --- a/blog/page10/index.html +++ b/blog/page10/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,43 @@ +

+ + One Year of Open-Source React + +

+ +

+ May 29, 2014 + by + + Cheng Lou + +

+ +
+ +
+

Today marks the one-year open-source anniversary of React.

+ +

It’s been a crazy ride. 2.3k commits and 1.5k issues and pull requests later, we’re approaching version 1.0 and nearing 7k Github stars, with big names such as Khan Academy, New York Times, and Airbnb (and naturally, Facebook and Instagram) using React in production, and many more developers blogging their success stories with it. The roadmap gives a glimpse into the future of the library; exciting stuff lies ahead!

+ +

Every success has its story. React was born out of our frustration at existing solutions for building UIs. When it was first suggested at Facebook, few people thought that functionally re-rendering everything and diffing the results could ever perform well. However, support grew after we built the first implementation and people wrote their first components. When we open-sourced React, the initial reception was similarly skeptical. It challenges many pre-established conventions and received mostly disapproving first-impressions, intermingled with positive ones that often were votes of confidence in Facebook’s engineering capabilities. On an open, competitive platform such as the web, it's been hard to convince people to try React. JSX, in particular, filtered out a huge chunk of potential early adopters.

+ +

Fast forward one year, React has strongly grown in popularity. Special acknowledgments go to Khan Academy, the ClojureScript community, and established frameworks such as Ember and Angular for contributing to and debating on our work. We'd also like to thank all the individual contributors who have taken the time to help out over the past year. React, as a library and as a new paradigm on the web, wouldn't have gained as much traction without them. In the future, we will continue to try to set an example of what's possible to achieve when we rethink about current “best practices”.

+ +

Here’s to another year!

+ +
+ + + + + +
+ + +

Flux: An Application Architecture for React @@ -339,99 +376,6 @@ Minified build for production: - - - -

- - React v0.10 RC - -

- -

- March 19, 2014 - by - - Paul O’Shannessy - -

- -
- -
-

v0.9 has only been out for a month, but we’re getting ready to push out v0.10 already. Unlike v0.9 which took a long time, we don't have a long list of changes to talk about.

- -

The release candidate is available for download from the CDN:

- - - -

We've also published version 0.10.0-rc1 of the react and react-tools packages on npm and the react package on bower.

- -

Please try these builds out and file an issue on GitHub if you see anything awry.

-

Clone On Mount #

-

The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (React.DOM.div(), MyComponent()) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.

- -

In 0.10, we’re adding more warnings to catch a similar set of patterns. When a component is mounted we clone it and use that object for our internal representation. This allows us to capture calls you think you’re making to a mounted component. We’ll forward them on to the right object, but also warn you that this is breaking. See “Access to the Mounted Instance” on this page. Most of the time you can solve your pattern by using refs.

- -

Storing a reference to your top level component is a pattern touched upon on that page, but another examples that demonstrates what we see a lot of:

-
// This is a common pattern. However instance here really refers to a
-// "descriptor", not necessarily the mounted instance.
-var instance = <MyComponent/>;
-React.renderComponent(instance);
-// ...
-instance.setProps(...);
-
-// The change here is very simple. The return value of renderComponent will be
-// the mounted instance.
-var instance = React.renderComponent(<MyComponent/>)
-// ...
-instance.setProps(...);
-
-

These warnings and method forwarding are only enabled in the development build. The production builds continue to work as they did in v0.9. We strongly encourage you to use the development builds to catch these warnings and fix the call sites.

- -

The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of MyComponent() will fail hard.

-

Changelog #

React Core #

New Features #

-
    -
  • Added warnings to help migrate towards descriptors
  • -
  • Made it possible to server render without React-related markup (data-reactid, data-react-checksum). This DOM will not be mountable by React. Read the docs for React.renderComponentToStaticMarkup
  • -
  • Added support for more attributes: - -
      -
    • srcSet for <img> to specify images at different pixel ratios
    • -
    • textAnchor for SVG
    • -
  • -
-

Bug Fixes #

-
    -
  • Ensure all void elements don’t insert a closing tag into the markup.
  • -
  • Ensure className={false} behaves consistently
  • -
  • Ensure this.refs is defined, even if no refs are specified.
  • -
-

Addons #

- -

react-tools #

-
    -
  • Added an option argument to transform function. The only option supported is harmony, which behaves the same as jsx --harmony on the command line. This uses the ES6 transforms from jstransform.
  • -
- -
- - -

diff --git a/blog/page11/index.html b/blog/page11/index.html index a5f37b7585..638d74e167 100644 --- a/blog/page11/index.html +++ b/blog/page11/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,99 @@ +

+ + React v0.10 RC + +

+ +

+ March 19, 2014 + by + + Paul O’Shannessy + +

+ +
+ +
+

v0.9 has only been out for a month, but we’re getting ready to push out v0.10 already. Unlike v0.9 which took a long time, we don't have a long list of changes to talk about.

+ +

The release candidate is available for download from the CDN:

+ + + +

We've also published version 0.10.0-rc1 of the react and react-tools packages on npm and the react package on bower.

+ +

Please try these builds out and file an issue on GitHub if you see anything awry.

+

Clone On Mount #

+

The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (React.DOM.div(), MyComponent()) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.

+ +

In 0.10, we’re adding more warnings to catch a similar set of patterns. When a component is mounted we clone it and use that object for our internal representation. This allows us to capture calls you think you’re making to a mounted component. We’ll forward them on to the right object, but also warn you that this is breaking. See “Access to the Mounted Instance” on this page. Most of the time you can solve your pattern by using refs.

+ +

Storing a reference to your top level component is a pattern touched upon on that page, but another examples that demonstrates what we see a lot of:

+
// This is a common pattern. However instance here really refers to a
+// "descriptor", not necessarily the mounted instance.
+var instance = <MyComponent/>;
+React.renderComponent(instance);
+// ...
+instance.setProps(...);
+
+// The change here is very simple. The return value of renderComponent will be
+// the mounted instance.
+var instance = React.renderComponent(<MyComponent/>)
+// ...
+instance.setProps(...);
+
+

These warnings and method forwarding are only enabled in the development build. The production builds continue to work as they did in v0.9. We strongly encourage you to use the development builds to catch these warnings and fix the call sites.

+ +

The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of MyComponent() will fail hard.

+

Changelog #

React Core #

New Features #

+ +

Bug Fixes #

+ +

Addons #

+ +

react-tools #

+ + +
+ + + + + +
+ + +

Community Round-up #18 @@ -566,92 +659,6 @@ Minified build for production: - - - -

- - Community Round-up #16 - -

- -

- February 15, 2014 - by - - Jonas Gebhardt - -

- -
- -
-

There have been many posts recently covering the why and how of React. This week's community round-up includes a collection of recent articles to help you get started with React, along with a few posts that explain some of the inner workings.

-

React in a nutshell #

-

Got five minutes to pitch React to your coworkers? John Lynch (@johnrlynch) put together this excellent and refreshing slideshow:

- - -

React's diff algorithm #

-

React core team member Christopher Chedeau (@vjeux) explores the innards of React's tree diffing algorithm in this extensive and well-illustrated post.

- -

While we're talking about tree diffing: Matt Esch (@MatthewEsch) created this project, which aims to implement the virtual DOM and a corresponding diff algorithm as separate modules.

-

Many, many new introductions to React! #

-

James Padosley wrote a short post on the basics (and merits) of React: What is React?

- -
-

What I like most about React is that it doesn't impose heady design patterns and data-modelling abstractions on me. [...] Its opinions are so minimal and its abstractions so focused on the problem of the DOM, that you can merrily slap your design choices atop.

- -

Read the full post...

-
- -

Taylor Lapeyre (@taylorlapeyre) wrote another nice introduction to React.

- -
-

React expects you to do the work of getting and pushing data from the server. This makes it very easy to implement React as a front end solution, since it simply expects you to hand it data. React does all the other work.

- -

Read the full post...

-
- -

This "Deep explanation for newbies" by @ProJavaScript explains how to get started building a React game without using the optional JSX syntax.

-

React around the world #

-

It's great to see the React community expand internationally. This site features a React introduction in Russian.

-

React tutorial series #

-

Christopher Pitt explains React Components and React Properties. The former includes a nice introduction to using JSX, while the latter focuses on adding interactivity and linking multiple components together. Also check out the other posts in his React Tutorial series, e.g. on using React + Backbone Model and React + Backbone Router.

-

Beginner tutorial: Implementing the board game Go #

-

Chris LaRose walks through the steps of creating a Go app in React, showing how to separate application logic from the rendered components. Check out his tutorial or go straight to the code.

-

Egghead.io video tutorials #

-

Joe Maddalone (@joemaddalone) of egghead.io created a series of React video tutorials, such as this introduction to React Components. [part 1], [part 2]

-

"React: Finally, a great server/client web stack" #

-

Eric Florenzano (@ericflo) sheds some light on what makes React perfect for server rendering:

- -
-

[...] the ideal solution would fully render the markup on the server, deliver it to the client so that it can be shown to the user instantly. Then it would asynchronously load some Javascript that would attach to the rendered markup, and invisibly promote the page into a full app that can render its own markup. [...]

- -

What I've discovered is that enough of the pieces have come together, that this futuristic-sounding web environment is actually surprisingly easy to do now with React.js.

- -

Read the full post...

-
-

Building a complex React component #

-

Matt Harrison walks through the process of creating an SVG-based Resistance Calculator using React.

-

Random Tweets #

-
- -
- -
- -
- -
- -
- - -

diff --git a/blog/page12/index.html b/blog/page12/index.html index 776dd2b2a2..db3a5873cb 100644 --- a/blog/page12/index.html +++ b/blog/page12/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,92 @@ +

+ + Community Round-up #16 + +

+ +

+ February 15, 2014 + by + + Jonas Gebhardt + +

+ +
+ +
+

There have been many posts recently covering the why and how of React. This week's community round-up includes a collection of recent articles to help you get started with React, along with a few posts that explain some of the inner workings.

+

React in a nutshell #

+

Got five minutes to pitch React to your coworkers? John Lynch (@johnrlynch) put together this excellent and refreshing slideshow:

+ + +

React's diff algorithm #

+

React core team member Christopher Chedeau (@vjeux) explores the innards of React's tree diffing algorithm in this extensive and well-illustrated post.

+ +

While we're talking about tree diffing: Matt Esch (@MatthewEsch) created this project, which aims to implement the virtual DOM and a corresponding diff algorithm as separate modules.

+

Many, many new introductions to React! #

+

James Padosley wrote a short post on the basics (and merits) of React: What is React?

+ +
+

What I like most about React is that it doesn't impose heady design patterns and data-modelling abstractions on me. [...] Its opinions are so minimal and its abstractions so focused on the problem of the DOM, that you can merrily slap your design choices atop.

+ +

Read the full post...

+
+ +

Taylor Lapeyre (@taylorlapeyre) wrote another nice introduction to React.

+ +
+

React expects you to do the work of getting and pushing data from the server. This makes it very easy to implement React as a front end solution, since it simply expects you to hand it data. React does all the other work.

+ +

Read the full post...

+
+ +

This "Deep explanation for newbies" by @ProJavaScript explains how to get started building a React game without using the optional JSX syntax.

+

React around the world #

+

It's great to see the React community expand internationally. This site features a React introduction in Russian.

+

React tutorial series #

+

Christopher Pitt explains React Components and React Properties. The former includes a nice introduction to using JSX, while the latter focuses on adding interactivity and linking multiple components together. Also check out the other posts in his React Tutorial series, e.g. on using React + Backbone Model and React + Backbone Router.

+

Beginner tutorial: Implementing the board game Go #

+

Chris LaRose walks through the steps of creating a Go app in React, showing how to separate application logic from the rendered components. Check out his tutorial or go straight to the code.

+

Egghead.io video tutorials #

+

Joe Maddalone (@joemaddalone) of egghead.io created a series of React video tutorials, such as this introduction to React Components. [part 1], [part 2]

+

"React: Finally, a great server/client web stack" #

+

Eric Florenzano (@ericflo) sheds some light on what makes React perfect for server rendering:

+ +
+

[...] the ideal solution would fully render the markup on the server, deliver it to the client so that it can be shown to the user instantly. Then it would asynchronously load some Javascript that would attach to the rendered markup, and invisibly promote the page into a full app that can render its own markup. [...]

+ +

What I've discovered is that enough of the pieces have come together, that this futuristic-sounding web environment is actually surprisingly easy to do now with React.js.

+ +

Read the full post...

+
+

Building a complex React component #

+

Matt Harrison walks through the process of creating an SVG-based Resistance Calculator using React.

+

Random Tweets #

+
+ +
+ +
+ +
+ +
+ +
+ + + + + +
+ + +

Community Round-up #15 @@ -471,105 +557,6 @@ rails s -

- -
- - - -

- - Community Round-up #12 - -

- -

- December 23, 2013 - by - - Vjeux - -

- -
- -
-

React got featured on the front-page of Hacker News thanks to the Om library. If you try it out for the first time, take a look at the docs and do not hesitate to ask questions on the Google Group, IRC or Stack Overflow. We are trying our best to help you out!

-

The Future of Javascript MVC #

-

David Nolen announced Om, a thin wrapper on-top of React in ClojureScript. It stands out by only using immutable data structures. This unlocks the ability to write a very efficient shouldComponentUpdate and get huge performance improvements on some tasks.

- -
-

We've known this for some time over here in the ClojureScript corner of the world - all of our collections are immutable and modeled directly on the original Clojure versions written in Java. Modern JavaScript engines have now been tuned to the point that it's no longer uncommon to see collection performance within 2.5X of the Java Virtual Machine.

- -

Wait, wait, wait. What does the performance of persistent data structures have to do with the future of JavaScript MVCs?

- -

A whole lot. -

- -

Read the full article...

-
-

Scroll Position with React #

-

Managing the scroll position when new content is inserted is usually very tricky to get right. Vjeux discovered that componentWillUpdate and componentDidUpdate were triggered exactly at the right time to manage the scroll position.

- -
-

We can check the scroll position before the component has updated with componentWillUpdate and scroll if necessary at componentDidUpdate

-
componentWillUpdate: function() {
-  var node = this.getDOMNode();
-  this.shouldScrollBottom =
-    (node.scrollTop + node.offsetHeight) === node.scrollHeight;
-},
-componentDidUpdate: function() {
-  if (this.shouldScrollBottom) {
-    var node = this.getDOMNode();
-    node.scrollTop = node.scrollHeight
-  }
-},
-
-

Check out the blog article...

-
-

Lights Out #

-

React declarative approach is well suited to write games. Cheng Lou wrote the famous Lights Out game in React. It's a good example of use of TransitionGroup to implement animations. -

- -

Try it out!

-

Reactive Table Bookmarklet #

-

Stoyan Stefanov wrote a bookmarklet to process tables on the internet. It adds a little "pop" button that expands to a full-screen view with sorting, editing and export to csv and json. -

- -

Check out the blog post...

-

MontageJS Tutorial in React #

-

Ross Allen implemented MontageJS's Reddit tutorial in React. This is a good opportunity to compare the philosophies of the two libraries.

- -

View the source on JSFiddle...

-

Writing Good React Components #

-

William Högman Rudenmalm wrote an article on how to write good React components. This is full of good advice.

- -
-

The idea of dividing software into smaller parts or components is hardly new - It is the essance of good software. The same principles that apply to software in general apply to building React components. That doesn’t mean that writing good React components is just about applying general rules.

- -

The web offers a unique set of challenges, which React offers interesting solutions to. First and foremost among these solutions is the what is called the Mock DOM. Rather than having user code interface with the DOM in a direct fashion, as is the case with most DOM manipulation libraries.

- -

You build a model of how you want the DOM end up like. React then inserts this model into the DOM. This is very useful for updates because React simply compares the model or mock DOM against the actual DOM, and then only updates based on the difference between the two states.

- -

Read the full article ...

-
-

Hoodie React TodoMVC #

-

Sven Lito integrated the React TodoMVC example within an Hoodie web app environment. This should let you get started using Hoodie and React.

-
hoodie new todomvc -t "hoodiehq/hoodie-react-todomvc"
-
-

Check out on GitHub...

-

JSX Compiler #

-

Ever wanted to have a quick way to see what a JSX tag would be converted to? Tim Yung made a page for it. -

- -

Try it out!

-

Random Tweet #

-

- -
- - -
diff --git a/blog/page13/index.html b/blog/page13/index.html index 4c1232b894..2030384984 100644 --- a/blog/page13/index.html +++ b/blog/page13/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,105 @@ +

+ + Community Round-up #12 + +

+ +

+ December 23, 2013 + by + + Vjeux + +

+ +
+ +
+

React got featured on the front-page of Hacker News thanks to the Om library. If you try it out for the first time, take a look at the docs and do not hesitate to ask questions on the Google Group, IRC or Stack Overflow. We are trying our best to help you out!

+

The Future of Javascript MVC #

+

David Nolen announced Om, a thin wrapper on-top of React in ClojureScript. It stands out by only using immutable data structures. This unlocks the ability to write a very efficient shouldComponentUpdate and get huge performance improvements on some tasks.

+ +
+

We've known this for some time over here in the ClojureScript corner of the world - all of our collections are immutable and modeled directly on the original Clojure versions written in Java. Modern JavaScript engines have now been tuned to the point that it's no longer uncommon to see collection performance within 2.5X of the Java Virtual Machine.

+ +

Wait, wait, wait. What does the performance of persistent data structures have to do with the future of JavaScript MVCs?

+ +

A whole lot. +

+ +

Read the full article...

+
+

Scroll Position with React #

+

Managing the scroll position when new content is inserted is usually very tricky to get right. Vjeux discovered that componentWillUpdate and componentDidUpdate were triggered exactly at the right time to manage the scroll position.

+ +
+

We can check the scroll position before the component has updated with componentWillUpdate and scroll if necessary at componentDidUpdate

+
componentWillUpdate: function() {
+  var node = this.getDOMNode();
+  this.shouldScrollBottom =
+    (node.scrollTop + node.offsetHeight) === node.scrollHeight;
+},
+componentDidUpdate: function() {
+  if (this.shouldScrollBottom) {
+    var node = this.getDOMNode();
+    node.scrollTop = node.scrollHeight
+  }
+},
+
+

Check out the blog article...

+
+

Lights Out #

+

React declarative approach is well suited to write games. Cheng Lou wrote the famous Lights Out game in React. It's a good example of use of TransitionGroup to implement animations. +

+ +

Try it out!

+

Reactive Table Bookmarklet #

+

Stoyan Stefanov wrote a bookmarklet to process tables on the internet. It adds a little "pop" button that expands to a full-screen view with sorting, editing and export to csv and json. +

+ +

Check out the blog post...

+

MontageJS Tutorial in React #

+

Ross Allen implemented MontageJS's Reddit tutorial in React. This is a good opportunity to compare the philosophies of the two libraries.

+ +

View the source on JSFiddle...

+

Writing Good React Components #

+

William Högman Rudenmalm wrote an article on how to write good React components. This is full of good advice.

+ +
+

The idea of dividing software into smaller parts or components is hardly new - It is the essance of good software. The same principles that apply to software in general apply to building React components. That doesn’t mean that writing good React components is just about applying general rules.

+ +

The web offers a unique set of challenges, which React offers interesting solutions to. First and foremost among these solutions is the what is called the Mock DOM. Rather than having user code interface with the DOM in a direct fashion, as is the case with most DOM manipulation libraries.

+ +

You build a model of how you want the DOM end up like. React then inserts this model into the DOM. This is very useful for updates because React simply compares the model or mock DOM against the actual DOM, and then only updates based on the difference between the two states.

+ +

Read the full article ...

+
+

Hoodie React TodoMVC #

+

Sven Lito integrated the React TodoMVC example within an Hoodie web app environment. This should let you get started using Hoodie and React.

+
hoodie new todomvc -t "hoodiehq/hoodie-react-todomvc"
+
+

Check out on GitHub...

+

JSX Compiler #

+

Ever wanted to have a quick way to see what a JSX tag would be converted to? Tim Yung made a page for it. +

+ +

Try it out!

+

Random Tweet #

+

+ +
+ + + + + +
+ + +

React v0.8 @@ -432,46 +531,6 @@ Is this some sort of template language? Specifically no. This might have been th -

- -
- - - -

- - React v0.5.1 - -

- -

- October 29, 2013 - by - - Paul O’Shannessy - -

- -
- -
-

This release focuses on fixing some small bugs that have been uncovered over the past two weeks. I would like to thank everybody involved, specifically members of the community who fixed half of the issues found. Thanks to Ben Alpert, Andrey Popp, and Laurence Rowe for their contributions!

-

Changelog #

React #

-
    -
  • Fixed bug with <input type="range"> and selection events.
  • -
  • Fixed bug with selection and focus.
  • -
  • Made it possible to unmount components from the document root.
  • -
  • Fixed bug for disabled attribute handling on non-<input> elements.
  • -
-

React with Addons #

-
    -
  • Fixed bug with transition and animation event detection.
  • -
- -
- - -
diff --git a/blog/page14/index.html b/blog/page14/index.html index e81a30721a..ff424a2fa0 100644 --- a/blog/page14/index.html +++ b/blog/page14/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,46 @@ +

+ + React v0.5.1 + +

+ +

+ October 29, 2013 + by + + Paul O’Shannessy + +

+ +
+ +
+

This release focuses on fixing some small bugs that have been uncovered over the past two weeks. I would like to thank everybody involved, specifically members of the community who fixed half of the issues found. Thanks to Ben Alpert, Andrey Popp, and Laurence Rowe for their contributions!

+

Changelog #

React #

+ +

React with Addons #

+ + +
+ + + + + +
+ + +

React v0.5 @@ -447,67 +487,6 @@ -

- -
- - - -

- - Use React and JSX in Python Applications - -

- -

- August 19, 2013 - by - - Kunal Mehta - -

- -
- -
-

Today we're happy to announce the initial release of PyReact, which makes it easier to use React and JSX in your Python applications. It's designed to provide an API to transform your JSX files into JavaScript, as well as provide access to the latest React source files.

-

Usage #

-

Transform your JSX files via the provided jsx module:

-
from react import jsx
-
-# For multiple paths, use the JSXTransformer class.
-transformer = jsx.JSXTransformer()
-for jsx_path, js_path in my_paths:
-    transformer.transform(jsx_path, js_path)
-
-# For a single file, you can use a shortcut method.
-jsx.transform('path/to/input/file.jsx', 'path/to/output/file.js')
-
-

For full paths to React files, use the source module:

-
from react import source
-
-# path_for raises IOError if the file doesn't exist.
-react_js = source.path_for('react.min.js')
-

Django #

-

PyReact includes a JSX compiler for django-pipeline. Add it to your project's pipeline settings like this:

-
PIPELINE_COMPILERS = (
-  'react.utils.pipeline.JSXCompiler',
-)
-

Installation #

-

PyReact is hosted on PyPI, and can be installed with pip:

-
$ pip install PyReact
-
-

Alternatively, add it into your requirements file:

-
PyReact==0.1.1
-
-

Dependencies: PyReact uses PyExecJS to execute the bundled React code, which requires that a JS runtime environment is installed on your machine. We don't explicitly set a dependency on a runtime environment; Mac OS X comes bundled with one. If you're on a different platform, we recommend PyV8.

- -

For the initial release, we've only tested on Python 2.7. Look out for support for Python 3 in the future, and if you see anything that can be improved, we welcome your contributions!

- -
- - -
diff --git a/blog/page15/index.html b/blog/page15/index.html index 30fca26b73..e065057135 100644 --- a/blog/page15/index.html +++ b/blog/page15/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,67 @@ +

+ + Use React and JSX in Python Applications + +

+ +

+ August 19, 2013 + by + + Kunal Mehta + +

+ +
+ +
+

Today we're happy to announce the initial release of PyReact, which makes it easier to use React and JSX in your Python applications. It's designed to provide an API to transform your JSX files into JavaScript, as well as provide access to the latest React source files.

+

Usage #

+

Transform your JSX files via the provided jsx module:

+
from react import jsx
+
+# For multiple paths, use the JSXTransformer class.
+transformer = jsx.JSXTransformer()
+for jsx_path, js_path in my_paths:
+    transformer.transform(jsx_path, js_path)
+
+# For a single file, you can use a shortcut method.
+jsx.transform('path/to/input/file.jsx', 'path/to/output/file.js')
+
+

For full paths to React files, use the source module:

+
from react import source
+
+# path_for raises IOError if the file doesn't exist.
+react_js = source.path_for('react.min.js')
+

Django #

+

PyReact includes a JSX compiler for django-pipeline. Add it to your project's pipeline settings like this:

+
PIPELINE_COMPILERS = (
+  'react.utils.pipeline.JSXCompiler',
+)
+

Installation #

+

PyReact is hosted on PyPI, and can be installed with pip:

+
$ pip install PyReact
+
+

Alternatively, add it into your requirements file:

+
PyReact==0.1.1
+
+

Dependencies: PyReact uses PyExecJS to execute the bundled React code, which requires that a JS runtime environment is installed on your machine. We don't explicitly set a dependency on a runtime environment; Mac OS X comes bundled with one. If you're on a different platform, we recommend PyV8.

+ +

For the initial release, we've only tested on Python 2.7. Look out for support for Python 3 in the future, and if you see anything that can be improved, we welcome your contributions!

+ +
+ + + + + +
+ + +

Community Round-up #6 @@ -399,66 +460,6 @@ -

- -
- - - -

- - React v0.4.0 - -

- -

- July 17, 2013 - by - - Paul O’Shannessy - -

- -
- -
-

Over the past 2 months we've been taking feedback and working hard to make React even better. We fixed some bugs, made some under-the-hood improvements, and added several features that we think will improve the experience developing with React. Today we're proud to announce the availability of React v0.4!

- -

This release could not have happened without the support of our growing community. Since launch day, the community has contributed blog posts, questions to the Google Group, and issues and pull requests on GitHub. We've had contributions ranging from documentation improvements to major changes to React's rendering. We've seen people integrate React into the tools they're using and the products they're building, and we're all very excited to see what our budding community builds next!

- -

React v0.4 has some big changes. We've also restructured the documentation to better communicate how to use React. We've summarized the changes below and linked to documentation where we think it will be especially useful.

- -

When you're ready, go download it!

-

React #

-
    -
  • Switch from using id attribute to data-reactid to track DOM nodes. This allows you to integrate with other JS and CSS libraries more easily.
  • -
  • Support for more DOM elements and attributes (e.g., <canvas>)
  • -
  • Improved server-side rendering APIs. React.renderComponentToString(<component>, callback) allows you to use React on the server and generate markup which can be sent down to the browser.
  • -
  • prop improvements: validation and default values. Read our blog post for details...
  • -
  • Support for the key prop, which allows for finer control over reconciliation. Read the docs for details...
  • -
  • Removed React.autoBind. Read our blog post for details...
  • -
  • Improvements to forms. We've written wrappers around <input>, <textarea>, <option>, and <select> in order to standardize many inconsistencies in browser implementations. This includes support for defaultValue, and improved implementation of the onChange event, and circuit completion. Read the docs for details...
  • -
  • We've implemented an improved synthetic event system that conforms to the W3C spec.
  • -
  • Updates to your component are batched now, which may result in a significantly faster re-render of components. this.setState now takes an optional callback as its second parameter. If you were using onClick={this.setState.bind(this, state)} previously, you'll want to make sure you add a third parameter so that the event is not treated as the callback.
  • -
-

JSX #

-
    -
  • Support for comment nodes <div>{/* this is a comment and won't be rendered */}</div>
  • -
  • Children are now transformed directly into arguments instead of being wrapped in an array -E.g. <div><Component1/><Component2/></div> is transformed into React.DOM.div(null, Component1(null), Component2(null)). -Previously this would be transformed into React.DOM.div(null, [Component1(null), Component2(null)]). -If you were using React without JSX previously, your code should still work.
  • -
-

react-tools #

-
    -
  • Fixed a number of bugs when transforming directories
  • -
  • No longer re-write require()s to be relative unless specified
  • -
- -
- - -
diff --git a/blog/page16/index.html b/blog/page16/index.html index 75347f05e5..74e26253ed 100644 --- a/blog/page16/index.html +++ b/blog/page16/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,66 @@ +

+ + React v0.4.0 + +

+ +

+ July 17, 2013 + by + + Paul O’Shannessy + +

+ +
+ +
+

Over the past 2 months we've been taking feedback and working hard to make React even better. We fixed some bugs, made some under-the-hood improvements, and added several features that we think will improve the experience developing with React. Today we're proud to announce the availability of React v0.4!

+ +

This release could not have happened without the support of our growing community. Since launch day, the community has contributed blog posts, questions to the Google Group, and issues and pull requests on GitHub. We've had contributions ranging from documentation improvements to major changes to React's rendering. We've seen people integrate React into the tools they're using and the products they're building, and we're all very excited to see what our budding community builds next!

+ +

React v0.4 has some big changes. We've also restructured the documentation to better communicate how to use React. We've summarized the changes below and linked to documentation where we think it will be especially useful.

+ +

When you're ready, go download it!

+

React #

+ +

JSX #

+ +

react-tools #

+ + +
+ + + + + +
+ + +

New in React v0.4: Prop Validation and Default Values @@ -410,49 +470,6 @@ -

- -
- - - -

- - React v0.3.3 - -

- -

- June 21, 2013 - by - - Paul O’Shannessy - -

- -
- -
-

We have a ton of great stuff coming in v0.4, but in the meantime we're releasing v0.3.3. This release addresses some small issues people were having and simplifies our tools to make them easier to use.

-

react-tools #

-
    -
  • Upgrade Commoner so require statements are no longer relativized when passing through the transformer. This was a feature needed when building React, but doesn't translate well for other consumers of bin/jsx.
  • -
  • Upgraded our dependencies on Commoner and Recast so they use a different directory for their cache.
  • -
  • Freeze our esprima dependency.
  • -
-

React #

-
    -
  • Allow reusing the same DOM node to render different components. e.g. React.renderComponent(<div/>, domNode); React.renderComponent(<span/>, domNode); will work now.
  • -
-

JSXTransformer #

-
    -
  • Improved the in-browser transformer so that transformed scripts will execute in the expected scope. The allows components to be defined and used from separate files.
  • -
- -
- - -
diff --git a/blog/page17/index.html b/blog/page17/index.html index a2a528ca6e..b817d9d06f 100644 --- a/blog/page17/index.html +++ b/blog/page17/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,49 @@ +

+ + React v0.3.3 + +

+ +

+ June 21, 2013 + by + + Paul O’Shannessy + +

+ +
+ +
+

We have a ton of great stuff coming in v0.4, but in the meantime we're releasing v0.3.3. This release addresses some small issues people were having and simplifies our tools to make them easier to use.

+

react-tools #

+ +

React #

+ +

JSXTransformer #

+ + +
+ + + + + +
+ + +

Community Round-up #2 diff --git a/blog/page2/index.html b/blog/page2/index.html index 7181b98bb0..7272ea81eb 100644 --- a/blog/page2/index.html +++ b/blog/page2/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,109 @@ +

+ + New React Devtools Beta + +

+ +

+ August 3, 2015 + by + + Jared Forsyth + +

+ +
+ +
+

We've made an entirely new version of the devtools, and we want you to try it +out!

+ +

The full devtools gif

+

Why entirely new? #

+

Perhaps the biggest reason was to create a defined API for dealing with +internals, so that other tools could benefit as well and not have to depend on +implementation details. This gives us more freedom to refactor things +internally without worrying about breaking tooling.

+ +

The current version of the devtools is a fork of Blink's "Elements" pane, and +is imperative, mutation-driven, and tightly integrated with Chrome-specific +APIs. The new devtools are much less coupled to Chrome, and easier to reason +about thanks to React.

+

What are the benefits? #

+ +

Are there any new features? #

+

Yeah!

+

The Tree View #

+

The new tree view of the devtools

+ + +

Searching #

+

Select the search bar (or press "/"), and start searching for a component by +name.

+ +

+

The Side Pane #

+ + +

+

How do I install it? #

+

First, disable the Chrome web store version, or it will break things. Then +download the .crx and +drag it into your chrome://extensions page. If it's not working to drag it +from the downloads bar, try opening your downloads folder and drag it from +there.

+ +

Once we've determined that there aren't any major regressions, we'll update +the official web store version, and everyone will be automatically upgraded.

+

Also Firefox! #

+

We also have an initial version of the devtools for Firefox, which you can +download from the same release page.

+

Feedback welcome #

+

Let us know what issues you run into +on GitHub, and check out +the README +for more info.

+

Update #

+

August 12, 2015

+ +

A second beta is out, with a number of bugfixes. It is also listed on the +releases page.

+ +
+ + + + + +
+ + +

React v0.14 Beta 1 @@ -332,120 +435,6 @@ Minified build for production: - - - -

- - GraphQL Introduction - -

- -

- May 1, 2015 - by - - Nick Schrock - -

- -
- -
-

At the React.js conference in late January 2015, we revealed our next major technology in the React family: Relay.

- -

Relay is a new way of structuring client applications that co-locates data-fetching requirements and React components. Instead of placing data fetching logic in some other part of the client application – or embedding this logic in a custom endpoint on the server – we instead co-locate a declarative data-fetching specification alongside the React component. The language of this declarative specification is GraphQL.

- -

GraphQL was not invented to enable Relay. In fact, GraphQL predates Relay by nearly three years. It was invented during the move from Facebook's HTML5-driven mobile applications to purely native applications. It is a query language for graph data that powers the lion's share of interactions in the Facebook Android and iOS applications. Any user of the native iOS or Android app in the last two years has used an app powered by GraphQL.

- -

We plan to open-source a reference implementation of a GraphQL server and publish a language specification in the coming months. Our goal is to evolve GraphQL to adapt to a wide range of backends, so that projects and companies can use this technology to access their own data. We believe that this is a compelling way to structure servers and to provide powerful abstractions, frameworks and tools – including, but not exclusively, Relay – for product developers.

-

What is GraphQL? #

-

A GraphQL query is a string interpreted by a server that returns data in a specified format. Here is an example query:

-
{
-  user(id: 3500401) {
-    id,
-    name,
-    isViewerFriend,
-    profilePicture(size: 50)  {
-      uri,
-      width,
-      height
-    }
-  }
-}
-
-

(Note: this syntax is slightly different from previous GraphQL examples. We've recently been making improvements to the language.)

- -

And here is the response to that query.

-
{
-  "user" : {
-    "id": 3500401,
-    "name": "Jing Chen",
-    "isViewerFriend": true,
-    "profilePicture": {
-      "uri": "http://someurl.cdn/pic.jpg",
-      "width": 50,
-      "height": 50
-    }
-  }
-}
-
-

We will dig into the syntax and semantics of GraphQL in a later post, but even a simple example shows many of its design principles:

- -
    -
  • Hierarchical: Most product development today involves the creation and manipulation of view hierarchies. To achieve congruence with the structure of these applications, a GraphQL query itself is a hierarchical set of fields. The query is shaped just like the data it returns. It is a natural way for product engineers to describe data requirements.
  • -
  • Product-centric: GraphQL is unapologetically driven by the requirements of views and the front-end engineers that write them. We start with their way of thinking and requirements and build the language and runtime necessary to enable that.
  • -
  • Client-specified queries: In GraphQL, the specification for queries are encoded in the client rather than the server. These queries are specified at field-level granularity. In the vast majority of applications written without GraphQL, the server determines the data returned in its various scripted endpoints. A GraphQL query, on the other hand, returns exactly what a client asks for and no more.
  • -
  • Backwards Compatible: In a world of deployed native mobile applications with no forced upgrades, backwards compatibility is a challenge. Facebook, for example, releases apps on a two week fixed cycle and pledges to maintain those apps for at least two years. This means there are at a minimum 52 versions of our clients per platform querying our servers at any given time. Client-specified queries simplifies managing our backwards compatibility guarantees.
  • -
  • Structured, Arbitrary Code: Query languages with field-level granularity have typically queried storage engines directly, such as SQL. GraphQL instead imposes a structure onto a server, and exposes fields that are backed by arbitrary code. This allows for both server-side flexibility and a uniform, powerful API across the entire surface area of an application.
  • -
  • Application-Layer Protocol: GraphQL is an application-layer protocol and does not require a particular transport. It is a string that is parsed and interpreted by a server.
  • -
  • Strongly-typed: GraphQL is strongly-typed. Given a query, tooling can ensure that the query is both syntactically correct and valid within the GraphQL type system before execution, i.e. at development time, and the server can make certain guarantees about the shape and nature of the response. This makes it easier to build high quality client tools.
  • -
  • Introspective: GraphQL is introspective. Clients and tools can query the type system using the GraphQL syntax itself. This is a powerful platform for building tools and client software, such as automatic parsing of incoming data into strongly-typed interfaces. It is especially useful in statically typed languages such as Swift, Objective-C and Java, as it obviates the need for repetitive and error-prone code to shuffle raw, untyped JSON into strongly-typed business objects.
  • -
-

Why invent something new? #

-

Obviously GraphQL is not the first system to manage client-server interactions. In today's world there are two dominant architectural styles for client-server interaction: REST and ad hoc endpoints.

-

REST #

-

REST, an acronym for Representational State Transfer, is an architectural style rather than a formal protocol. There is actually much debate about what exactly REST is and is not. We wish to avoid such debates. We are interested in the typical attributes of systems that self-identify as REST, rather than systems which are formally REST.

- -

Objects in a typical REST system are addressable by URI and interacted with using verbs in the HTTP protocol. An HTTP GET to a particular URI fetches an object and returns a server-specified set of fields. An HTTP PUT edits an object; an HTTP DELETE deletes an object; and so on.

- -

We believe there are a number of weakness in typical REST systems, ones that are particularly problematic in mobile applications:

- -
    -
  • Fetching complicated object graphs require multiple round trips between the client and server to render single views. For mobile applications operating in variable network conditions, these multiple roundtrips are highly undesirable.
  • -
  • Invariably fields and additional data are added to REST endpoints as the system requirements change. However, old clients also receive this additional data as well, because the data fetching specification is encoded on the server rather than the client. As result, these payloads tend to grow over time for all clients. When this becomes a problem for a system, one solution is to overlay a versioning system onto the REST endpoints. Versioning also complicates a server, and results in code duplication, spaghetti code, or a sophisticated, hand-rolled infrastructure to manage it. Another solution to limit over-fetching is to provide multiple views – such as “compact” vs “full” – of the same REST endpoint, however this coarse granularity often does not offer adequate flexibility.
  • -
  • REST endpoints are usually weakly-typed and lack machine-readable metadata. While there is much debate about the merits of strong- versus weak-typing in distributed systems, we believe in strong typing because of the correctness guarantees and tooling opportunities it provides. Developer deal with systems that lack this metadata by inspecting frequently out-of-date documentation and then writing code against the documentation.
  • -
  • Many of these attributes are linked to the fact that “REST is intended for long-lived network-based applications that span multiple organizations” according to its inventor. This is not a requirement for APIs that serve a client app built within the same organization.
  • -
- -

Nearly all externally facing REST APIs we know of trend or end up in these non-ideal states, as well as nearly all internal REST APIs. The consequences of opaqueness and over-fetching are more severe in internal APIs since their velocity of change and level of usage is almost always higher.

- -

Because of multiple round-trips and over-fetching, applications built in the REST style inevitably end up building ad hoc endpoints that are superficially in the REST style. These actually couple the data to a particular view which explicitly violates one of REST's major goals. Most REST systems of any complexity end up as a continuum of endpoints that span from “traditional” REST to ad hoc endpoints.

-

Ad Hoc Endpoints #

-

Many applications have no formalized client-server contract. Product developers access server capabilities through ad hoc endpoints and write custom code to fetch the data they need. Servers define procedures, and they return data. This approach has the virtue of simplicity, but can often become untenable as systems age.

- -
    -
  • These systems typically define a custom endpoint per view. For systems with a wide surface area this can quickly grow into a maintenance nightmare of orphaned endpoints, inconsistent tooling, and massive server code duplication. Disciplined engineering organizations can mitigate these issues with great engineering practices, high quality abstractions, and custom tooling. However, given our experience we believe that custom endpoints tend to lead to entropic server codebases.
  • -
  • Much like REST, the payloads of custom endpoints grow monotonically (even with mitigation from versioning systems) as the server evolves. Deployed clients cannot break, and, with rapid release cycles and backwards compatibility guarantees, distributed applications will have large numbers of extant versions. Under these constraints it is difficult remove data from a custom endpoint.
  • -
  • Custom endpoints tend to – for a client developer – create a clunky, multi-language, multi-environment development process. No matter if the data has been accessed before in a different view, they are required to first change the custom endpoint, then deploy that code to a server accessible from a mobile device, and only then change the client to utilize that data. In GraphQL – unless the data in the view is completely new to the entire system – a product developer adds a field to a GraphQL query and the work on the client continues unabated.
  • -
  • Much like REST, most systems with custom endpoints do not have a formalized type system, which eliminates the possibility for the tools and guarantees that introspective type systems can provide. Some custom-endpoint-driven systems do use a strongly typed serialization scheme, such as Protocol Buffers, Thrift, or XML. Those do allow for direct parsing of responses into typed classes and eliminating boilerplate shuffling from JSON into handwritten classes. These systems are as not as expressive and flexible as GraphQL, and the other downsides of ad hoc endpoints remain.
  • -
- -

We believe that GraphQL represents a novel way of structuring the client-server contract. Servers publish a type system specific to their application, and GraphQL provides a unified language to query data within the constraints of that type system. That language allows product developers to express data requirements in a form natural to them: a declarative and hierarchal one.

- -

This is a liberating platform for product developers. With GraphQL, no more contending with ad hoc endpoints or object retrieval with multiple roundtrips to access server data; instead an elegant, hierarchical, declarative query dispatched to a single endpoint. No more frequent jumps between client and server development environments to do experimentation or to change or create views of existing data; instead experiments are done and new views built within a native, client development environment exclusively. No more shuffling unstructured data from ad hoc endpoints into business objects; instead a powerful, introspective type system that serves as a platform for tool building.

- -

Product developers are free to focus on their client software and requirements while rarely leaving their development environment; they can more confidently support shipped clients as a system evolves; and they are using a protocol designed to operate well within the constraints of mobile applications. Product developers can query for exactly what they want, in the way they think about it, across their entire application's data model.

-

What's next? #

-

Over the coming months, we will share more technical details about GraphQL, including additional language features, tools that support it, and how it is built and used at Facebook. These posts will culminate in a formal specification of GraphQL to guide implementors across various languages and platforms. We also plan on releasing a reference implementation in the summer, in order to provide a basis for custom deployments and a platform for experimentation. We're incredibly excited to share this system and work with the open source community to improve it.

- -
- - -

diff --git a/blog/page3/index.html b/blog/page3/index.html index ab8b6ed972..d7ae01acec 100644 --- a/blog/page3/index.html +++ b/blog/page3/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,120 @@ +

+ + GraphQL Introduction + +

+ +

+ May 1, 2015 + by + + Nick Schrock + +

+ +
+ +
+

At the React.js conference in late January 2015, we revealed our next major technology in the React family: Relay.

+ +

Relay is a new way of structuring client applications that co-locates data-fetching requirements and React components. Instead of placing data fetching logic in some other part of the client application – or embedding this logic in a custom endpoint on the server – we instead co-locate a declarative data-fetching specification alongside the React component. The language of this declarative specification is GraphQL.

+ +

GraphQL was not invented to enable Relay. In fact, GraphQL predates Relay by nearly three years. It was invented during the move from Facebook's HTML5-driven mobile applications to purely native applications. It is a query language for graph data that powers the lion's share of interactions in the Facebook Android and iOS applications. Any user of the native iOS or Android app in the last two years has used an app powered by GraphQL.

+ +

We plan to open-source a reference implementation of a GraphQL server and publish a language specification in the coming months. Our goal is to evolve GraphQL to adapt to a wide range of backends, so that projects and companies can use this technology to access their own data. We believe that this is a compelling way to structure servers and to provide powerful abstractions, frameworks and tools – including, but not exclusively, Relay – for product developers.

+

What is GraphQL? #

+

A GraphQL query is a string interpreted by a server that returns data in a specified format. Here is an example query:

+
{
+  user(id: 3500401) {
+    id,
+    name,
+    isViewerFriend,
+    profilePicture(size: 50)  {
+      uri,
+      width,
+      height
+    }
+  }
+}
+
+

(Note: this syntax is slightly different from previous GraphQL examples. We've recently been making improvements to the language.)

+ +

And here is the response to that query.

+
{
+  "user" : {
+    "id": 3500401,
+    "name": "Jing Chen",
+    "isViewerFriend": true,
+    "profilePicture": {
+      "uri": "http://someurl.cdn/pic.jpg",
+      "width": 50,
+      "height": 50
+    }
+  }
+}
+
+

We will dig into the syntax and semantics of GraphQL in a later post, but even a simple example shows many of its design principles:

+ + +

Why invent something new? #

+

Obviously GraphQL is not the first system to manage client-server interactions. In today's world there are two dominant architectural styles for client-server interaction: REST and ad hoc endpoints.

+

REST #

+

REST, an acronym for Representational State Transfer, is an architectural style rather than a formal protocol. There is actually much debate about what exactly REST is and is not. We wish to avoid such debates. We are interested in the typical attributes of systems that self-identify as REST, rather than systems which are formally REST.

+ +

Objects in a typical REST system are addressable by URI and interacted with using verbs in the HTTP protocol. An HTTP GET to a particular URI fetches an object and returns a server-specified set of fields. An HTTP PUT edits an object; an HTTP DELETE deletes an object; and so on.

+ +

We believe there are a number of weakness in typical REST systems, ones that are particularly problematic in mobile applications:

+ + + +

Nearly all externally facing REST APIs we know of trend or end up in these non-ideal states, as well as nearly all internal REST APIs. The consequences of opaqueness and over-fetching are more severe in internal APIs since their velocity of change and level of usage is almost always higher.

+ +

Because of multiple round-trips and over-fetching, applications built in the REST style inevitably end up building ad hoc endpoints that are superficially in the REST style. These actually couple the data to a particular view which explicitly violates one of REST's major goals. Most REST systems of any complexity end up as a continuum of endpoints that span from “traditional” REST to ad hoc endpoints.

+

Ad Hoc Endpoints #

+

Many applications have no formalized client-server contract. Product developers access server capabilities through ad hoc endpoints and write custom code to fetch the data they need. Servers define procedures, and they return data. This approach has the virtue of simplicity, but can often become untenable as systems age.

+ + + +

We believe that GraphQL represents a novel way of structuring the client-server contract. Servers publish a type system specific to their application, and GraphQL provides a unified language to query data within the constraints of that type system. That language allows product developers to express data requirements in a form natural to them: a declarative and hierarchal one.

+ +

This is a liberating platform for product developers. With GraphQL, no more contending with ad hoc endpoints or object retrieval with multiple roundtrips to access server data; instead an elegant, hierarchical, declarative query dispatched to a single endpoint. No more frequent jumps between client and server development environments to do experimentation or to change or create views of existing data; instead experiments are done and new views built within a native, client development environment exclusively. No more shuffling unstructured data from ad hoc endpoints into business objects; instead a powerful, introspective type system that serves as a platform for tool building.

+ +

Product developers are free to focus on their client software and requirements while rarely leaving their development environment; they can more confidently support shipped clients as a system evolves; and they are using a protocol designed to operate well within the constraints of mobile applications. Product developers can query for exactly what they want, in the way they think about it, across their entire application's data model.

+

What's next? #

+

Over the coming months, we will share more technical details about GraphQL, including additional language features, tools that support it, and how it is built and used at Facebook. These posts will culminate in a formal specification of GraphQL to guide implementors across various languages and platforms. We also plan on releasing a reference implementation in the summer, in order to provide a basis for custom deployments and a platform for experimentation. We're incredibly excited to share this system and work with the open source community to improve it.

+ +
+ + + + + +
+ + +

React v0.13.2 @@ -332,218 +446,6 @@ Minified build for production: - - - -

- - Building The Facebook News Feed With Relay - -

- -

- March 19, 2015 - by - - Joseph Savona - -

- -
- -
-

At React.js Conf in January we gave a preview of Relay, a new framework for building data-driven applications in React. In this post, we'll describe the process of creating a Relay application. This post assumes some familiarity with the concepts of Relay and GraphQL, so if you haven't already we recommend reading our introductory blog post or watching the conference talk.

- -

We're working hard to prepare GraphQL and Relay for public release. In the meantime, we'll continue to provide information about what you can expect.

- -


-

The Relay Architecture #

-

The diagram below shows the main parts of the Relay architecture on the client and the server:

- -

Relay Architecture

- -

The main pieces are as follows:

- -
    -
  • Relay Components: React components annotated with declarative data descriptions.
  • -
  • Actions: Descriptions of how data should change in response to user actions.
  • -
  • Relay Store: A client-side data store that is fully managed by the framework.
  • -
  • Server: An HTTP server with GraphQL endpoints (one for reads, one for writes) that respond to GraphQL queries.
  • -
- -

This post will focus on Relay components that describe encapsulated units of UI and their data dependencies. These components form the majority of a Relay application.

- -


-

A Relay Application #

-

To see how components work and can be composed, let's implement a basic version of the Facebook News Feed in Relay. Our application will have two components: a <NewsFeed> that renders a list of <Story> items. We'll introduce the plain React version of each component first and then convert it to a Relay component. The goal is something like the following:

- -

Sample News Feed

- -


-

The <Story> Begins #

-

The first step is a React <Story> component that accepts a story prop with the story's text and author information. Note that all examples uses ES6 syntax and elide presentation details to focus on the pattern of data access.

-
// Story.react.js
-class Story extends React.Component {
-  render() {
-    var story = this.props.story;
-    return (
-      <View>
-        <Image uri={story.author.profile_picture.uri} />
-        <Text>{story.author.name}</Text>
-        <Text>{story.text}</Text>
-      </View>
-    );
-  }
-}
-
-module.exports = Story;
-
-


-

What's the <Story>? #

-

Relay automates the process of fetching data for components by wrapping existing React components in Relay containers (themselves React components):

-
// Story.react.js
-class Story extends React.Component { ... }
-
-module.exports = Relay.createContainer(Story, {
-  queries: {
-    story: /* TODO */
-  }
-});
-
-

Before adding the GraphQL query, let's look at the component hierarchy this creates:

- -

React Container Data Flow

- -

Most props will be passed through from the container to the original component. However, Relay will return the query results for a prop whenever a query is defined. In this case we'll add a GraphQL query for story:

-
// Story.react.js
-class Story extends React.Component { ... }
-
-module.exports = Relay.createContainer(Story, {
-  queries: {
-    story: graphql`
-      Story {
-        author {
-          name,
-          profile_picture {
-            uri
-          }
-        },
-        text
-      }
-    `
-  }
-});
-
-

Queries use ES6 template literals tagged with the graphql function. Similar to how JSX transpiles to plain JavaScript objects and function calls, these template literals transpile to plain objects that describe queries. Note that the query's structure closely matches the object structure that we expected in <Story>'s render function.

- -


-

<Story>s on Demand #

-

We can render a Relay component by providing Relay with the component (<Story>) and the ID of the data (a story ID). Given this information, Relay will first fetch the results of the query and then render() the component. The value of props.story will be a plain JavaScript object such as the following:

-
{
-  author: {
-    name: "Greg",
-    profile_picture: {
-      uri: "https://…"
-    }
-  },
-  text: "The first Relay blog post is up…"
-}
-
-

Relay guarantees that all data required to render a component will be available before it is rendered. This means that <Story> does not need to handle a loading state; the story is guaranteed to be available before render() is called. We have found that this invariant simplifies our application code and improves the user experience. Of course, Relay also has options to delay the fetching of some parts of our queries.

- -

The diagram below shows how Relay containers make data available to our React components:

- -

Relay Container Data Flow

- -


-

<NewsFeed> Worthy #

-

Now that the <Story> is over we can continue with the <NewsFeed> component. Again, we'll start with a React version:

-
// NewsFeed.react.js
-class NewsFeed extends React.Component {
-  render() {
-    var stories = this.props.viewer.stories; // `viewer` is the active user
-    return (
-      <View>
-        {stories.map(story => <Story story={story} />)}
-        <Button onClick={() => this.loadMore()}>Load More</Button>
-      </View>
-    );
-  }
-
-  loadMore() {
-    // TODO: fetch more stories
-  }
-}
-
-module.exports = NewsFeed;
-
-


-

All the News Fit to be Relayed #

-

<NewsFeed> has two new requirements: it composes <Story> and requests more data at runtime.

- -

Just as React views can be nested, Relay queries can compose queries from child components. Composition in GraphQL uses ES6 template literal substitution: ${Component.getQuery('prop')}. Pagination can be accomplished with a query parameter, specified with <param> (as in stories(first: <count>)):

-
// NewsFeed.react.js
-class NewsFeed extends React.Component { ... }
-
-module.exports = Relay.createContainer(NewsFeed, {
-  queryParams: {
-    count: 3                             /* default to 3 stories */
-  },
-  queries: {
-    viewer: graphql`
-      Viewer {
-        stories(first: <count>) {        /* fetch viewer's stories */
-          edges {                        /* traverse the graph */
-            node {
-              ${Story.getQuery('story')} /* compose child query */
-            }
-          }
-        }
-      }
-    `
-  }
-});
-
-

Whenever <NewsFeed> is rendered, Relay will recursively expand all the composed queries and fetch them in a single trip to the server. In this case, the text and author data will be fetched for each of the 3 story nodes.

- -

Query parameters are available to components as props.queryParams and can be modified with props.setQueryParams(nextParams). We can use these to implement pagination:

-
// NewsFeed.react.js
-class NewsFeed extends React.Component {
-  render() { ... }
-
-  loadMore() {
-    // read current params
-    var count = this.props.queryParams.count;
-    // update params
-    this.props.setQueryParams({
-      count: count + 5
-    });
-  }
-}
-
-

Now when loadMore() is called, Relay will send a GraphQL request for the additional five stories. When these stories are fetched, the component will re-render with the new stories available in props.viewer.stories and the updated count reflected in props.queryParams.count.

- -


-

In Conclusion #

-

These two components form a solid core for our application. With the use of Relay containers and GraphQL queries, we've enabled the following benefits:

- -
    -
  • Automatic and efficient pre-fetching of data for an entire view hierarchy in a single network request.
  • -
  • Trivial pagination with automatic optimizations to fetch only the additional items.
  • -
  • View composition and reusability, so that <Story> can be used on its own or within <NewsFeed>, without any changes to either component.
  • -
  • Automatic subscriptions, so that components will re-render if their data changes. Unaffected components will not re-render unnecessarily.
  • -
  • Exactly zero lines of imperative data fetching logic. Relay takes full advantage of React's declarative component model.
  • -
- -

But Relay has many more tricks up its sleeve. For example, it's built from the start to handle reads and writes, allowing for features like optimistic client updates with transactional rollback. Relay can also defer fetching select parts of queries, and it uses a local data store to avoid fetching the same data twice. These are all powerful features that we hope to explore in future posts.

- -
- - -

diff --git a/blog/page4/index.html b/blog/page4/index.html index b446e21c97..1441eaecb8 100644 --- a/blog/page4/index.html +++ b/blog/page4/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,218 @@ +

+ + Building The Facebook News Feed With Relay + +

+ +

+ March 19, 2015 + by + + Joseph Savona + +

+ +
+ +
+

At React.js Conf in January we gave a preview of Relay, a new framework for building data-driven applications in React. In this post, we'll describe the process of creating a Relay application. This post assumes some familiarity with the concepts of Relay and GraphQL, so if you haven't already we recommend reading our introductory blog post or watching the conference talk.

+ +

We're working hard to prepare GraphQL and Relay for public release. In the meantime, we'll continue to provide information about what you can expect.

+ +


+

The Relay Architecture #

+

The diagram below shows the main parts of the Relay architecture on the client and the server:

+ +

Relay Architecture

+ +

The main pieces are as follows:

+ + + +

This post will focus on Relay components that describe encapsulated units of UI and their data dependencies. These components form the majority of a Relay application.

+ +


+

A Relay Application #

+

To see how components work and can be composed, let's implement a basic version of the Facebook News Feed in Relay. Our application will have two components: a <NewsFeed> that renders a list of <Story> items. We'll introduce the plain React version of each component first and then convert it to a Relay component. The goal is something like the following:

+ +

Sample News Feed

+ +


+

The <Story> Begins #

+

The first step is a React <Story> component that accepts a story prop with the story's text and author information. Note that all examples uses ES6 syntax and elide presentation details to focus on the pattern of data access.

+
// Story.react.js
+class Story extends React.Component {
+  render() {
+    var story = this.props.story;
+    return (
+      <View>
+        <Image uri={story.author.profile_picture.uri} />
+        <Text>{story.author.name}</Text>
+        <Text>{story.text}</Text>
+      </View>
+    );
+  }
+}
+
+module.exports = Story;
+
+


+

What's the <Story>? #

+

Relay automates the process of fetching data for components by wrapping existing React components in Relay containers (themselves React components):

+
// Story.react.js
+class Story extends React.Component { ... }
+
+module.exports = Relay.createContainer(Story, {
+  queries: {
+    story: /* TODO */
+  }
+});
+
+

Before adding the GraphQL query, let's look at the component hierarchy this creates:

+ +

React Container Data Flow

+ +

Most props will be passed through from the container to the original component. However, Relay will return the query results for a prop whenever a query is defined. In this case we'll add a GraphQL query for story:

+
// Story.react.js
+class Story extends React.Component { ... }
+
+module.exports = Relay.createContainer(Story, {
+  queries: {
+    story: graphql`
+      Story {
+        author {
+          name,
+          profile_picture {
+            uri
+          }
+        },
+        text
+      }
+    `
+  }
+});
+
+

Queries use ES6 template literals tagged with the graphql function. Similar to how JSX transpiles to plain JavaScript objects and function calls, these template literals transpile to plain objects that describe queries. Note that the query's structure closely matches the object structure that we expected in <Story>'s render function.

+ +


+

<Story>s on Demand #

+

We can render a Relay component by providing Relay with the component (<Story>) and the ID of the data (a story ID). Given this information, Relay will first fetch the results of the query and then render() the component. The value of props.story will be a plain JavaScript object such as the following:

+
{
+  author: {
+    name: "Greg",
+    profile_picture: {
+      uri: "https://…"
+    }
+  },
+  text: "The first Relay blog post is up…"
+}
+
+

Relay guarantees that all data required to render a component will be available before it is rendered. This means that <Story> does not need to handle a loading state; the story is guaranteed to be available before render() is called. We have found that this invariant simplifies our application code and improves the user experience. Of course, Relay also has options to delay the fetching of some parts of our queries.

+ +

The diagram below shows how Relay containers make data available to our React components:

+ +

Relay Container Data Flow

+ +


+

<NewsFeed> Worthy #

+

Now that the <Story> is over we can continue with the <NewsFeed> component. Again, we'll start with a React version:

+
// NewsFeed.react.js
+class NewsFeed extends React.Component {
+  render() {
+    var stories = this.props.viewer.stories; // `viewer` is the active user
+    return (
+      <View>
+        {stories.map(story => <Story story={story} />)}
+        <Button onClick={() => this.loadMore()}>Load More</Button>
+      </View>
+    );
+  }
+
+  loadMore() {
+    // TODO: fetch more stories
+  }
+}
+
+module.exports = NewsFeed;
+
+


+

All the News Fit to be Relayed #

+

<NewsFeed> has two new requirements: it composes <Story> and requests more data at runtime.

+ +

Just as React views can be nested, Relay queries can compose queries from child components. Composition in GraphQL uses ES6 template literal substitution: ${Component.getQuery('prop')}. Pagination can be accomplished with a query parameter, specified with <param> (as in stories(first: <count>)):

+
// NewsFeed.react.js
+class NewsFeed extends React.Component { ... }
+
+module.exports = Relay.createContainer(NewsFeed, {
+  queryParams: {
+    count: 3                             /* default to 3 stories */
+  },
+  queries: {
+    viewer: graphql`
+      Viewer {
+        stories(first: <count>) {        /* fetch viewer's stories */
+          edges {                        /* traverse the graph */
+            node {
+              ${Story.getQuery('story')} /* compose child query */
+            }
+          }
+        }
+      }
+    `
+  }
+});
+
+

Whenever <NewsFeed> is rendered, Relay will recursively expand all the composed queries and fetch them in a single trip to the server. In this case, the text and author data will be fetched for each of the 3 story nodes.

+ +

Query parameters are available to components as props.queryParams and can be modified with props.setQueryParams(nextParams). We can use these to implement pagination:

+
// NewsFeed.react.js
+class NewsFeed extends React.Component {
+  render() { ... }
+
+  loadMore() {
+    // read current params
+    var count = this.props.queryParams.count;
+    // update params
+    this.props.setQueryParams({
+      count: count + 5
+    });
+  }
+}
+
+

Now when loadMore() is called, Relay will send a GraphQL request for the additional five stories. When these stories are fetched, the component will re-render with the new stories available in props.viewer.stories and the updated count reflected in props.queryParams.count.

+ +


+

In Conclusion #

+

These two components form a solid core for our application. With the use of Relay containers and GraphQL queries, we've enabled the following benefits:

+ + + +

But Relay has many more tricks up its sleeve. For example, it's built from the start to handle reads and writes, allowing for features like optimistic client updates with transactional rollback. Relay can also defer fetching select parts of queries, and it uses a local data store to avoid fetching the same data twice. These are all powerful features that we hope to explore in future posts.

+ +
+ + + + + +
+ + +

React v0.13.1 @@ -412,98 +624,6 @@ Minified build for production: - - - -

- - React v0.13 RC - -

- -

- February 24, 2015 - by - - Paul O’Shannessy - -

- -
- -
-

Over the weekend we pushed out our first (and hopefully only) release candidate for React v0.13!

- -

We've talked a little bit about the changes that are coming. The splashiest of these changes is support for ES6 Classes. You can read more about this in our beta announcement. We're really excited about this! Sebastian also posted earlier this morning about some of the other changes coming focused around ReactElement. The changes we've been working on there will hopefully enable lots of improvements to performance and developer experience.

- -

The release candidate is available for download:

- - - -

We've also published version 0.13.0-rc1 of the react and react-tools packages on npm and the react package on bower.

- -
-

Changelog #

React Core #

Breaking Changes #

-
    -
  • Mutating props after an element is created is deprecated and will cause warnings in development mode; future versions of React will incorporate performance optimizations assuming that props aren't mutated
  • -
  • Static methods (defined in statics) are no longer autobound to the component class
  • -
  • ref resolution order has changed slightly such that a ref to a component is available immediately after its componentDidMount method is called; this change should be observable only if your component calls a parent component's callback within your componentDidMount, which is an anti-pattern and should be avoided regardless
  • -
  • Calls to setState in life-cycle methods are now always batched and therefore asynchronous. Previously the first call on the first mount was synchronous.
  • -
  • setState and forceUpdate on an unmounted component now warns instead of throwing. That avoids a possible race condition with Promises.
  • -
  • Access to most internal properties has been completely removed, including this._pendingState and this._rootNodeID.
  • -
-

New Features #

-
    -
  • Support for using ES6 classes to build React components; see the v0.13.0 beta 1 notes for details
  • -
  • Added new top-level API React.findDOMNode(component), which should be used in place of component.getDOMNode(). The base class for ES6-based components will not have getDOMNode. This change will enable some more patterns moving forward.
  • -
  • New ref style, allowing a callback to be used in place of a name: <Photo ref={(c) => this._photo = c} /> allows you to reference the component with this._photo (as opposed to ref="photo" which gives this.refs.photo)
  • -
  • this.setState() can now take a function as the first argument for transactional state updates, such as this.setState((state, props) => ({count: state.count + 1})); -- this means that you no longer need to use this._pendingState, which is now gone.
  • -
  • Support for iterators and immutable-js sequences as children
  • -
-

Deprecations #

-
    -
  • ComponentClass.type is deprecated. Just use ComponentClass (usually as element.type === ComponentClass)
  • -
  • Some methods that are available on createClass-based components are removed or deprecated from ES6 classes (for example, getDOMNode, setProps, replaceState).
  • -
-

React with Add-Ons #

Deprecations #

-
    -
  • React.addons.classSet is now deprecated. This functionality can be replaced with several freely available modules. classnames is one such module.
  • -
-

React Tools #

Breaking Changes #

-
    -
  • When transforming ES6 syntax, class methods are no longer enumerable by default, which requires Object.defineProperty; if you support browsers such as IE8, you can pass --target es3 to mirror the old behavior
  • -
-

New Features #

-
    -
  • --target option is available on the jsx command, allowing users to specify and ECMAScript version to target. - -
      -
    • es5 is the default.
    • -
    • es3 restored the previous default behavior. An additional transform is added here to ensure the use of reserved words as properties is safe (eg this.static will become this['static'] for IE8 compatibility).
    • -
  • -
  • The transform for the call spread operator has also been enabled.
  • -
-

JSX #

Breaking Changes #

-
    -
  • A change was made to how some JSX was parsed, specifically around the use of > or } when inside an element. Previously it would be treated as a string but now it will be treated as a parse error. We will be releasing a standalone executable to find and fix potential issues in your JSX code.
  • -
- -
- - -

diff --git a/blog/page5/index.html b/blog/page5/index.html index 7c2c89c6be..007a22c6e2 100644 --- a/blog/page5/index.html +++ b/blog/page5/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,98 @@ +

+ + React v0.13 RC + +

+ +

+ February 24, 2015 + by + + Paul O’Shannessy + +

+ +
+ +
+

Over the weekend we pushed out our first (and hopefully only) release candidate for React v0.13!

+ +

We've talked a little bit about the changes that are coming. The splashiest of these changes is support for ES6 Classes. You can read more about this in our beta announcement. We're really excited about this! Sebastian also posted earlier this morning about some of the other changes coming focused around ReactElement. The changes we've been working on there will hopefully enable lots of improvements to performance and developer experience.

+ +

The release candidate is available for download:

+ + + +

We've also published version 0.13.0-rc1 of the react and react-tools packages on npm and the react package on bower.

+ +
+

Changelog #

React Core #

Breaking Changes #

+ +

New Features #

+ +

Deprecations #

+ +

React with Add-Ons #

Deprecations #

+ +

React Tools #

Breaking Changes #

+ +

New Features #

+ +

JSX #

Breaking Changes #

+ + +
+ + + + + +
+ + +

Streamlining React Elements @@ -785,66 +877,6 @@ -

- -
- - - -

- - React.js Conf Diversity Scholarship - -

- -

- December 19, 2014 - by - - Paul O’Shannessy - -

- -
- -
-

Today I'm really happy to announce the React.js Conf Diversity Scholarship! We believe that a diverse set of viewpoints and opinions is really important to build a thriving community. In an ideal world, every part of the tech community would be made up of people from all walks of life. However the reality is that we must be proactive and make an effort to make sure everybody has a voice. As conference organizers we worked closely with the Diversity Team here at Facebook to set aside 10 tickets and provide a scholarship. 10 tickets may not be many in the grand scheme but we really believe that this will have a positive impact on the discussions we have at the conference.

- -

I'm really excited about this and I hope you are too! The full announcement is below:

- -
- -

The Diversity Team at Facebook is excited to announce that we are now accepting applications for the React.js Conf scholarship!

- -

Beginning today, those studying or working in computer science or a related field can apply for an all-expense paid scholarship to attend the React.js Conf at Facebook’s Headquarters in Menlo Park, CA on January 28 & 29, 2015. React opens a world of new possibilities such as server-side rendering, real-time updates, different rendering targets like SVG and canvas. Join us at React.js Conf to shape the future of client-side applications! For more information about the React.js conference, please see the website and previous updates on our blog.

- -

At Facebook, we believe that anyone anywhere can make a positive impact by developing products to make the world more open and connected to the people and things they care about. Given the current realities of the tech industry and the lack of representation of communities we seek to serve, applicants currently under-represented in Computer Science and related fields are strongly encouraged to apply. -Facebook will make determinations on scholarship recipients in its sole discretion. Facebook complies with all equal opportunity laws.

- -

To apply for the scholarship, please visit the Application Page: https://www.surveymonkey.com/s/XVJGK6R

-

Award Includes #

-
    -
  • Paid registration fee for the React.js Conf January 28 & 29th at Facebook’s Headquarters in Menlo Park, CA
  • -
  • Paid travel and lodging expenses
  • -
  • Additional $200 meal stipend
  • -
-

Important Dates #

-
    -
  • Monday, January 5, 2015: Applications for the React.js Conf Scholarship must be submitted in full
  • -
  • Friday, January 9, 2015: Award recipients will be notified by email of their acceptance
  • -
  • Wednesday & Thursday, January 28 & 29, 2015: React.js Conf
  • -
-

Eligibility #

-
    -
  • Must currently be studying or working in Computer Science or a related field
  • -
  • International applicants are welcome, but you will be responsible for securing your own visa to attend the conference
  • -
  • You must be available to attend the full duration of React.js conf on January 28 and 29 at Facebook Headquarters in Menlo Park
  • -
- -
- - -
diff --git a/blog/page6/index.html b/blog/page6/index.html index 4363810f7a..1b19e33b5c 100644 --- a/blog/page6/index.html +++ b/blog/page6/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,66 @@ +

+ + React.js Conf Diversity Scholarship + +

+ +

+ December 19, 2014 + by + + Paul O’Shannessy + +

+ +
+ +
+

Today I'm really happy to announce the React.js Conf Diversity Scholarship! We believe that a diverse set of viewpoints and opinions is really important to build a thriving community. In an ideal world, every part of the tech community would be made up of people from all walks of life. However the reality is that we must be proactive and make an effort to make sure everybody has a voice. As conference organizers we worked closely with the Diversity Team here at Facebook to set aside 10 tickets and provide a scholarship. 10 tickets may not be many in the grand scheme but we really believe that this will have a positive impact on the discussions we have at the conference.

+ +

I'm really excited about this and I hope you are too! The full announcement is below:

+ +
+ +

The Diversity Team at Facebook is excited to announce that we are now accepting applications for the React.js Conf scholarship!

+ +

Beginning today, those studying or working in computer science or a related field can apply for an all-expense paid scholarship to attend the React.js Conf at Facebook’s Headquarters in Menlo Park, CA on January 28 & 29, 2015. React opens a world of new possibilities such as server-side rendering, real-time updates, different rendering targets like SVG and canvas. Join us at React.js Conf to shape the future of client-side applications! For more information about the React.js conference, please see the website and previous updates on our blog.

+ +

At Facebook, we believe that anyone anywhere can make a positive impact by developing products to make the world more open and connected to the people and things they care about. Given the current realities of the tech industry and the lack of representation of communities we seek to serve, applicants currently under-represented in Computer Science and related fields are strongly encouraged to apply. +Facebook will make determinations on scholarship recipients in its sole discretion. Facebook complies with all equal opportunity laws.

+ +

To apply for the scholarship, please visit the Application Page: https://www.surveymonkey.com/s/XVJGK6R

+

Award Includes #

+ +

Important Dates #

+ +

Eligibility #

+ + +
+ + + + + +
+ + +

React v0.12.2 @@ -454,43 +514,6 @@ Minified build for production: - - - -

- - React.js Conf - -

- -

- October 27, 2014 - by - - Vjeux - -

- -
- -
-

Every few weeks someone asks us when we are going to organize a conference for React. Our answer has always been "some day". In the mean time, people have been talking about React at other JavaScript conferences around the world. But now the time has finally come for us to have a conference of our own.

- -

We're happy to announce React.js Conf! It will take place January 28-29, 2015 on Facebook's campus in Menlo Park, California.

- -

Before we open registration, we're looking for great talks. We want to see how you pushed application development forward! If you ever talked to a meet-up, pitched React to your co-workers, or done something awesome and want to talk about it, let us know!

- -

Here are some areas of research we want to explore during the conference if you need some inspiration: server-side rendering, data fetching, language features (eg es6, clojure), immutability, rendering targets (eg svg, canvas), real-time updates...

- -

We look forward to seeing many of you in person in just a few short months!

- -
- - -

diff --git a/blog/page7/index.html b/blog/page7/index.html index 8dc0ea599b..c734201957 100644 --- a/blog/page7/index.html +++ b/blog/page7/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,43 @@ +

+ + React.js Conf + +

+ +

+ October 27, 2014 + by + + Vjeux + +

+ +
+ +
+

Every few weeks someone asks us when we are going to organize a conference for React. Our answer has always been "some day". In the mean time, people have been talking about React at other JavaScript conferences around the world. But now the time has finally come for us to have a conference of our own.

+ +

We're happy to announce React.js Conf! It will take place January 28-29, 2015 on Facebook's campus in Menlo Park, California.

+ +

Before we open registration, we're looking for great talks. We want to see how you pushed application development forward! If you ever talked to a meet-up, pitched React to your co-workers, or done something awesome and want to talk about it, let us know!

+ +

Here are some areas of research we want to explore during the conference if you need some inspiration: server-side rendering, data fetching, language features (eg es6, clojure), immutability, rendering targets (eg svg, canvas), real-time updates...

+ +

We look forward to seeing many of you in person in just a few short months!

+ +
+ + + + + +
+ + +

Community Round-up #23 @@ -824,81 +861,6 @@ Minified build for production: - - - -

- - React v0.11.2 - -

- -

- September 16, 2014 - by - - Paul O’Shannessy - -

- -
- -
-

Today we're releasing React v0.11.2 to add a few small features.

- -

We're adding support for two more DOM elements, <dialog> and <picture>, as well as the associated attributes needed to use these elements: open, media, and sizes. While not all browsers support these natively, some of our cutting edge users want to make use of them, so we're making them available to everybody.

- -

We're also doing some work to prepare for v0.12 and improve compatibility between the versions. To do this we are replacing React.createDescriptor with React.createElement. createDescriptor will continue to work with a warning and will be gone in v0.12. Chances are that this won't affect anybody.

- -

And lastly, on the heels of announcing Flow at @Scale yesterday, we're adding the ability to strip TypeScript-like type annotations as part of the jsx transform. To use, simply use the --strip-types flag on the command line, or set stripTypes in the options object when calling the API. We'll be talking about Flow more in the coming months. But for now, it's helpful to know that it is a flow-sensitive JavaScript type checker we will be open sourcing soon.

- -

The release is available for download from the CDN:

- - - -

We've also published version 0.11.2 of the react and react-tools packages on npm and the react package on bower.

- -

Please try these builds out and file an issue on GitHub if you see anything awry.

-

React Core #

New Features #

-
    -
  • Added support for <dialog> element and associated open attribute
  • -
  • Added support for <picture> element and associated media and sizes attributes
  • -
  • Added React.createElement API in preparation for React v0.12 - -
      -
    • React.createDescriptor has been deprecated as a result
    • -
  • -
-

JSX #

-
    -
  • <picture> is now parsed into React.DOM.picture
  • -
-

React Tools #

-
    -
  • Update esprima and jstransform for correctness fixes
  • -
  • The jsx executable now exposes a --strip-types flag which can be used to remove TypeScript-like type annotations - -
      -
    • This option is also exposed to require('react-tools').transform as stripTypes
    • -
  • -
- -
- - -

diff --git a/blog/page8/index.html b/blog/page8/index.html index a9aa3030f1..d2fcfc3ead 100644 --- a/blog/page8/index.html +++ b/blog/page8/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,81 @@ +

+ + React v0.11.2 + +

+ +

+ September 16, 2014 + by + + Paul O’Shannessy + +

+ +
+ +
+

Today we're releasing React v0.11.2 to add a few small features.

+ +

We're adding support for two more DOM elements, <dialog> and <picture>, as well as the associated attributes needed to use these elements: open, media, and sizes. While not all browsers support these natively, some of our cutting edge users want to make use of them, so we're making them available to everybody.

+ +

We're also doing some work to prepare for v0.12 and improve compatibility between the versions. To do this we are replacing React.createDescriptor with React.createElement. createDescriptor will continue to work with a warning and will be gone in v0.12. Chances are that this won't affect anybody.

+ +

And lastly, on the heels of announcing Flow at @Scale yesterday, we're adding the ability to strip TypeScript-like type annotations as part of the jsx transform. To use, simply use the --strip-types flag on the command line, or set stripTypes in the options object when calling the API. We'll be talking about Flow more in the coming months. But for now, it's helpful to know that it is a flow-sensitive JavaScript type checker we will be open sourcing soon.

+ +

The release is available for download from the CDN:

+ + + +

We've also published version 0.11.2 of the react and react-tools packages on npm and the react package on bower.

+ +

Please try these builds out and file an issue on GitHub if you see anything awry.

+

React Core #

New Features #

+ +

JSX #

+ +

React Tools #

+ + +
+ + + + + +
+ + +

Community Round-up #22 @@ -394,112 +469,6 @@ This is not the intended way to use React but can be useful as last resort if yo -

- -
- - - -

- - Community Round-up #20 - -

- -

- July 28, 2014 - by - - Lou Husson - -

- -
- -
-

It's an exciting time for React as there are now more commits from open source contributors than from Facebook engineers! Keep up the good work :)

-

Atom moves to React #

-

Atom, GitHub's code editor, is now using React to build the editing experience. They made the move in order to improve performance. By default, React helped them eliminate unnecessary reflows, enabling them to focus on architecting the rendering pipeline in order to minimize repaints by using hardware acceleration. This is a testament to the fact that React's architecture is perfect for high performant applications.

- -

-

Why Does React Scale? #

-

At the last JSConf.us, Vjeux talked about the design decisions made in the API that allows it to scale to a large number of developers. If you don't have 20 minutes, take a look at the annotated slides.

- - -

Live Editing #

-

One of the best features of React is that it provides the foundations to implement concepts that were otherwise extremely difficult, like server-side rendering, undo-redo, rendering to non-DOM environments like canvas... Dan Abramov got hot code reloading working with webpack in order to live edit a React project!

- - -

ReactIntl Mixin by Yahoo #

-

There are a couple of React-related projects that recently appeared on Yahoo's GitHub, the first one being an internationalization mixin. It's great to see them getting excited about React and contributing back to the community.

-
var MyComponent = React.createClass({
-  mixins: [ReactIntlMixin],
-  render: function() {
-    return (
-      <div>
-        <p>{this.intlDate(1390518044403, { hour: 'numeric', minute: 'numeric' })}</p>
-        <p>{this.intlNumber(400, { style: 'percent' })}</p>
-      </div>
-    );
-  }
-});
-
-React.renderComponent(
-  <MyComponent locales={['fr-FR']} />,
-  document.getElementById('example')
-);
-

Thinking and Learning React #

-

Josephine Hall, working at Icelab, used React to write a mobile-focused application. She wrote a blog post “Thinking and Learning React.js” to share her experience with elements they had to use. You'll learn about routing, event dispatch, touchable components, and basic animations.

-

London React Meetup #

-

If you missed the last London React Meetup, the video is available, with lots of great content.

- -
    -
  • What's new in React 0.11 and how to improve performance by guaranteeing immutability
  • -
  • State handling in React with Morearty.JS
  • -
  • React on Rails - How to use React with Ruby on Rails to build isomorphic apps
  • -
  • Building an isomorphic, real-time to-do list with moped and node.js
  • -
- - - -

In related news, the next React SF Meetup will be from Prezi: “Immediate Mode on the Web: How We Implemented the Prezi Viewer in JavaScript”. While not in React, their tech is really awesome and shares a lot of React's design principles and perf optimizations.

-

Using React and KendoUI Together #

-

One of the strengths of React is that it plays nicely with other libraries. Jim Cowart proved it by writing a tutorial that explains how to write React component adapters for KendoUI.

- -
-

Acorn JSX #

-

Ingvar Stepanyan extended the Acorn JavaScript parser to support JSX. The result is a JSX parser that's 1.5–2.0x faster than the official JSX implementation. It is an experiment and is not meant to be used for serious things, but it's always a good thing to get competition on performance!

-

ReactScriptLoader #

-

Yariv Sadan created ReactScriptLoader to make it easier to write components that require an external script.

-
var Foo = React.createClass({
-  mixins: [ReactScriptLoaderMixin],
-  getScriptURL: function() {
-    return 'http://d3js.org/d3.v3.min.js';
-  },
-  getInitialState: function() {
-    return { scriptLoading: true, scriptLoadError: false };
-  },
-  onScriptLoaded: function() {
-    this.setState({scriptLoading: false});
-  },
-  onScriptError: function() {
-    this.setState({scriptLoading: false, scriptLoadError: true});
-  },
-  render: function() {
-    var message =
-      this.state.scriptLoading ? 'Loading script...' :
-      this.state.scriptLoadError ? 'Loading failed' :
-      'Loading succeeded';
-    return <span>{message}</span>;
-  }
-});
-

Random Tweet #

- - -
- - -
diff --git a/blog/page9/index.html b/blog/page9/index.html index 400591e32c..ac1fa6d768 100644 --- a/blog/page9/index.html +++ b/blog/page9/index.html @@ -66,6 +66,8 @@

Recent posts

@@ -97,6 +97,112 @@ +

+ + Community Round-up #20 + +

+ +

+ July 28, 2014 + by + + Lou Husson + +

+ +
+ +
+

It's an exciting time for React as there are now more commits from open source contributors than from Facebook engineers! Keep up the good work :)

+

Atom moves to React #

+

Atom, GitHub's code editor, is now using React to build the editing experience. They made the move in order to improve performance. By default, React helped them eliminate unnecessary reflows, enabling them to focus on architecting the rendering pipeline in order to minimize repaints by using hardware acceleration. This is a testament to the fact that React's architecture is perfect for high performant applications.

+ +

+

Why Does React Scale? #

+

At the last JSConf.us, Vjeux talked about the design decisions made in the API that allows it to scale to a large number of developers. If you don't have 20 minutes, take a look at the annotated slides.

+ + +

Live Editing #

+

One of the best features of React is that it provides the foundations to implement concepts that were otherwise extremely difficult, like server-side rendering, undo-redo, rendering to non-DOM environments like canvas... Dan Abramov got hot code reloading working with webpack in order to live edit a React project!

+ + +

ReactIntl Mixin by Yahoo #

+

There are a couple of React-related projects that recently appeared on Yahoo's GitHub, the first one being an internationalization mixin. It's great to see them getting excited about React and contributing back to the community.

+
var MyComponent = React.createClass({
+  mixins: [ReactIntlMixin],
+  render: function() {
+    return (
+      <div>
+        <p>{this.intlDate(1390518044403, { hour: 'numeric', minute: 'numeric' })}</p>
+        <p>{this.intlNumber(400, { style: 'percent' })}</p>
+      </div>
+    );
+  }
+});
+
+React.renderComponent(
+  <MyComponent locales={['fr-FR']} />,
+  document.getElementById('example')
+);
+

Thinking and Learning React #

+

Josephine Hall, working at Icelab, used React to write a mobile-focused application. She wrote a blog post “Thinking and Learning React.js” to share her experience with elements they had to use. You'll learn about routing, event dispatch, touchable components, and basic animations.

+

London React Meetup #

+

If you missed the last London React Meetup, the video is available, with lots of great content.

+ + + + + +

In related news, the next React SF Meetup will be from Prezi: “Immediate Mode on the Web: How We Implemented the Prezi Viewer in JavaScript”. While not in React, their tech is really awesome and shares a lot of React's design principles and perf optimizations.

+

Using React and KendoUI Together #

+

One of the strengths of React is that it plays nicely with other libraries. Jim Cowart proved it by writing a tutorial that explains how to write React component adapters for KendoUI.

+ +
+

Acorn JSX #

+

Ingvar Stepanyan extended the Acorn JavaScript parser to support JSX. The result is a JSX parser that's 1.5–2.0x faster than the official JSX implementation. It is an experiment and is not meant to be used for serious things, but it's always a good thing to get competition on performance!

+

ReactScriptLoader #

+

Yariv Sadan created ReactScriptLoader to make it easier to write components that require an external script.

+
var Foo = React.createClass({
+  mixins: [ReactScriptLoaderMixin],
+  getScriptURL: function() {
+    return 'http://d3js.org/d3.v3.min.js';
+  },
+  getInitialState: function() {
+    return { scriptLoading: true, scriptLoadError: false };
+  },
+  onScriptLoaded: function() {
+    this.setState({scriptLoading: false});
+  },
+  onScriptError: function() {
+    this.setState({scriptLoading: false, scriptLoadError: true});
+  },
+  render: function() {
+    var message =
+      this.state.scriptLoading ? 'Loading script...' :
+      this.state.scriptLoadError ? 'Loading failed' :
+      'Loading succeeded';
+    return <span>{message}</span>;
+  }
+});
+

Random Tweet #

+ + +
+ + + + + +
+ + +

React v0.11.1 @@ -550,43 +656,6 @@ Minified build for production: - - - -

- - One Year of Open-Source React - -

- -

- May 29, 2014 - by - - Cheng Lou - -

- -
- -
-

Today marks the one-year open-source anniversary of React.

- -

It’s been a crazy ride. 2.3k commits and 1.5k issues and pull requests later, we’re approaching version 1.0 and nearing 7k Github stars, with big names such as Khan Academy, New York Times, and Airbnb (and naturally, Facebook and Instagram) using React in production, and many more developers blogging their success stories with it. The roadmap gives a glimpse into the future of the library; exciting stuff lies ahead!

- -

Every success has its story. React was born out of our frustration at existing solutions for building UIs. When it was first suggested at Facebook, few people thought that functionally re-rendering everything and diffing the results could ever perform well. However, support grew after we built the first implementation and people wrote their first components. When we open-sourced React, the initial reception was similarly skeptical. It challenges many pre-established conventions and received mostly disapproving first-impressions, intermingled with positive ones that often were votes of confidence in Facebook’s engineering capabilities. On an open, competitive platform such as the web, it's been hard to convince people to try React. JSX, in particular, filtered out a huge chunk of potential early adopters.

- -

Fast forward one year, React has strongly grown in popularity. Special acknowledgments go to Khan Academy, the ClojureScript community, and established frameworks such as Ember and Angular for contributing to and debating on our work. We'd also like to thank all the individual contributors who have taken the time to help out over the past year. React, as a library and as a new paradigm on the web, wouldn't have gained as much traction without them. In the future, we will continue to try to set an example of what's possible to achieve when we rethink about current “best practices”.

- -

Here’s to another year!

- -
- - -

diff --git a/feed.xml b/feed.xml index c02c199391..d6db6edb13 100644 --- a/feed.xml +++ b/feed.xml @@ -6,6 +6,78 @@ https://facebook.github.io/react + + Community Round-up #27 &ndash; Relay Edition + <p>In the weeks following the <a href="/react/blog/2015/08/11/relay-technical-preview.html">open-source release</a> of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let&#39;s take a look at some of the things we&#39;ve achieved, together!</p> +<h2><a class="anchor" name="teaching-servers-to-speak-graphql"></a>Teaching servers to speak GraphQL <a class="hash-link" href="#teaching-servers-to-speak-graphql">#</a></h2> +<p>Every great Relay app starts by finding a GraphQL server to talk to. The community has spent the past few weeks teaching GraphQL to a few backend systems.</p> + +<p>Bryan Goldstein (<a href="https://github.com/brysgo">brysgo</a>) has built a tool to help you define a GraphQL schema that wraps a set of <a href="http://bookshelfjs.org/">Bookshelf.JS</a> models. Check out <a href="https://github.com/brysgo/graphql-bookshelf">graphql-bookshelf</a>.</p> + +<p>RisingStack (<a href="https://github.com/risingstack">risingstack</a>) created a GraphQL ORM called <a href="https://github.com/RisingStack/graffiti">graffiti</a> that you can plug into <a href="http://mongoosejs.com/">mongoose</a> and serve using Express, Hapi, or Koa.</p> + +<p>David Mongeau-Petitpas (<a href="https://github.com/dmongeau">dmongeau</a>) is working on a way to vend your Laravel models through a GraphQL endpoint, <a href="https://github.com/Folkloreatelier/laravel-graphql">laravel-graphql</a>.</p> + +<p>Gerald Monaco (<a href="https://github.com/devknoll">devknoll</a>) created <a href="https://github.com/devknoll/graphql-schema">graphql-schema</a> to allow the creation of JavaScript GraphQL schemas using a fluent/chainable interface.</p> + +<p>Jason Dusek (<a href="https://github.com/solidsnack">solidsnack</a>) dove deep into PostgreSQL to teach it how to respond to GraphQL query strings as though they were SQL queries. Check out <a href="https://github.com/solidsnack/GraphpostgresQL">GraphpostgresQL</a>.</p> + +<p>Espen Hovlandsdal (<a href="https://github.com/rexxars">rexxars</a>) built a <a href="https://github.com/vaffel/sql-to-graphql">sql-to-graphql</a> tool that can perform introspection on the tables of a MySQL or PostgreSQL database, and produce a queryable HTTP GraphQL endpoint out of it.</p> + +<p>Mick Hansen (<a href="https://github.com/mickhansen">mickhansen</a>) offers a set of <a href="https://github.com/mickhansen/graphql-sequelize">schema-building helpers</a> for use with the <a href="http://docs.sequelizejs.com/en/latest/">Sequelize ORM</a> for MySQL, PostgreSQL, SQLite, and MSSQL.</p> +<h2><a class="anchor" name="graphql-beyond-javascript"></a>GraphQL beyond JavaScript <a class="hash-link" href="#graphql-beyond-javascript">#</a></h2> +<p>Robert Mosolgo (<a href="https://github.com/rmosolgo">rmosolgo</a>) brought the full set of schema-building and query execution tools to Ruby, in the form of <a href="https://github.com/rmosolgo/graphql-ruby">graphql-ruby</a> and <a href="https://github.com/rmosolgo/graphql-relay-ruby">graphql-relay-ruby</a>. Check out his <a href="https://github.com/rmosolgo/graphql-ruby-demo">Rails-based demo</a>.</p> + +<p>Andreas Marek (<a href="https://github.com/andimarek">andimarek</a>) has brewed up a Java implementation of GraphQL, <a href="https://github.com/andimarek/graphql-java">graphql-java</a>.</p> + +<p><a href="https://github.com/vladar">vladar</a> is hard at work on a PHP port of the GraphQL reference implementation, <a href="https://github.com/webonyx/graphql-php">graphql-php</a>.</p> + +<p>Taeho Kim (<a href="https://github.com/dittos">dittos</a>) is bringing GraphQL to Python, with <a href="https://github.com/dittos/graphql-py">graphql-py</a>.</p> + +<p>Oleg Ilyenko (<a href="https://github.com/OlegIlyenko">OlegIlyenko</a>) made a beautiful and <a href="http://sangria-graphql.org/">delicious-looking website</a> for a Scala implementation of GraphQL, <a href="https://github.com/sangria-graphql/sangria">sangria</a>.</p> + +<p>Joe McBride (<a href="https://github.com/joemcbride">joemcbride</a>) has an up-and-running example of GraphQL for .NET, <a href="https://github.com/joemcbride/graphql-dotnet">graphql-dotnet</a>.</p> +<h2><a class="anchor" name="show-me-dont-tell-me"></a>Show me, don&#39;t tell me <a class="hash-link" href="#show-me-dont-tell-me">#</a></h2> +<p>Interact with this <a href="http://sgwilym.github.io/relay-visual-learners/">visual tour of Relay&#39;s architecture</a> by Sam Gwilym (<a href="https://github.com/sgwilym">sgwilym</a>).</p> + +<p><a href="http://sgwilym.github.io/relay-visual-learners/"> + <img src="/react/img/blog/relay-visual-architecture-tour.png" alt="Relay for visual learners" style="max-width:100%"> +</a></p> + +<p>Sam has already launched a product that leverages Relay&#39;s data-fetching, optimistic responses, pagination, and mutations &ndash; all atop a Ruby GraphQL server: <a href="http://new.comique.co/">new.comique.co</a></p> +<h2><a class="anchor" name="prototyping-in-the-browser"></a>Prototyping in the browser <a class="hash-link" href="#prototyping-in-the-browser">#</a></h2> +<p>I (<a href="https://github.com/steveluscher">steveluscher</a>) whipped up <a href="https://facebook.github.io/relay/prototyping/playground.html">a prototyping tool</a> that you can use to hack on a schema and a React/Relay app, from the comfort of your browser. Thanks to Jimmy Jia (<a href="https://github.com/taion">taion</a>) for supplying the local-only network layer, <a href="https://github.com/relay-tools/relay-local-schema">relay-local-schema</a>.</p> +<h2><a class="anchor" name="skeletons-in-the-closet"></a>Skeletons in the closet <a class="hash-link" href="#skeletons-in-the-closet">#</a></h2> +<p>Joseph Rollins (<a href="https://github.com/fortruce">fortruce</a>) created a hot-reloading, auto schema-regenerating, <a href="https://github.com/fortruce/relay-skeleton">Relay skeleton</a> that you can use to get up and running quickly.</p> + +<p>Michael Hart (<a href="https://mhart">mhart</a>) built a <a href="https://github.com/mhart/simple-relay-starter">simple-relay-starter</a> kit using Browserify.</p> +<h2><a class="anchor" name="routing-around"></a>Routing around <a class="hash-link" href="#routing-around">#</a></h2> +<p>Jimmy Jia (<a href="https://github.com/taion">taion</a>) and Gerald Monaco (<a href="https://github.com/devknoll">devknoll</a>) have been helping lost URLs find their way to Relay apps through their work on <a href="https://github.com/relay-tools/react-router-relay">react-router-relay</a>. Check out Christoph Pojer&#39;s (<a href="https://github.com/cpojer">cpojer</a>) <a href="https://medium.com/@cpojer/relay-and-routing-36b5439bad9">blog post</a> on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at <a href="https://github.com/taion/relay-todomvc">taion/relay-todomvc</a>.</p> + +<p>Chen Hung-Tu (<a href="https://github.com/transedward">transedward</a>) built a chat app atop the above mentioned router, with threaded conversations and pagination. Check it out at <a href="https://github.com/transedward/relay-chat">transedward/relay-chat</a>.</p> +<h2><a class="anchor" name="in-your-words"></a>In your words <a class="hash-link" href="#in-your-words">#</a></h2> +<div class="skinny-row"> + <div class="skinny-col"> + <blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr">Relay making good on its promise to be the &quot;React.js of data fetching&quot;. Rebuilding small app with it. Spectacular how fast/easy building is.</p>&mdash; Kyle Mathews (@kylemathews) <a href="https://twitter.com/kylemathews/status/640289107122368513">September 5, 2015</a></blockquote> + + <blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/RainySundayHackathon?src=hash">#RainySundayHackathon</a> exploring <a href="https://twitter.com/hashtag/GraphQL?src=hash">#GraphQL</a> <a href="https://twitter.com/hashtag/RelayJS?src=hash">#RelayJS</a> <a href="http://t.co/Mm3HlqMejJ">pic.twitter.com/Mm3HlqMejJ</a></p>&mdash; Bastian Kistner (@passionkind) <a href="https://twitter.com/passionkind/status/632846601447411712">August 16, 2015</a></blockquote> + + <blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr">Friday. Time to GraphQL a MySQL database. <a href="https://twitter.com/hashtag/graphql?src=hash">#graphql</a> <a href="https://twitter.com/hashtag/relayjs?src=hash">#relayjs</a> <a href="https://twitter.com/hashtag/reactjs?src=hash">#reactjs</a> <a href="https://twitter.com/hashtag/webapp?src=hash">#webapp</a></p>&mdash; xador (@xadorfr) <a href="https://twitter.com/xadorfr/status/632108552765751296">August 14, 2015</a></blockquote> + </div> + <div class="skinny-col"> + <blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr">Started a new <a href="https://twitter.com/hashtag/RelayJS?src=hash">#RelayJS</a> and <a href="https://twitter.com/hashtag/GraphQL?src=hash">#GraphQL</a> meet up group! <a href="http://t.co/Vt6Cv4nNH4">http://t.co/Vt6Cv4nNH4</a> If you&#39;re in the Bay Area, I&#39;d love to have you join! <a href="https://twitter.com/hashtag/ReactJS?src=hash">#ReactJS</a></p>&mdash; Gerald Monaco (@devknoll) <a href="https://twitter.com/devknoll/status/636723716123000832">August 27, 2015</a></blockquote> + + <blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr">.<a href="https://twitter.com/reactjs">@reactjs</a> <a href="https://twitter.com/laneykuenzel">@laneykuenzel</a> <a href="https://twitter.com/BhuwanKhattar">@BhuwanKhattar</a> these <a href="https://twitter.com/hashtag/relayjs?src=hash">#relayjs</a> mutations. they&#39;re mind-blowingly awesome. they make so much damn sense. thank you!</p>&mdash; Jimmy Jia (@jimmy_jia) <a href="https://twitter.com/jimmy_jia/status/634204563709526016">August 20, 2015</a></blockquote> + + <blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr">REST is dead, long live REST! <a href="https://twitter.com/hashtag/graphql?src=hash">#graphql</a> <a href="https://twitter.com/hashtag/relayjs?src=hash">#relayjs</a></p>&mdash; Syrus Akbary (@syrusakbary) <a href="https://twitter.com/syrusakbary/status/631531666113060864">August 12, 2015</a></blockquote> + </div> +</div> + + 2015-09-14T00:00:00-07:00 + https://facebook.github.io/react/blog/2015/09/14/community-roundup-27.html + https://facebook.github.io/react/blog/2015/09/14/community-roundup-27.html + + React v0.14 Release Candidate <p>We’re happy to announce our first release candidate for React 0.14! We gave you a <a href="/react/blog/2015/07/03/react-v0.14-beta-1.html">sneak peek in July</a> at the upcoming changes but we’ve now stabilized the release more and we’d love for you to try it out before we release the final version.</p> @@ -542,99 +614,5 @@ Minified build for production: <a href="https://fb.me/react-with-addons- https://facebook.github.io/react/blog/2015/05/08/react-v0.13.3.html - - GraphQL Introduction - <p>At the React.js conference in late January 2015, we revealed our next major technology in the React family: <a href="http://facebook.github.io/react/blog/2015/02/20/introducing-relay-and-graphql.html">Relay</a>. </p> - -<p>Relay is a new way of structuring client applications that co-locates data-fetching requirements and React components. Instead of placing data fetching logic in some other part of the client application – or embedding this logic in a custom endpoint on the server – we instead co-locate a <em>declarative</em> data-fetching specification alongside the React component. The language of this declarative specification is GraphQL.</p> - -<p>GraphQL was not invented to enable Relay. In fact, GraphQL predates Relay by nearly three years. It was invented during the move from Facebook&#39;s HTML5-driven mobile applications to purely native applications. It is a query language for graph data that powers the lion&#39;s share of interactions in the Facebook Android and iOS applications. Any user of the native iOS or Android app in the last two years has used an app powered by GraphQL.</p> - -<p>We plan to open-source a reference implementation of a GraphQL server and publish a language specification in the coming months. Our goal is to evolve GraphQL to adapt to a wide range of backends, so that projects and companies can use this technology to access their own data. We believe that this is a compelling way to structure servers and to provide powerful abstractions, frameworks and tools – including, but not exclusively, Relay – for product developers.</p> -<h2><a class="anchor" name="what-is-graphql"></a>What is GraphQL? <a class="hash-link" href="#what-is-graphql">#</a></h2> -<p>A GraphQL query is a string interpreted by a server that returns data in a specified format. Here is an example query: </p> -<div class="highlight"><pre><code class="language-js" data-lang="js"><span class="p">{</span> - <span class="nx">user</span><span class="p">(</span><span class="nx">id</span><span class="o">:</span> <span class="mi">3500401</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">id</span><span class="p">,</span> - <span class="nx">name</span><span class="p">,</span> - <span class="nx">isViewerFriend</span><span class="p">,</span> - <span class="nx">profilePicture</span><span class="p">(</span><span class="nx">size</span><span class="o">:</span> <span class="mi">50</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">uri</span><span class="p">,</span> - <span class="nx">width</span><span class="p">,</span> - <span class="nx">height</span> - <span class="p">}</span> - <span class="p">}</span> -<span class="p">}</span> -</code></pre></div> -<p>(Note: this syntax is slightly different from previous GraphQL examples. We&#39;ve recently been making improvements to the language.)</p> - -<p>And here is the response to that query.</p> -<div class="highlight"><pre><code class="language-json" data-lang="json"><span class="p">{</span> - <span class="nt">&quot;user&quot;</span> <span class="p">:</span> <span class="p">{</span> - <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">3500401</span><span class="p">,</span> - <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;Jing Chen&quot;</span><span class="p">,</span> - <span class="nt">&quot;isViewerFriend&quot;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span> - <span class="nt">&quot;profilePicture&quot;</span><span class="p">:</span> <span class="p">{</span> - <span class="nt">&quot;uri&quot;</span><span class="p">:</span> <span class="s2">&quot;http://someurl.cdn/pic.jpg&quot;</span><span class="p">,</span> - <span class="nt">&quot;width&quot;</span><span class="p">:</span> <span class="mi">50</span><span class="p">,</span> - <span class="nt">&quot;height&quot;</span><span class="p">:</span> <span class="mi">50</span> - <span class="p">}</span> - <span class="p">}</span> -<span class="p">}</span> -</code></pre></div> -<p>We will dig into the syntax and semantics of GraphQL in a later post, but even a simple example shows many of its design principles:</p> - -<ul> -<li><strong>Hierarchical:</strong> Most product development today involves the creation and manipulation of view hierarchies. To achieve congruence with the structure of these applications, a GraphQL query itself is a hierarchical set of fields. The query is shaped just like the data it returns. It is a natural way for product engineers to describe data requirements.</li> -<li><strong>Product-centric:</strong> GraphQL is unapologetically driven by the requirements of views and the front-end engineers that write them. We start with their way of thinking and requirements and build the language and runtime necessary to enable that.</li> -<li><strong>Client-specified queries:</strong> In GraphQL, the specification for queries are encoded in the <em>client</em> rather than the <em>server</em>. These queries are specified at field-level granularity. In the vast majority of applications written without GraphQL, the server determines the data returned in its various scripted endpoints. A GraphQL query, on the other hand, returns exactly what a client asks for and no more.</li> -<li><strong>Backwards Compatible:</strong> In a world of deployed native mobile applications with no forced upgrades, backwards compatibility is a challenge. Facebook, for example, releases apps on a two week fixed cycle and pledges to maintain those apps for <em>at least</em> two years. This means there are at a <em>minimum</em> 52 versions of our clients per platform querying our servers at any given time. Client-specified queries simplifies managing our backwards compatibility guarantees.</li> -<li><strong>Structured, Arbitrary Code:</strong> Query languages with field-level granularity have typically queried storage engines directly, such as SQL. GraphQL instead imposes a structure onto a server, and exposes fields that are backed by <em>arbitrary code</em>. This allows for both server-side flexibility and a uniform, powerful API across the entire surface area of an application.</li> -<li><strong>Application-Layer Protocol:</strong> GraphQL is an application-layer protocol and does not require a particular transport. It is a string that is parsed and interpreted by a server.</li> -<li><strong>Strongly-typed:</strong> GraphQL is strongly-typed. Given a query, tooling can ensure that the query is both syntactically correct and valid within the GraphQL type system before execution, i.e. at development time, and the server can make certain guarantees about the shape and nature of the response. This makes it easier to build high quality client tools.</li> -<li><strong>Introspective:</strong> GraphQL is introspective. Clients and tools can query the type system using the GraphQL syntax itself. This is a powerful platform for building tools and client software, such as automatic parsing of incoming data into strongly-typed interfaces. It is especially useful in statically typed languages such as Swift, Objective-C and Java, as it obviates the need for repetitive and error-prone code to shuffle raw, untyped JSON into strongly-typed business objects.</li> -</ul> -<h2><a class="anchor" name="why-invent-something-new"></a>Why invent something new? <a class="hash-link" href="#why-invent-something-new">#</a></h2> -<p>Obviously GraphQL is not the first system to manage client-server interactions. In today&#39;s world there are two dominant architectural styles for client-server interaction: REST and <em>ad hoc</em> endpoints. </p> -<h3><a class="anchor" name="rest"></a>REST <a class="hash-link" href="#rest">#</a></h3> -<p>REST, an acronym for Representational State Transfer, is an architectural style rather than a formal protocol. There is actually much debate about what exactly REST is and is not. We wish to avoid such debates. We are interested in the typical attributes of systems that <em>self-identify</em> as REST, rather than systems which are formally REST.</p> - -<p>Objects in a typical REST system are addressable by URI and interacted with using verbs in the HTTP protocol. An HTTP GET to a particular URI fetches an object and returns a server-specified set of fields. An HTTP PUT edits an object; an HTTP DELETE deletes an object; and so on.</p> - -<p>We believe there are a number of weakness in typical REST systems, ones that are particularly problematic in mobile applications:</p> - -<ul> -<li>Fetching complicated object graphs require multiple round trips between the client and server to render single views. For mobile applications operating in variable network conditions, these multiple roundtrips are highly undesirable.</li> -<li>Invariably fields and additional data are added to REST endpoints as the system requirements change. However, old clients also receive this additional data as well, because the data fetching specification is encoded on the server rather than the client. As result, these payloads tend to grow over time for all clients. When this becomes a problem for a system, one solution is to overlay a versioning system onto the REST endpoints. Versioning also complicates a server, and results in code duplication, spaghetti code, or a sophisticated, hand-rolled infrastructure to manage it. Another solution to limit over-fetching is to provide multiple views – such as “compact” vs “full” – of the same REST endpoint, however this coarse granularity often does not offer adequate flexibility.</li> -<li>REST endpoints are usually weakly-typed and lack machine-readable metadata. While there is much debate about the merits of strong- versus weak-typing in distributed systems, we believe in strong typing because of the correctness guarantees and tooling opportunities it provides. Developer deal with systems that lack this metadata by inspecting frequently out-of-date documentation and then writing code against the documentation.</li> -<li>Many of these attributes are linked to the fact that “REST is intended for long-lived network-based applications that span multiple organizations” <a href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven">according to its inventor</a>. This is not a requirement for APIs that serve a client app built within the same organization.</li> -</ul> - -<p>Nearly all externally facing REST APIs we know of trend or end up in these non-ideal states, as well as nearly all <em>internal</em> REST APIs. The consequences of opaqueness and over-fetching are more severe in internal APIs since their velocity of change and level of usage is almost always higher.</p> - -<p>Because of multiple round-trips and over-fetching, applications built in the REST style inevitably end up building <em>ad hoc</em> endpoints that are superficially in the REST style. These actually couple the data to a particular view which explicitly violates one of REST&#39;s major goals. Most REST systems of any complexity end up as a continuum of endpoints that span from “traditional” REST to <em>ad hoc</em> endpoints.</p> -<h3><a class="anchor" name="ad-hoc-endpoints"></a>Ad Hoc Endpoints <a class="hash-link" href="#ad-hoc-endpoints">#</a></h3> -<p>Many applications have no formalized client-server contract. Product developers access server capabilities through <em>ad hoc</em> endpoints and write custom code to fetch the data they need. Servers define procedures, and they return data. This approach has the virtue of simplicity, but can often become untenable as systems age.</p> - -<ul> -<li>These systems typically define a custom endpoint per view. For systems with a wide surface area this can quickly grow into a maintenance nightmare of orphaned endpoints, inconsistent tooling, and massive server code duplication. Disciplined engineering organizations can mitigate these issues with great engineering practices, high quality abstractions, and custom tooling. However, given our experience we believe that custom endpoints tend to lead to entropic server codebases.</li> -<li>Much like REST, the payloads of custom endpoints grow monotonically (even with mitigation from versioning systems) as the server evolves. Deployed clients cannot break, and, with rapid release cycles and backwards compatibility guarantees, distributed applications will have large numbers of extant versions. Under these constraints it is difficult remove data from a custom endpoint.</li> -<li>Custom endpoints tend to – for a client developer – create a clunky, multi-language, multi-environment development process. No matter if the data has been accessed before in a different view, they are required to first change the custom endpoint, then deploy that code to a server accessible from a mobile device, and only then change the client to utilize that data. In GraphQL – unless the data in the view is completely new to the entire system – a product developer adds a field to a GraphQL query and the work on the client continues unabated.</li> -<li>Much like REST, most systems with custom endpoints do not have a formalized type system, which eliminates the possibility for the tools and guarantees that introspective type systems can provide. Some custom-endpoint-driven systems do use a strongly typed serialization scheme, such as Protocol Buffers, Thrift, or XML. Those do allow for direct parsing of responses into typed classes and eliminating boilerplate shuffling from JSON into handwritten classes. These systems are as not as expressive and flexible as GraphQL, and the other downsides of <em>ad hoc</em> endpoints remain.</li> -</ul> - -<p>We believe that GraphQL represents a novel way of structuring the client-server contract. Servers publish a type system specific to their application, and GraphQL provides a unified language to query data within the constraints of that type system. That language allows product developers to express data requirements in a form natural to them: a declarative and hierarchal one.</p> - -<p>This is a liberating platform for product developers. With GraphQL, no more contending with <em>ad hoc</em> endpoints or object retrieval with multiple roundtrips to access server data; instead an elegant, hierarchical, declarative query dispatched to a single endpoint. No more frequent jumps between client and server development environments to do experimentation or to change or create views of existing data; instead experiments are done and new views built within a native, client development environment exclusively. No more shuffling unstructured data from <em>ad hoc</em> endpoints into business objects; instead a powerful, introspective type system that serves as a platform for tool building.</p> - -<p>Product developers are free to focus on their client software and requirements while rarely leaving their development environment; they can more confidently support shipped clients as a system evolves; and they are using a protocol designed to operate well within the constraints of mobile applications. Product developers can query for exactly what they want, in the way they think about it, across their entire application&#39;s data model. </p> -<h2><a class="anchor" name="whats-next"></a>What&#39;s next? <a class="hash-link" href="#whats-next">#</a></h2> -<p>Over the coming months, we will share more technical details about GraphQL, including additional language features, tools that support it, and how it is built and used at Facebook. These posts will culminate in a formal specification of GraphQL to guide implementors across various languages and platforms. We also plan on releasing a reference implementation in the summer, in order to provide a basis for custom deployments and a platform for experimentation. We&#39;re incredibly excited to share this system and work with the open source community to improve it.</p> - - 2015-05-01T00:00:00-07:00 - https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html - https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html - - diff --git a/img/blog/relay-visual-architecture-tour.png b/img/blog/relay-visual-architecture-tour.png new file mode 100644 index 0000000000000000000000000000000000000000..216c7aa79d054130c806c8acbd67f9b7b4744ffa GIT binary patch literal 285245 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%0D|?!w~u{Og1B zkTbIfa3cO>zQo!r`{c$g599`RD)AEwjOlt8h7A??W*ow?*2v*_a&FSugL{7~-}UrZ zVvEIH*h&6Ee(uBS^WZnio^clnaJ?DZJa~2$(t3FQ+~ z=Dv_i?4iYi`|h1eoO2;QkNOk3t)cSpnpDZu?#4JblQW`=!zSa=l^ic>eaR5Crv=7R z_fU%SQPZe@l;5gvS6Ik6W|4fI;V5y}+w4ik%?EyZNa4^cVPK z(C-2$rh4oO?NSy2!Id0O@TWgwl1aRoF-8+MMVk$@va{1~Us;K5kl)ZkQMbuB7PO{l zX1`=sX03E&@FMGmqMS#Wp3=JqMF4riU8}chwkRkB)Ysprl8RJ2C@83@CQ7Pys_$g@ z^en;5AM`Ch8ZbM7t$^_h?fz2&!`J4nO|M&zS@cQ~~7E1CzK4NDk zK&kppo?O(@#(4a_#mBY`iWqPs^Id_ybz(F)f9 z?e3_n(-8yz4e*zxX(|0pHDM3g}}W(2CbK9sfTug>cke z+_bbAT@qvXPfX!W`-oili2--i>W!D*wc&YyR?9tKRsJJWC;(f8 zxyyof==JaB=dUC9@5cJmTL0Zxf7wO<-B^F_*#B;Fbc8luuzfr`;Ek*ORK)e9*8`NN-1{(vq_gON+?p8LtxI7*g)z5?+WI_l%<(8Jz zWou<@$}+OEH6Y*c09f@!3_x??PVlGfe{tD=nT|hw7x13&@ZBUqclEX)(&x|uO~U@k z6f$;o^(qSzd9tKu$!KRmh1!);jhA~2ryovj#w%T`=D$98_DWS^lB3z$m534;S2!hr zEEKmM&x`$g_5aPQbeY+O&d9yidS@Fp7Fc$C>(8HWJ5TTwxiSl)7-H%1=~cpphn2pD zhF)Bur>F~#&|p~xON)8?R5@ESzVsGwJ?ap}c|{AoI!e?bp^lSXC))x+x4jap(-f9wB%WT82b`SDa+)F%|Qt4Cu{ zPw0J;S5&i`-n-YMN>?D~BBE(c`ky!YU!T>iL(avef`^CqiA#R!%x>`KSDUHITMIQt zDd9eM9^5Xp$|dyu+|?)3A71pZrai|N10aQ|}tvr7mUn zv#w+5Sc1dM8d9_m)FqDF+VR|u7OKHto35vKjtZERq%91+8^ArxydTi5tL%caLwMQ| zVOL*Sh|%XV*E426wDr*f?5+Y^8{1EVILUw9_607P#jTI8{$?@#kL=<0dtp(#ZTFY_ zIfzyaTes8mwUN45yNzMVk9%Z2$1dj~BzvPlgr^}pc&N6hQ;qgWzr!W$y%Ei6qz!MC zGgdK7d#f{2vD`4&ttK<) zYd3|(Ok*-iawcwc3R<1x=Fuyq6=Y7SUWRhM%I6T<>qSfZ0L^?({n-|q?G0A57&$X@ zUva#Q`y4v2NkKaP>Y~1dMTVUB?vqks^CWwY4E0LW!FuO?N>cn-QQ+>)Z@lnVnwPa- z;{A0(|7Ol{y#0cSIy0WU2sEX>UObJ*mIXLYYF&?;}6FKD*3$FBu8#9Ijoi8-kd za@&0q>Hp;4Jt7#!~bQ&U=n-B z#XTkDF%IiF-LUQK>8W@I&zkX!JbD7DGS^d%kB+9+;IfRtCg$oG?bV>#hsHM;x;xwn?G#w4|^}U_HMOiC*>+AXPrtRl)h~*4(U9fWB0dnB`8_gH2 ztfdk1e6J(AqQWaGIC3>J1BQ!1Gm8;XQ42$p<>lo}i1jt!-QCMpvVyY^)*|&XCAw}i zf6>foEK9_r^^^T)<{I@TLxv!Ju(T%vmvy7N0$5=K57+us4|7IQhb*b#UNPAt`1lM7iZx1P=oBT8(vtYMyDiR}L3yz_a(8D|fA*Gghy`mCLM}&{CQ9V7c1JGl>=J zG|kDSXh*x#zlFoLBNor(HC=)6;I)E&f~l?Z|93_!H_ zYYY~cBzP(eFI(yX=ZJ|1WXZ3&1HWBIo8NdIrzf-uWxmG&C?TdhhLdrndn2(rXCvK{ zytd+3CSh9;gk|i{pJLE6UIdNF*hV3tWmo=C7P`S7G3C|eik@Poje)bnfw3NE@%q)tJ3y?|YHsyz=8Uh?_yBAgXSwx}~Ta?Qn)gi{3sc zY~xF!#ABX5Vjy%sLtUqJTv?Z_UJ?$EZ%_}9Ya3nl&bHz{9@6sH<|r4=`MDoa~5#g?cfgRYE#9GRrj}I zZ9$K<2f*yTUFcwhRA&TrZ=P0rEaRo@1Comw`j0W#!BW^0t6UWhnL1Y<>G}N%ZjZ+5 z9E&Gk+Qlu#m|* z6iT^a9|tx;+s~gJ(E_g3i3yj;6CpB5ZS543hPvj?qr&7myYMKR#mQ{nV;wR`5%!_j zfo)uTJYiY)tFxUJo4tk3w4?0@-K12)Pn1A>qT~^`e?2!T3Bvz_wmeEd z$DeAoWi|xEj;!4=603|UBqhIo_KR?*)bKc4%@%3jC+i2B!uYS;z6LWnZSPfevZZYA znJn&;(I2Q+(WD&q@qZ3+`5t(3a)q?qaz8)ntO{%l2W7vr9p2p`wg~gRz5g-=BY)Z%A$ak=%0kQ8VwhHv zN$2H-3dCG(b*L)TZf#QXdS8xLfB3#yZP%KAssoG7KRadzKeE7AYcKD+Z_?4fzF1~4 zMb&~?F^-RYH&1#fYq>*5Vp4zHZG;6Hhp}?dsN>$t$>y=4IwUxJ=)Wjb-Tc)s*zSCk zEQX0Y-+=_~I$kaLsGDm}X?*Tip!k(DLrqN$+s*`POnx(`<+Nss+uDqT7jwzG`-PCX zULnY9QNNCoxfU@W*DafA=j9qfSm;xRp7Cgqwu>5b{YpC8G9r22tif-oh>S~#h}&Z0 z&{fpuo6zOX_aJVxa-z!&Ap6k=fOp`=dHc$5!>@M^K|i_rHmSg^gzrUyaAX$)<9R=R zW}{j~M_KR@yWs^7T*}N4yPFW<5yC3M2?RO3d?t!)=&s+v+R(WSd4B=ail>O7)I@hR z$+j=N5n05h!Y94wta`Wxk2Nc<>$CY>rlV412X0CbQjNY60V66o(dMJsSt9&cN`?1ztn`zDSXe7o1Qbz8O>Vfr4KD&C= z6qhBFQ#kVKKz&;!Z&luh z)v$!c#TonhN>pEazkC%n@SC;6jB+RWsw5IOBrdescIyK?R||n0T%QqeJ?_kXpItw? z+9VZCFPY7p40zFxL)(e^%YDh(2%hmqWgkb9VCCE2GjG@CCB63t!m&DrL}jY!NM4Of zO8HtjxXz&{EmN7ea0u)zs<2gm&Wza6yj)+~Pe<_LkZ>_xeb9dHCG2}m@Rty`S^aj- zQE%5{Wn^aJ=k#x?7}XHF+fZW?vTjfA^5ViJZ-#qypHzTI%9M$^FpruUPrQhGYL##+S zHMksd6~gb4bVsxXHb8joR>C%q3TqX$NAi>#Qedxby`$UKydA`=#Oy7b%ts(b+uAB4 zMYY?pjMh_T2tPrNeyb&5*{`+`UO{um1N^U`=*76gE9UYB9fDt%v6dY=A-rEwsgvQQ3i<@(Tm-&j)f}Ar0*~Jj@Nq= zxg^iA5Op&WJvviG??KPbPnT20sx ztO6?;T~p2%16`KWBLP1$bvd$D|4TDFAH#w*#UMZZ!yo~ZhB_zjd(e0_G&qqX#@-B` z%)4~@5eVouKQX~;DtS%x$l&eZboEjeRlO{-+qjq^K!P~SGl=zD9O5PX6w_Ef8?iVg z2EwydKO$sERYRYuNTr@(3a24;)wHoG!?H_sr$mf7a1{SwJtnRbJ3)2=@jE>b|ZGcz=*BR^^=FX%w#dFnm&4P41 z?3Ws;8 zji~Z~+T|{u@H?(j(k*tWLB5rhcwtQcGFN$EKGWDB$8a7^tCqg=`Bg}g-ATLzE6=yx4 zAvYr!!oy`TMmxi#y^+Hd+=C9W7^nQ6>N#ECq?Ysb>sP?BpQ&k|UT=GkDLxP}4WcTB zNkfH*+vMXoP4qN6M~>+e*#nOkZvf}xy@Ly6Hl)Yi3jdzFzkTKO@NKb@0uf=p0w;J> zM!mwEqH4z4KZxs-oorW}!gs6!k)?%a6BnM|@3Un)ho59!T;2L`kT+h_o1tl%xA=vi zCv`hd$ZjVMa4grL$PPI}2QPHyZuzJPC_ou8aoMep0<0 z9K;+H;C4~E6xG&Qr`MN`W!zPN^5BkKsv!P@mX{Y9{cq2UY{3jizSfH?5g^aKB-&*nC z7ao&&15mt!^Hx!`qfuX3QbmynyvY4Lt$p<6BhBOVAAyF@2P&UaIz znbtY<61`cbp{DK>(@WIC?pKSxug5>F8&ec(7rj~xwU}7ErkzICMkK!2kpW!TY6XmoUR5lKmm@$vCl!EWvr+~$+U6Chf88(TTQbd57HAklpYEC&kifDbpx z{T@HHnzG+Z#SyH~)aq%tH`PkQPw;BI-Lb{;DYK~GgTvi|S#Fj^-OS?2NN;~{yAh~C zcg(n~Fo?|6dV)c*QVJgdX)iA`N1O}_-*T?4+ytHVq$+)XHrS z)kYaVY_g>>UTzw=!^_=WF>Uj3V<0&SxjoiA^6*jcZ?M5NUTA)ordeadraLQ)_^?WE zS5vd(og}ros>sYaQkHskc?|swiKu)v$EZ@IQO-pR5{fp0wicZ6--VfwZ^z;@_^>fM z(v+5#+9*TwCoPd@`5K{XrhbpF&;gJ@z03hN9d8;t5xE$36&6$1`^-~% znOTdf74xIw#gi|9he)V2Rd)!}GZ(10X}t&Jhg|?3=&r3?pR{baEL5(GiK2VoW=3-7 z8lC8%Z+LFHZH6EHc2fdFd>k&UuAXpElUKYs^5R{baqYe2BK_;Q-7U!B%e}l0V?yv0 zYJRx=^#VJRSB=TCh*cJw5no(^pT=OS);=4ZFgsg;Fr2}x=jN5%l$|bfe+kEzG8;i95*DLr65Q>~Gx2fI0%pWM_fhe?! z;4V>KF@@*q`Q{R7^u4W;L#}s(?=2k=+AMTD?1pT00SQ0{5clbT-!{p0E+h0HWx7PL z(bTf*B@=+7ILthXmghvaY2L+=KWYz-1z0frJX;%Kkb&87PB?hz*swPOd48M-;dei) zkV$6aOq=~?vU~;lc3cEN0*BsvBgfD)(*a>hYAbJ>+}yz`9U(->wCAx_{9g0pT?qc} zMKLtSpVX-z5(>a$NgqG#YYrE{@>cY?+Z7a>H`uqhm~T+AT@P0squoyC{9{^di$xqe zGh+!%vo*q}Uw-tR+z+k0H{wj{WIw?%;90w;<{v_mX)2-omHU$_@A$Y4C4=l#8^# z!dX!%b)39(B;@xEQE_Zg9J7V>}?Dg$W{q=8NWk{mRf= zmJLA+^=qdAF`8{X+0mTX^vf1PJW#)*u zvCs~SrSb>+0=Lt>!AdiDS}CZxY?{jBW9xD_l#QC}pT= z<(^Ap+`;-xsB%yJbnA}?K+g5LRzA8t#VP5WfL`-VJnbo#(-l5r8@UY0Z!=0^ayIm} z;X;PxRL{oES)kJKh(^{43<83d^M|#^#rAVH@-3fQ-b}98<2UGrmV#0RfndTpYcYkW zTN};&Mr%3lnbW; zfDjFT!R-e2D#7i?9VsF9LxlVh8g##z)JX&rcPFyXT$dV#xV%;L`6oR_Hu&)AmBM0m zk_q;3wSZ*e)#1T=!xk$yP0(>&fd+SHcekxuNHO+dqjGOYi9n%kEOUfn5ipTNCp5Dz zT-gnH6|hi0=61Ox^4eCmYau1(XCSqa&l#loeQM)X_yb6ysbD8hdIr-zh?-0k#Dila zU&wN3eU_CQjb52{c8s}C$TtjO(IFnr*U_1PH2i=M-Kzu`?Aji;Z7qNckp9M}^B@UQ zb7xEV!zQ1-+v<@FfG%YjF@-CQb3vk%(^8n~3yGSZ(YBfkz zUVR!^;}m`ir~1rgH9B@NDeGNf0)G*MQ9;I0e+y3Cnfpa2O$I>R16I1#z6{DyRlt*q zg@B8_n?XVN+oaAL3hfVEJhy9?N#ie%G$JA*C=G%=Rj8jL>PUHAhS%_lO3gaTsvl1& zR;D}@DW`ArXe&7D(g6Y0q|^2(M`BoSzK!#7_daO6(PBFN^DAzbihBJ5ebD$4e{&JL z`-4Z19x)}Z8YKg?c`Jx~sX`%O`yih82J;&)Eb9PKQ!W)~^t|#ooevdS2rcyNC`#sE z?EfZeb8*5N`$k5lAR~&2VX-S)D)Yc@0RPuu@CclqkfPG~-imS0Y*jF{vkRX=|8Q-@ zW@F_c9nupu6R5lAf}q|U>?)`Q00uEmE6wS;_P9GgUfb;aKpm2vwwe!SJ2|7sI#lwN zB?tI!i1|1r@n~^uVPaK>x6hr$;oK|mss?jrlD<;@3v6O;JS}_KTd_cDA)J;2gjf7% z4*2hj(UjMsT;HjZkAjn*u?RZmLj?_Ucg_yDGbDNwV!%0n6lH0((Zrt|GHVz05d7Yg z0RAxGEjc$gNIQvbWX}|vnA4`v#&GzCnmPf6Y!a7Bv%7uNgnU zn_Q1)mJZi;f;Q!jbLb652RH>T%zuqQSPAQ=#NkHVvm5p2&z$%Lu;OHNd2X^7{_GL% z6woOB{F06T_u=y|)BFgS`4=yr-Dv6jtJxO|pwWQ4XFSP&GAysJfQtUn(+4+5{Qfiq zrdSmapH>>7JrDl%@c)hY{=eV*Ax1vEz~g@dS{YdTfj_pP$QNpAG*mCzq%*B)sj0>D z;5l;*5#Rqgi?}L)Wt-O=UOxT3WxcHkc&_t=6b>~HwVFY@xNAaQZ5z6LZ!n%K9qpfk zXcqBe(ro#~^%C<2cYOQsEmNu~|L{<@>^S5b>OW1M*HeMO!n`VVPFIxETBot%>)%O8gxb7%?Y*Q<7H=m|A3SSw?C|libmSS#RZVJv0X3y zVqnrd7kO}QWd49)FN+y|!-J>Yo36>auY?RMfXsVBa_Eck{wDWKm#_6a8qxZXCLe>J z@1CQr`9xk%kSF?=`g4YM=YMUPKNs}>#t+CB+)gr|F}tHkDOfwoN3WKbF%<<~eq*pgfcm?{x!Y3Pma_OB;=U;;E+1(rBIH=yVLz0@$Huc2V)Aj^NU34~Rz1!n7r zmf8Q0v;UVHZ+=I?5kHRV8I)_V~663K+izE_=4Swtn650qDMnkTzr}Ykd0=3I9SN zA-jy}_kFARw%~=ny6uRFUFv$-m;BsswBvXrZEP?noY8-gqhTi5qk5FW&X{yjZeaCr zs{X?B#q=xMR%zju$jynWs-y!TvIS~+6@BSxcut|_Xl`oCN!GhlBbzz!rI!}O}Fa*5PV&unYbxjzyIinkvs>mngZJ5^Z#~Z z{cjh12`dyj9SPL1vYO3WB`CbhDRpFe-9LUs!(*14IPWq-{VUV)qe zgqd`-G3I}K8HDiPqNbsF<8iggt=3>#X+BXec{x_AEEOvorRtNXBw_+2vk_%<2ALx2 z=(%e7K#fdYoL(hwfp4qZeiFR-3Sj9LElkh2pSs7{djQvhUgXn6 z2W^k*;@8cvAxYlTz|v(IJhUmy-~|ruENhNwm&_TN(T>68@z$QEBSnkH>{`Q6p_F~B z5!dxAddv~!)hECAm1(M2Zs)z+dneyR)rcl{L-{j7+tV@NJx~fD0VchG-zwWU-`*!< z-cc8&V4q2*UQ~RK^~@1EAV}(b@~~TQ65M;K!imN`r0uGlbi2FfY{$V3`fx8EIepG% zwj^UY0%>0xEo9KDb%=&+P7t96OoTLlZ4btsnDzD%yYy&$2f*R$=ZW>&H%m@Br`ZsRu2 z00pVva&{PUCkxh@Mj@K<21cs*O$5Dt*_mq?HkhXa>TE{G(x0BJNf`;5fdl#NHA(cu zabx9V|JQg;BuqcMFL|-apUg%}v_(_LZTE8!8T%;y?BND%-<|1swd?wfMdYMi<~A#UeFG0FKiRA!~m2(^V!tp*rU*HK&zB+v|b_7 z^4T`n^J`Rw_nxkpav2(|MgWXuC~3&m9ZwaN81u1`rUHJrwU#qYjk#JkSLP#WjZuX1T9;z& znOX^&9nn&ppnGjSa!JD>7E&-%VG_9ln?Uf01EfW57m+UeeQJl@NVY|Vxxd8E(;kXUE0=0#V!_1WHbdL*>)Px#j>s5FtpX(AI@NOlw6zeQydc6*iRi-H&R!Vci0dY@D*>pjNtW*Gd~U z?1y~UwYs!TZd7@WSDhyZ_|BwW?B89mA3z46vq|;cAldvv@BLKIKDj7X z^CK^fmckZ}9`*BVgUr&;$y&VI7yBCtzV8|^_)?rUtOu0gpR_hUJ!)#yE;%dLsG$#A zUl~mxb3aKHuAQBH`ABu=&N^3nI5Y1B?2XDpnjff9}o)Z@TL^x&(Z8 zV3BoK$ZB9?(x<2$Z@ZUZyVPUNL7+p7Up153?=IpVoedCN|5wEQfBqCM#p9_Gw?&*@ z?zDtLz!lyW6lYV8Gis2+gm8)xv*8l+N3zk~u}n{}*X09bXEUGZ+?RZsyJGkwdJ>HR zR1if&>N$zz%JH-(9A$P9ege*#slyf z&PI^e#mUb;!j*OVRWokyFCV4v6dWO2C!M#X(HDz}R^8$F`%*-&+vTHv9i5AMF+Y}j z=zfDz|dG3DU zSq+JuW)l+&bALqDjPl^M;v`4(POf52+0gs%Wm-TD>mR(N84aKSvBXaz6Ry&}ILj~I zC;Mf8``*fEBp?v@8Wy72Vvz5FH2YyS=t}-^N~y z?-Lnr?|aT{BdTBp@tf9K?(!goa)#Q&sv^86U2G0LPobcpeXgPliL+$<4aH}ko*P%) zE;2#j)ivpLJczvSH{xDBDi`4aaD;lWS09i~eQ28Az@n{%BzkAK$m*F@X z1SfD_pE3Y+=}qoAKW4~+m3KFalxJ@XO+VwY5(WeXy3SceuMYa3<4CV_fvG6I?Wl5! zRUl!TWlp@!Y_;kQyWFS^2?ztLYGWokPfX_MFN8Zk<3bkDfv zx|1W<)$Mz?*b8Ww;)HZ88W#-*Mh>0Y5Ii1qxc=Az_{m4Bo2l$@J1G>jtt!&6*WrgA`M(#LeHIL_09$jWpu<7-eV&+8P|CAHFt1RH4S+K9sQ$NKp7oip6U zEz-h1-`S_*Ecj`$4UmVHo(zvYhPDF|-%Nk>b*<}4_JoRZBpIq4)JcLGhhg!`oqQ?w zSuWQSOg25vp8I;zCUxnsw2*R>A=?F(=N4t=jcc(wB1CBbIIEbn-EJ5hJn55_l%(Sz zu-CD4sy8iIf&kJ6NshbZPxuCwen3+_q$VmYJ+qX}=Fcp9o!)CF8#b6Gc`WG#g+Y|Z z>rEmVbs8u0zUFT=o^QumOtG-^%R+SyFOv}UHUAJ5S+C>c%s8KeSHY9g*iwG!D{fad z`@J^S*&&L+q80fdgA^DLKHNB-j^wpnQho4^=kiijh%QD`=>`sm95>F(?=8TVd>HQ> zq?Tr?`qj;)GNx9h|J8tu$b(iP-Pa(|Dz8FgKuT1w7B6Bb9jWCsAikF>Cm5q~<&YTl zQe`^er(%<8rF4}+^4>3{_@jyZBDez}p5Gt#TEKj6m(36wkB^ep1|JN_cEAj zCrf|&F|DVQ?D=~bz^h9tC!%}=VB5x6BOT5KLx$3g2 z|FKhGG=A50u-`d6@fT@`>Z6r`mOYn1C{l%k%1FgwdxF~aXoD3H??M6gl4<>U;oi0K zX%MsLM4jX5Kt6~C$PV`ohf9o$8FT~=dxi%4#{>sw(&t3$l+$d23t!QN)1-aNftiaa zoDn{?-q+F8c#G&Q2`Q!C0rV{DT!~kQZoI&uBZEXzK#>mFzQ14#YJc&v&S+bZ7ynZ< zH7AGB6Rv|Kw|3d&h00Y+RgA|1uwA!em8s&DE$6XAZBOo^m$}`ZpDa4fR5>EGF%{8%3p+dyGBre0Mg+?jVgk(W1#REV1Y1x;-p^ZVqaPw=y%tQ*0jYBJLdgr z|L(`@P-#Hym|3(if(&4|mW_-Utpdd#?e(N*!?0S6h@*{Z@T)2WmO%O0vuzHM<~qmi zvJKhPbG_G>%>CQ4QxN4_W{m`O$~_xrbqj;iVpYMM47K)oTDuUu#PcLT9XL^>#N*U~ z3!KDsO#OHY0?pPHAPi!_qfciTWE&Ao{JS~N*ewclyp8kE=k!1zR&t{xsIqR zw&PS0&U>F7a#EI=8)@cin<#X7B5Kzy>n<3>gw(b>AJL79dpdJVw5gie{q~Cz7-sl5 zcxEC`*$mE=CR-e(z|>NfD`-pPAuT6YWxibW3OLbKz$pS1y1Iy5f#d@R4D3MY7u;>3 zX^A7^cW?;J2|t$earf8m_d$P@1+p1*sg9aujyTQ%r)ex)J$x_#EyaSRe3k6fg(X(Q zG;sLDm|PPycwb_G$<{vlr*7=8lWX`iCif6|gMSlqLM5Lrc6Zg#JdzuE2!99DD03=3 z*cz(qkMVjF{IV;7(@X|76yWf%+TE=69=^Hg=TjQwoIhE><&YvAQ^{^?P&^?SA!9n4 zM_p@RQgJQL?Piw~029XqK%Cjh%)FTrxiq+6nzo0MFaUs(9m3zs(9hMa+R$Ha9JaT@ zdX7(eH3oUNp(4ibw3F83VwBaBz&o_h_S)5xuS26c1yL{F-?n7-rnB=1mA6jNUR=ad z+y@RVx@gr<_SUB49KQLM`YsZCzh(GDG!t^YU|bQ>Y}eq5JSN#44rDht$9U& zf5%NLccIL=0oh55=k2gLp^mYlLaZ^fs*;(~bW6)y26Vv6P>ZfRFA?06*K$|DEAXFL+GL+;?`8eHg-z3HRkB@WCSX1_UvT3v;~5<^Z8tnm3(W z67N`zL&e3s_x%00`-B8QlG5Qx)Qo)8esTjU*c=@=$(*sC8LJ98Kg~|X8a7kaZ@M@| z4{>fBz!jE}30j`};-r(OL`TSN{V7WN9d?(K{o;2GOG3I-k3AFlGlni%4%)ruj7}iQ zQj3aRRL8tcRbt;wK#089M?JLWl6!CzQ(|Pxtcl?E{v+q;t6KK?y#f^|<>48_i;@js zfdq`WQyv3ac4iGiRbX2v(*dZ8{MB-j?LCsvj9aU#t9yL~@q^!uLesEadvX-^n$F98 zMs*bIDn1}xuFp#=Xa<;(<32{kK9P0*ASHjsN1SY&!`n25mWY>v2Gn;Ii!^J(9u)B) zFMs+gMfBYOP~uwA$^)1XZfbT1=h==+8^BWNLmwtc7i*3yUm@CpwGlNq5Ys93uB?pe z8Ho)Yt-C8^jx$VC#np;0qK#{(WRmbZbnGp5lQ`;h zkF}izFcgQ`CU8aG!)N&7u_Z_7{b7DLHX>81t010zv3HgI+3^$OmRkGuw}9jhZPRaG z;I@ri$^p->84c_&*%&7Fiun&8$Ig(U*{R5(+TSD=zL1|#-OSNKK-i4>o)yD~N0zzF z$7b*Ko8*|TI!f0=Y{@nTD+7PFNx<67uND4)&YA#w>7wM~j#}w2BQ?l@EA*2t5ow|k zkB*ReTp~k;r`%%lUftEkhI#wz3;+sK0)+zt_n023)t`favi4cTrfvgzZckg&ZaIxS zaEgi7?ZiqR!|Gr~fw$_k=JS~ik=;9htp3`ztbWT*h5GsPmOQ={`}T6#+YKG-5BIQkAdJ3AP*Jq56&{JLJ?y2;5& zuVsCQaK$!TBhaTxwCE{&%G^d;AAcedFy61iWX{<-^KmwW#{XgOJ;Rzzx4v&hv4DsL zL`2G15u`Wih$2cy2)&5(8hS5+f{kJsdhZe-^cD!AD7`}n5CQ_y3897(0?*0p8E3qo z`*`<$zPz9Iw|J0pd0l5&=UTu2f2ADF2RfZ=kX+3odmjnT_Hr7Ugwu0SWo4SX+v1%1(LgZR5#l8(~Rb{M2DiT>n8<>%%EQJ}upT`q+-PNhpe*Mg~8I z#PVypb%`ox$Ocnc;2xr#5-s0HahZWqoLLvcy4l{>)8Q1d3sx0j*0QoenmKDIE|*3| zWG;Gzk$Pr<)Cq4GZM zp6-NQU0q;!gUgi`lKHo`w9D>ARgb)OAMbr^PN6C4b zf1faCI}*s>G#HnUE#<>c3>BHCaee{;T32b9mg~X@#MLc(Qp?r+rlHs2Nsxapgvl;D zpuqydNi&4Um0*gKzxJJu+9VP2C1=F-l9mde65PPtx>{y*vEfMk=W|1;Z1&6xR>dYg zk1O&^^z;x+~A=9kJ2%$uB> zyY?+l9Vg~?*D^2JJR7^B=dKyb@sdo^_}!J5JeYQs2J;`-#<34l>`H$ZcUv~IE_9w& z(5-qNY|TWY0a*RE(%O5PUrbTCB*m%$&Hj0tdk)=6l3AO2>R_?A9vt=NG@!{~E(0d$ zvFCL--lg5=s!q#IMT*--8492lIWx2M<7}H?*oT{2@b4QN)s+N~&{ zwLB2XncucuH1)9Yec&aUH~xFQ^514$So6k{WpI9?|DCsjCotHrY$7mOR7M+Y>DKuXL`oLWNRS8eEF;FjrLc$|Nbv8v&e(SDVE{2`Ehj}HT(lP3Sr2;e#Y zan_ub7{=oBolbXnWL+SV15=+R~(txYjtiLd_lK2x>ZXl+TLyG8i(Y-?*m zqTP8|@`1Lo*Ee?+!4>5c0Ar@1=(XgebJLRo#t5@dU%Hfx2N-*A&E4Tqio4q!wtp@4 zVIM)YP~vnCrQ#?5|6qF$y7s{)FK#eRjv7T;7_C~@9j_I-jBU0sPyQg!;;jRpbFbp$ zwJK|i7s;D$kJ5$fW&ZXJ#>hCP!sWQ6ndJ9^kaPQhE8hPAS?2{TR6czSsL~aDb>VR@ zWFwCva-kRkK%Hw&pT6{ca?pCd>EwA+)qfPRHD}HTe zKm?1;0=*Hv*s|AmNmHS(AOYvYBDHSxQb{9QDbme0zame{g@WfQwbjsC$ocDbSe|X~ z+B3BdDYoL;x3Onz>zt=T!r@m-4F=kb6A8d2M7JDU<&qtGMc@$-3fT>-G@7VNZ~mSeh5%5Q+=7S|8zSgwP4r6m z3Fk|UCK;_w@8p3tL9xFs8q&+AR$`$%9WVDjFRp6Fw?FLqkCCItGRzmX)|#X8`8#!l z6q{MBdS%QJMQJIxHYaFj%y08emtfk&%BQZQJMZBV9vEhi8ELvt7;l`rJ+>-H*PUT| zrIA+d01Xu49Z8}z$|`=~Sp4Kk(IR)=B2YI=#I6OA&jo;jaFu@#+hHBGl*;;(2Y*4& z6ZhnJ=jpcAG7QZJMyL{xtHb`WUFNlI(}=2ua!}}v61LY<3|5FVP%aK5yfh5~+T207 z(RG*EuFV}?2LOKWMX&GbNwfX}e#cKWN3;+1n*LZUsO4}>5UIatHC&tt;-5xhwOj?F z7C(qW)EdK)%VO3e8&{twsJPQS)Q%K)-hQ)JMOFnh>&WSaFZE1by_>GW0pM62bq!S4 zpT^t%2S>Ae7pzQ8)WBMrU)1j5euCYs5Q5ck7)NHgHnEk|r@G;ZWH9yJ^Ws8Ex%nC|W z0&!tKrn<1elyR=DQJ;uWf9&|x z#MJwU(^E~NHcVk*T}=d4bud#)DdKdcK2D#;jT7Ehxs3wSOhS;oAaKX0^{DTGXglMKUR1Mt3Xo z{ayk5%ut!FcC6{~tswPl)>!$H9UC?4?Ue~Q{dmX7@%2i$tjD-CA^J6|FMAAbcR<^D zxR}3A2Plcob=~z{=$ErzDv{~8==>3P6oV+A-Q4-{++S9GZ=a6d$xhwy&EmgLf&ny1 zQ|6e+p-|I$T>uaCD*-b?JROu^4&P)ja{cJ_(pSiv2h^Nn2yX&-$TZ#aXu)%C>-pEo z)sD3#t|ViR)lvR_KZza`B5ZNxya+-omAbURO6*`#h1tG>^X!Z-&qB}rm|bCrWugsotsMTP1M^JDXMw*dxdHK_<1Y#IpN{_jgU>MqT5DQWLgL8~FQ@!p== zr9rZ@m;1o_Z^*~M$SI2q;IDQKRcUiQLg{2c;H1OzGQYC^S}ScG89zehBCGRyi$0b1 ziPgt9?3=Huprr5DP-YpPPZ7vW{R?0F|JcyJ+ff1RW1DVd!GAjP(}xe=F&|VD#cp~v zp&U7ioazsZcN4`tqADzFuLF&Vl(LYNl+i7vICg7mYpFy`j-qAn3Jw(M{lvQUO=+q| z54r=|K&E#&f25aBa%&Lluuc+na{YKi`^Nk?gNXwu?pva@F!W3;1dKVHa$ie5j@d+yq#ALOpEVY4*u#_4?GbimFctTQOrXh9r9zgNt(jw>n^n8_>5x)O z?pN+U4UuWv2)YkH@b|jQ6r!MUvm##B1{(`4w%uZi_#fr=?qVX%@}F z4jqmtP%BEi@jEyEi+zS*U-#yVK+F>!)0=f}A%`TpIeDb4*apqf+S*!_7=oT{S~4>{ zzmj8_6vY)U(w@y4a4p%77@KbEMa;(3E)}=`nCwc-um;ty$TN~yPaoq$VaYe0k1Jpo zJ!CW5L7lWlh|^I?`auARG(PQYN-v3Y(2eiOEnm&lgg+fFuIlg3Fu#2((&?;}@vd$K zM`jpr+!b9(0e3&oMU>O$CVo;Q?V)Q9+|nEbHe+$aEd7P6H=9cOCMM7JrQAQZx+$J% zH(VTrS=sd0cb`#b3`a?`JUFw9jp=`M+PlE@KL|I@tx^Dy)p_aHR&g)jm9E=8Cd1Vp z5g@$QATDD$fic#hr0j|Fu-P5xtJT3g-Njw~qNg`=w2*O}yjp0TR#okNDvLv#lRRMx zRc|Cn`c@*s-@X;nI+MqZ4=psBx~1%UHgsE{_T@?1D@XI_i`Qo9i%px)_MUnebiRqx zP)r?AUhF`7`}v@G%&_hWWHaEZG&>ttimS(y$0I4vQ`Xqa-zX0yMx0(SO{KU{{_OeU zxQvpWn%cP!4jCHfZjzG;ILT=75)TVY4@=wa1dMGgz`;mkRn;B7vmQWQ_;LE3&+srq z)Ex;5Z?1fuqK3N$g>@kdmtxSlTCtl%y^%88Y>#sYP^en8LXn9g5PQnXD?+xHk>PZn zohs~{?CG|yT}z^4ZsPVMg6o(W52GrZk2subuy>mKRiGS*?C?jt0R@?MvTW`gDY z!Lk1ZPX4b8)Z?RoTE63WLG<{aQ}qp}jHVDb?Zy9KrT+U1pF#jh2usopr~dbc*1s=@ z4Gvh*N(rTZ?`8M*FP(b~0T-O(Z6V72pR6r^eK4>RK#P-WyyyR)t`7pZ`OJmb>B_&p z=0E!MBo#35Xm5P@|8#wtK;#zvBqE zHjvISA3`GGWW#0@A)77J1B7@A$wp^?(VVU6$=t6372jAlTMVN}0)|va{CkFhSAjt{ z)aw1;zfjPL-`{JU&M?ZEc$U&j>e# z?KC@kh0QcaiQW9u60iQOpi5GZy(eH>W>4t*@`zjN8bFnQJ-+Br&*VydqK z&J77r(!IGX)a6AsKxKZ~x>n~R< zL&bhi1lnbA@F0bv>hluaFBxF9y5k$)(uV~sJf+b#1H3d>gl;_6uIoBq{Zhv0^o1;vkJLQc;nHS7;BB}TW(Cj=H}ua%NrhLqqWm} zCMV9lxwH+~pN?um&0<9DL{_{~vkEhLmPA0Iq&tpKh|+)eZqH$BzYWZ6xYh5>{K``F zQ396~lbP;V(@Q)CuTKARxi4hS9@mUik>0d_19!(EvaHml5N$_qzrUttMX5Pq^;JXl z3MJIeL~I=s#Wj;oD=k=nBF1?rVax3WA|&~HBm`H^7l;`YpB2<`Q>I@f7L?AO2!LT_ zN@U+r0Urwpr|#Fh+mw{T&@nsV%&i8ewL7=tFRF_1QAT`vz`;&o0HvH(%Gmc`L46pI zZoc}55c#i!`VIAGn{AO6gQ2mH(6d&*%+n(jt>qUX+9ZF)da z-gAn*MJrQ*UZdPVZ(0D7wdi3jtx;fPxc>csWhLBnq}1A?KRF<7jegQ&8u2ZJ08~ik z<@Pw6ce75~8Txo(G~J1_A?r0CDff~;-BgT22)868-m;DN+0Zj$t>&1WZ->h*4X*F{ zX0sNzE_+2|jff-TWwz17?e2^QI=K`R7h0U@?h?gR_1Owo zo`nKkqE`l&Se?)V|+ch&0j3i>C% zy_Yu-k7YJiDX8ce?B4hR4mgVN+qVCFzJYX?)EFKN=Zk3rT1X>Jvz2aeqUYD807r3P zw}YKK)}1Hlr*7T%D!InSb(2ZBqb;oi)WzVnN`AAKd@I7*l%W42AESv71BHQI>MDmp`f1Iz1sin{iWFCTS~kan^bu} z-%@_3Gah)doDZieH9U8jF5Fr9erU9@Z|hy%;;&eYExdYgsbbvU!TIYHV3;~qQX6aP z9)U7Z2VXNY6QAU5Rl23a>8!oleJODrOSH!-FAC>(n!ILRj-Y1haoXE%jFWBG-*C zTQ~V_Mp^^623_F#w6j=%sv%1q1X1tVjv8{lXW$XWmO}*&S>QX-Ec|X*Y9CjUZk7^b zf3~r)2H)#?S3}MRug~xuEbn6IhI8Kx7n-D_hD}t@2nF0Vv;iLF%VEF*GTwST6)8%r zoZ9mmtt*~x@6@>d$WxUEF?X#bIse|yLVH0BMn1y5#IqpSrCYq)^+44_`c)jx1&)^# zwX5{t5-i;cN>!DZ5VbYkIx|P0d{ls((If1qIUyY2l?xmJ)mLUmK!&b^3Am9xLhZ&e zq``pZ-2+$Q(BEX>wFwzRHg$3ybW4*)#VvtaDnMr4_aYjCkypXn4hw!0-_SS#8$>Oaf;}>0Di)ypKO~{!m zbcjm$(cq$u^|_Sh&cKr_m&J_TD$o~R52xt3(#uj# zj`?gEu7Cah+kP<$doIbAfFvdDd_R!l1%7Zsol686L(XX;4&%GJGdp%SJJCJP8jUE6 zmz#IgR%ygp{LiG>!-}*M08_TuO0e}A_ao)&yM3LK^uRH%8mPKn1?($-c9Or|*HW<8#pM>% zw6SI@IC2Y$nXj4k&rT|KYzmKhKHd6U<268ECT>Z!eDgwzez8>%H2qnE{w;6pzRJ*1 z-0ViW54P8^`owLyGwqtBbdJx){yUkB+dYlv`!^qMwV4P%`$AIRaEmvw5P!ZDquTL+ zR%%XlLHe1DZ2J!NSH>2?qH=W>W^3vgD-Et)#5ka_23imalKruuy~57=jYaQu?G~9N zAdhZ$aTfk1?;89>W}@mXQU5D2nQ3#a$VGoK0lEuYlwZ^+bkG7}V)1vH=^XyOX z?0dr4aGNRzxlY86@r%JtKkN9ZaH7Skv3^?pMWC_7U?};=MS|DIYt@`HUf0w1cP2=L z>kTfjmVq&?7LD(=GX#N}Bk>$CJQ6det~j%2y*l}AFOpqw0N7Wg*Y$}pUGQ$zBD$cz zJ5=vn64(vHkk3V-)KpF^t;&f&xHP^s0ywdQR=g`o2&+_H51U*0F3;*ucRop@vKV_B z*8xwg?ocFN0ReX{CUVXVV=zVV>CaN$Q|?OO6X-vZ2xrpf%LNtjEWOQz{k36ccAJ7o z7rUEfrM9&(UR#MCewL7Div!jkXnu&O?Woz7RP)G;>9Lc$pMUg#5T&F~>*5~jfFvDI z!}PdG6hodOiZAn;HifRrS~}ovCp#D8+-+S7XkO&_S-i}@jdfX&H3M+U+f&^+x%2DX z_r^5~A*Wu>8Z>KQPduV`{Jp9n0G1$XzDCzyf>8WrX)>`6@1eo zbR}dng2GV*=Uj5fo|9Ti)c2JK(rOR5eOtn`3nqfOHzgh@q8tv&jcrba%mVh#;sLy@ zGc;CUZ^bCY{K2Cy7mQZ+Bth)O^k(TCza{a}^wwsUO=%m4PDxQ#)26MGHDZ{l(Sa^Z60S<{a#IR zkL@4l)N_x^Wp0w{OZ+us9pdsgn0X#&^YG78E1zU`w<`8{x%t}*nWGogtRCL4dZuwt z1^0mCO=i}+gI>eL+N~~ee@~VBNk_NNu2iGNw?91S_$be84oB=!L7925FZx!6^D+t{ z#UrV&S)QwiZVtRzW-4>wx$HK1+Ne^sd%OtJ+9g4@20hkKDrN z4rR|AA7k`EsjP##Tbf|+fRNmO_Cm$*1!7rIsL{}4+#Ye&Edynn7_sy`$%iP4&75x^ zt3}xt#436lPbPX$PHc#&u@g1~y5G!Q7&5-UTW1_E6926{E>`cg3Nvy&LFx{c_8Y#e zuLM)Izjl(<`^&r=QFLtmrCkp>&!sPf%y{8y&yLT+u;sO&qG)5U;GM5YD1d10*gk0z zCHTx|mg`SkS8CVd>KwLAnr76lC}?aisOhWTn)8OtL2!!>H z!kl;pS-QtpEvr8*k0Gn$aRD7&n=?EeGPS2O5~qE!5=_6^!%)FrAne0{IRVtFv;_LF ztPpykN7=SsGGdAGpW~ZO;wYIFhRoOLuhi|Yq@URcD4s_tb9tVuV*!KrDJ9(nMi6#- z@sTY*MexN^Q> zcl+49tgT>&%K5A_6QULVltu0zUamLn^{S z(>_nPr1YH`?CvZDWOtIF53Mmd3;^?;@73ow-7RTelFhcqmcM6wv&PWU^a25MwI>mo z9eCR#7AOP|u#5(cg+865s+dnsU4}QM$z=6%J3Yd0-UCAEgZGeq$z8G3@9!vOKT8zB zoiKPgAqveP%cs^%g-eh5z}j9046(rmhr3QZLA!Em4Hrhn8HpSFuLgVJBejv-vh;&b z`@OVYK$KJEaovJlxN*V#M?M8k6QYtB;oae9(M%$%vu`avljHA{WbF`^15`sWSwY_x zf(E^gW72)PrHKC7a79B;m8lSE(QES)Ro~rljz&h%fFY`u<%D(xdgYh55Ec$(Fkdkp z_k5&Y7PyG~CXR{Mk80k#m_lK=KU`w|&lQfnj$(bbqs)*x|6SGVNDggbF1?C(o>Rgz z9ZJ9M=;uz+f3a`mqUTt)eBfM!s>@h5XpiEw6+8?$pK8b)JsvEO7T=VsFz}LA+U}*W z(6w8fS2MZKqUktxr=yLPiqgJao8glSjfH|n22uKf91!SJdQrDwol>0<`4y^%%86_7 z*wQtjMX=ym#bqJ37Mf9o9eav{s{FTNX0=3_c`JHhjL$P|}DE<0ic z@G0oMc`B70ePfJ&3Fcdbuv*3S8@^fJe~&}RLgt>{?-V{+z6zVSj)Qwacn!*IA{nLZ zDn$xpt?=TdTe49g9A0mlPi_jko_l5YB30cBidSyM+dh)FXAJ@y=d|*7mt8WJ(+ph- z(4eedt!@E2Z;go#5xcbl5>61g^#<g&3Fw+Tfa$%Dmr+Jg`B8m&?khXb6?Yn9{+B3g^1~(tq zrl65o27>6V^7QFaf~pkx_Z)qmDJgSvq?af(4HFON!ys7tg#^D~TWaA33`haXt~Jg} zi0O@(#6_-3iN>AlAcYbzI?VCQ((x?tFx9r>;(;2zgv?zihCu$Wl!PdQ+C4ZDPoaV< zYl2Zo`7|l-zpJFStJiTXojAmNah}26zyv*bX&Ejo6tI4HbJ1W6vRmgg`)%7HW zz!$N24sF1J+8SxUKq<#QKP$P!3q1?*bP0^RXutJ>TZchM!uTY_P!SgfBd?HY$0B5f z@U7#)fK<(~e?aZJk^!ZD*UXwB%Qp$@Fdy(-Aw$34|Lbm9&APYSQn54G6 z>$06zp3X$@tYAqK=Mh*N)WxEEH5xi1m_PDejI>`$eM&pW;Et;_y#?Otz(0=Hzox=> z1%%v}h19a$@n87fN}`1~u3-Fg>ARnw;wj4iF=p`A2nu}aS3J@bB4PWEjxwnh7&$1f zBSXS%yL+4%{h_tccE7+-kIm8XTl&AwSE^E(n&rS#-Sl%B&0YV*`(%EjXSaE9GB$Wl zGjlnm@hn${e2W9<1R-&hQozU`58+Wt+ZhNmI;bY_fryW<-G1&zRJ?=m!ZM$j;Ot<| zs+&NLMcKEIIE7&~_2M{0+mf3~_ZxH-*)b4h91zC(No={&6nP|3Yi;5rYurmaISxwi zCf~gx)R?IqeMZn=+z7WEiT3id!!0-fLzl-0a)Vpx9}~}twRH85e^Kl*6QX>T=wCfut-krE`*fjKV^h^i z0t>Wu;*r4GH}&8wkEn+QB9H@DuDo{%@md^A6Qdn)kqQTvbyX0h{$Gpq3yK8<1b6*a z*&02kniuz(5T{>qgEAM68@zGYs~Bg*1RFY*!Bi?dCu9-MG-mbarn5x}t3u{}MLwIYpSWI?H#|!0ZW8shAdo{yinEjL@|TV2zoTspl z^>tgMsW>bzQJm53V9InbBLsX8m?2{KZKH-?l=vrk?OMAGPq+H`HIKOSH{JF|4*N%c zE)pG7e@y9)In9-EvJOnMzcRgtbY<&>o{F{&6D6JglcM$`Wz_Ls@BMRY2K9^^r{@lg z@~8I3ZHw@Ta8RG|36as&ub*E4?lH9PUsulG(mBsQCuP3!lBsRH%+gg7@`<6d_m7Z|rUl zavdyrYJXf1n7pIUxQws378GhKwcA4N6U^c({HUuK=T+?voOrwqzr!Z=3n@80fYZ=c zVf7_f2Ml&uw4~29@ykL&T*JH10Xt~wC}F#SmW_FAGn4d0c5*1f%?+cne(CLNWDWg~ zRq1++bB*%stmwgPG7j=R>aN~ZsK|qC(AcPfsQ^=s7)%tK7AasFXy-T zIO0^7S75OfP!WCm$LzZH*l_$l%m)1g8zOzp?>lJB_m(A+(CucA&e!h7(i-Yt3`mNZ z_Ok)tctt4UHFAoGMNT}h`vO*Q8RE%lId)$CcUaUP<=b z&Dlb1$=~2r0}>G^ccM#TNtrEXWRVT;o3p4D%na$Zf8dR-yTnDiG83_H2@a}8Zf$d` zRL)gL;=8I~bTe8m_t7Vagpyo1vT3}-uwvWbKE5mVvUbB;Lek!h-Bg?BC~q-v|&s zle(f_qlHkih872Lu?Flpb?8FQca(w6YMVY|^d7#s|FFg5F_)=E7Kk-rXey$ecfKV( zoSziMlWgMa5H^I>I^qU6JzS%M!HU!H+VrEN^@X>@wJB9*c`C;WcS^(^7NFIfGF5J0 zsE4B;A?K1VeQ8dw&N9p$xnsx#w){6$0SiQzhF7Q0_b&#!PGe{4jv?W)w9=EO0*ojX z>HGTJB5k+|y1m|C;@Ue>z@g$#MpwpUP(l1QCgjg=vEkC`99$!RlsZOp%X>p+#N0#A zG;d@FbHVG_cNI;P@*M!erw(!t>CEjMVu1n7F{lo+8Tp1gnR1XWqx^7vBlF7J@n zFKZZ^B}Fbi{%R4dn;GPty0p6be%ZN>Q0QJz(}r)_V_Z#?A*sUT*g>4`kZTh-oZ6he z>b-4Z0cghcvm83XDiCCs z>vC9z>~8YE0@XO*uX1nV)tg!GKKv_(N6j%z%7F>v*{UK`Hp=m0Xm(HG{gW z*Hvg-*2zYr1>v=~_g{9-m-`F{(n>D5nOBeKwHqwfOcu9?H9WL|b!Brqd`1W1IHiOd z+!@7p-FRBEsf-Ayt=g)*@yyl{%|46<5U%v6%hN)URLq9H6LK@4S0^#A^x%Dd6@?Dc zJIR)YN1y~Rdb(Ue`08|!B$Zh!8dByGNyRzraK8+GRyZM2SLAEG8^e!@J&9QuVvx{> z!wevgornSWe~(YtqPKC8Z}853HK8M41ZUSJx_);Z?Bkt_QDb8ot||s^;P&1ko1p%& z%3+1@iRXxgJSG%FW*-!gKO;Q0RKwr|pn+;SCSpTzBTTX>@|z`s3C=RZQ(q|rXdn;0$0cJo+2%#RHwd1 zglE?sb^dA7`^Uy8bB&@1apdV{)deC`fZ#6!=}2G={THK>kXY!ks|T-K4=R=-GP9mk zS$I`HumeZXPuzvJv&-+C4w}BOXaiYZ|Ki>{k~iL61~Mn+zFPK%ouVyGz_vPf@x5sLZ0% zd27qGFkTV*vT9q^C~^HelHK#(VP0+*v^W8=^c|?{hVAux(2c^boxnhsEEi32fIl%#T}P8^u$+GK>9@9rdU+(fq2eMX!GfRwG69Jhb#Lby zOM}6NCSP2-by@bTzNLH9^z>#Hd2v5^d4>c<30=IMDxo!E>aF%RhOR2shr4ct` z`&$2i*6S-4oP*Z-aBJ50!)&p(u>H-AlJ1yz`*X^HSvrT^#J(SjJ)u+@>SPsx;>AR>To+BIav=t&X>K20UTXdQS|4cR=WeeJ%Q>$Y)kQ`4p4?MKMzGD){#*pWoNXl}zjs$lcBC?ULE zbQ~x{mN9JD^%UL@vA^x|3UO)BANI*eEA%C9=N7_1rOV6F$7GhXk`|JiX_#AYYiOaj zoafTTm#i5)BA55UsDw!bJx7MyZ_Kugl(A(2 z1raQGE-Bw3M*-LE!n^j@?W%jH*4DiH%iSFIw|ZXAOh+3D^Nfs(_bOxdUlRA1VIL6l zt(9Y=2+t1Iz-#4S7f?GT^8=$Wg%F;Kac@0P>mie z=r8kPL(h?MY+auj~|sY%hO&B!1q%iCf40=$2V zDlS)u4>C0gOaxhjHgg6;$5e(cb)D%Q_3O&{dS%Z$jh;2-l1AK!enM{fNYL_>M+uVS zJbfl|!P)fn^{z6SQq8iN)+KIX5u#|N3IwfZ!pY!JdjBD%^M;g}s1N=NQ+J+$c)eTJ zuH*fCvkOT&gqw?3>C3iaiiK-*di}%CpP8C&^6K%kn0^;&G1WvfMpnk=S`*G!c|qI5 zrr7NkH6Ocv1JMc2Wl<=%5VqV&HQf93@CbULYaTQ#3q|hm zBzt_4*}NsX&&#k?Q3T(Si5|V)U0rr~Kp%A_(~O-!D`z7z!yub?2*h_>|4LyL&Yt>V z)Y&Ilr*@#LVdbzI6r6hCggtiZ-cSCWt^4=}R})BbmrYbLX1OB~S><>wfeI8l((+_; z$eN+dcodDTd3z)^Q|JFYZAsAeM9)W^M5w#QYq^Ojryu@gu(}L7wA=w_b7|NCMkvD7 zAlzp}EiWdyT$cEkIoAhy!1@=TMvg?y44kYq8TV|P;m|$v6M|(sdX!Agv@wAl8BK#I zraKr}pZcNsoq(!%1y5`6H!x1+4gFP+u%?!hk*~ly_}q_?!_EixO)HWrOx(vpEjHUAx(1(y|K_(o-AQ@p`uWzL z85sX2ae~lCLI|_T<-o-eyWC5!%5+%!UUjzr&zmuNo?RbqH}}pIT!*X0qr?9!rP4DH z$)5KC2XctO+}qzYli#aN{E1e19WL(FT^y8BAln-%m8V>qqhG{Nly(OUVX^eY_y+}7 z!;YUmf*FVxwW4ql6upH)XuO-+xfZD;Oti{6~|<13=g<}`l< zj9wfmTlpaRu+$nJyXbB=K4D*NRg{)hj2}~p^x45hWoN$(`(udQc#>jO^!$n5#oWUa z8dZqQ$7^yOXi(<@i~Iub}ik%=5z9=a=xih0|9gusN$VH*9nR))z_S@&3 zjGoArOUGpJds*7y%`CNQ2WAbF`gPb=2nQeNU-{Qe3aq&Zx-j^U*@yl)zF)`~0OrHV ztMAsrOY9xgUfg`bG^Z9X%@WgxUEzPQ9U!cR-O5hh4ZGrfA0bE05J$5(*lds^B{;~y za;o>+jpr19rgAetA>NahTrnP6tNB4!qYkL-+%yTDXWq^Kk2w5~fBJ;h8ToX4v{;wv zAA6B-#bX|H!W^Qt5sxF5PoAErs?_{jJyU#Bt<_yL3struqTQQTggQ1U>$=Nyn4|dD z7Xy5Bmvp;#C1G8yN2T3L_sTzW%RjZHJ_vBQyQf_z9dM9nU6EgASHW_LCU@Xuy@vlzFzqW-D!!wC-pi*?o(&QNF2E!h{5q(5t^duh z{dlq}?P)(&oN3*cr#s5Q?xfXynU zcOn!2O?$eDsu;n)%QkD8Y$fLsYw1!^_@5}D3vB^>AcbxZwg*0F+FCpVFs%R~Mnrx^nVa)|Qtzgu+3NKpw|4|e>1M_<^L zHtJyYBxFt&Y`%Y9WiUj>_`(~EkE~XN;$oi|s5kr_L;ifV^p-+y>+8#KkB;{Ych4jm zlv=6xXBk%aSpQ?eZ3zez#*f4in*5j%*I}}lG)VhD|4#M!MeWrTl>Mh+Wh4S=T)siu zpP{Rvk)sgV@U_17ALfhz9MyvBn3Ve%o85U1gXG!}0n9Axau?vNg6+`-g(OnJFcd{r z0;L}6&RXb5X{+66W$%)`^g)5m!GT7`ge5EI9cu7!YBGY~7`~5(66Em|KsR z+hb>NJY{OYT~cYjFSDey#$u509vqdk4{8ChAYJ z2x{C?B?h@bYspb}j8j)$c{cg4y=B~9xz5slJwnoEg#MGPpnipe5QDK}s&2J={-I>n zYXaoaIVxk879CX$$H$2WD2CxhnLu{A#L=;5$&Vyu&{z)1gq{bq^~?EyEy+jsYo7HJ#PO>4slz{?qE5(! zaB81O!n0^P!a+n)EzkSv=X_CPqXh8C&#yxh z%vj%3c*7R-$M+4tF(`b_Z{PiE69DauDd}!7Nmvy!+<2dKi6{}-zztuBq&O}|9N}DY zq+YI+L6<+@(Rp>qBJ+bwMCMqbPPulvVa%^Isol&-takT;M{?kkp|#aZQlXcn8uIij z1~v24dJVjH%wv~*YVmed4xT(DZw*R5$~lGTJD-E(V@4m009Rhdjcqo4v|Y3)sJwR+ zH8V$#($EE!(T`_WqM~=ay4O9fHPuCdU`3^MnGpM|F8`|(=@ndj@G<3AC<>2C{fxaj zlqGXw;&3!YBVea&(KdsR=a^_s+WG$m_t^-?Cn2f*x_aRZD&V_8L9o5Pzi-RA7OtZVHx$jtpa!F2COk8I>^NQR-ZB>2`D%4a8Q@l( z-=YmZS<_2XW)oFtIUROL$-Wx9hsZcXa)1M!l1*Q!buGR*31LE6?|OECV@N^Ab&Bag zLG4=;w03_aKIfxf#4}YpZ22-gMJw%Leg06u=xQ?)`O7?_mbhTsQJSMs;@3te=AI9L z^wDQo5eR7%5JBwwW+!`PiB1o&Jep`s6nBqPh~#9%MNsPj6|DcG0p)KN*l{nNT%&Z0 zA*(;)w|^~9bTWYp#CBQ}T;&2((r-I&q2cd=!bY7}j=a$k$JakchV9vn>~D-`jVROx z#58rr#THMu&CD(r+W)mUZm@ym-l~1Z(#MXP+hGM0uWXiEu7Dwa@dGI3o{{#ppZs-7aaEw? z0`QL$-*?o0P5QjpX@A=@%qD@NTbN?%}x^{fy==h%KAHnRkre^Onks-8@ zANdhYr^i%nxR8F!2xcPKd4gFct6A%p;gac{nD7NX$)`1x+iE7#Bg~I2p{^VO8X~6PSRxo z$|KTiBKYGB(qnA3fr=VGJ_`$VBPDvo9MdZg9ZLRw(F;kQiJu9cHC~Z*bcmy%jW%}6 zv>vZTGSTl=T6A7npKSSfh|7n@`1jPGjQ5W=jKhEUNIdxVG5v5;?MN=S{J`W;)BA-= zT_ql2OWrH#R(^YddmYsqc;ju(z{)Km7`-ZRp`p zOd|HZ=lKI$)>k=bA&106%iZyNP7Z9`ZnIicU zao2q4SCgP+hH`_Y$h-ufF)ybACg{v@a11uCv`Y1mbXy(;H>RUx26RItV$=%!{an_$ zM4ItWg)3P^TRi|qxL-!ly0p04y0AG@e!Jormc`ea zHJuq<<3wda&HLTqGp1h=etbgp&>#`0^&u!{ayty8>*1p;r zmsPgq(-TH5b;39oAq~EO8;17ZnPzZ-9vmGb9FxS5t0w*FJ8vR=e462l^Rd~2WT$;47z1f zR!+?w`#xNbEt%8GaW?Nq7-HvoCFJXTrDi^>1;cUSw9MV09C;XwgVU56fcoG1tLb#Q zC->H!m{k~p9&O%@zs*S+tkl)u3C+fL@A^HOi$2#dsGVh}3#iux)Sr8mv%U;k?RMtt z8$nnOFs$RQMe%8pQR!Myx|~2&-d?9Zig?A z0RP()bTwB17(dp3|G|lPt$h9JCl+w>f%5p6-`?!u{{1mvNNQW)=Dn4%YC(zyJ4(331xZ=K zP##w31d9;@e6o@*DL@NTnuK+z{kFHEq4&Kn3}ZTVE3C8d{PjtrWGXzsr5qiL&NTKm zFIx1J(~tQ)UpXhj(U{(~^&$0va>>RKE5{H<;=#POfxE7wX2?WbIX{`2C;Xic@V9*@ zAR8&zEk-^gy+?1U1^vWPGVdMc9~Q7ue{yCuFrvx8z@+dG`oFx-uUKCNH;EifCwMuG zGjQuX^JGz>k!FobkB0}OFL&VT=NJ?Fn`%~}pF*6_{V@4NRK&-1)17XY-n z?`J6eURvkMzxM~$_9sD+LE}_WnHbW}tZr4K$2XnsV&0FdG-ED>)n*K$iaf7a zaww^fBf2eew5XcvIFbvrYDvQlii-)4Bwu?dP|hldEx4!-yA=x{HEL)srYt$7Rr)Ub zAJ`J!p5~h~IOszASNiUr#?ZOTGol<)%S1@WSg|ew z_WaCMZ1Zs9XF#swLWjX%CwrDXh_cH`z3=5^Phkn~(K>?L(D$rl>e=ssy4yRt; zmvs;I;aKzetoe?eOE&Trsn9uB#Ts19jT1}u8M`wFhn zgX|Rp=rw8Ib^30(B0MQ$Qtt^*lq{lwIrZlF8n|#n4Je=b7nM&+u>@gAR#|{d$pcKQ zhtw1UY{W?!HIavqcXl;nNna-YrC;c}Y)f=HMTl&(j<4n@bKb|D9^I}+tV`2$KxnhV zRBPyH!+b|6%-0;(3k(n~V&}UbH9tGj>)sfwO4f6*_tHV^9rq4w*{Z+MkB3?z-Oe9PWsiqZ=4x-goquh7@w+ z&^edy=Fh z_yK*%wrtQ-^j-aQW%;o)5}{45gE7qo7;8@A`8bWk#4J&S9Ktm6bE1%iVii3~@iMB0 zEcjp?s=cA!GV-aM&UG))M{Mp+g3^F3Q<{^ zx^djUUb<~iMS^=uk*cctMnHXES+lre%eP}HM0dvtV?4JW%Vy_Z9%0MWAZY(G>W{L~ zds*>-N-g<}NMOvx8@uTB$`M6$y-_&ybr!1*VTtgWv<^?2q8;L+-DW7JB|WtDIU#AC z+Zd1L+n@x12WB*|Jvp*rV4p`^jEi)k$^S4f5X=-3anJt#MDs6wq4m`)+paC065UBd zzZBai$aT{p%FSt*jxWG8p2E`earl0$YRsXor|NZaG_)Kkv~!5o4@hCE)|KU9#{ko} z66%lEJ>isOw!@VP%DW2kV@LHV9+I!$q?J|E$OUU&Q=Il%KH8$eR{E6H071dCT_au< z5nx>cJO4&)^h$V-mDZ|hmC%&%FvYq-P|kcrKy)YY;6i;Ml^aPk*gaQN0YAppyKLvb z$swFq+W9DoUZy zTp8Do8L6Z8!OL|P@&I?Qajc+l7H9x=iLF3>xK%Z}ky`=RK^Z{5xWSM@kNcF*{(Qtx zm>NJOE9$G}*p|8m`=IK3+^-rJ+>jA#jJZw3optHM;j?~G_=9Uaz_>zpKfgt>?Ox7D z*!h?3`2p%|8fT_1wt@x-*mlYmSlv?&owr)u67nmxd~8dvVPm`DQN5r#U$S7NrlIeo zmk1D!k!h@sRz=Y8fdjZj5LJSM8Z9mZ_uV%gI}=1N&cGtoWf6cS;PrN-}*q>nYS zIC%B_x6?lg{wi8tt1j^0VL|E_+YF5j3%YDto=x>+ux)t}towRS*E-%=>12;bb-u5C zTI6v`8INg5XU)m)`II>r0;+bMKS4yuF7QGV^`i+h z&~SM`<51sC3b)D*bh@xb_;V=zMZZu@?wMqg`Q8UgRjsM$CV`&{C5wV8N2@ZF)HIN; z2t%qnq6M~WUUk+!g!ecUNT1dpEiZzdHwLqg5j^TWM08;^X-QFpUA4Q()maH4fKF%i%S9Q7Jz6Da%Cnt>V#du8lla!|g27SsIK=o)AFXc!pm+&xNv} z+JW?{Jb^Fkf_ZhP;}=-({Y?evmg&b(WBHP1R`o*jAKBL4;ERH%-pnONF&Nxx)+FQ( zdQ;?$0rctWT3m_El^FfqZzJU#Ki1-8j~60;+OTo!+F?jBbRP>X^D&?5FK^%aFxI$T z3;=j$`yCCvzvejq=DcUhz&BmJ6YeMfW=95~9Kw{roE@&rMQ>LI`F-l4zx-}C#|LgG zQw@hsL6TbBfQ0SRMsrMlr7x8{Ir(sYt`6SQ<0|GxUG#d}F=A^&_r|L#L)#-s^(^9Q zKuG>H0NA)w=Pcy_4n8$)=KoJuNW6!L1;55>WZPkEgJvamv*vqN^F^WmlrU1=I@9

U3tji2R$TLg-2Pmk?`XgRg!aw-afev4T4?7prI{+z@!r)Y zS>L@ru@K3}y*ayQ-K-c@)U~v%36elHN%7g~>Q6$5^f;x>U%iI-QjCX)?gi1u4ILtP zU~LajRW=hvxYl|=-q5&hm*oxt((lXsQizGYi5q|_xAhfWPh0~X`H5{Q;_6z#^&JS0 zaN2Uqj?u}^1Klc=`9Rb}IRBcDHq1-@wW93!fnWgCR-LERGwkN3&4T}rs~tC_I?I0E z9{IE?fV!LQ`wwAedPNeLEU|Vqc4h*gejOoq^AU5vxxb3L1e9n#h)u7T!2F4EZhp~^ zTDz~4Qu1{xZpt-B*m=3AR(+xz?19_DzUdQhJyv*H5^wZo8VTwFSbW8V+Y0${Nd9wGc^(X-TFi1kY}!a^u+aYVXfja;` z+>-A#>V-k`L3IaSQ;pANbK926$uj~)TGK09x<-ZId&eX}bW#xys6}L3;Z=6Q@tH{w z)u(d#SSi>~H|+cs)Y~%ANcAsa1~cm7!zXjIvm2YUm+OLR#WG7W)Y$j$m)N;iQnpj1 ztA=SZ%E#vFfus)No@vXF;x@%rQ)0L2a7_R@mfJFp_A{FX4)&+#zN1IWkZN4?o0Vx? zPl^eZIaP@sE%}Xt2P;=l`?~jr4)%@UQPFmYD0MO?a~tvfQ8cy<1SfBsWsJQdQL+T@ z!Qe1vUyBVXpV#U=WLMJYj+d1?!I69v6RW`i${Z7!%fO>M^c_tp^u0g9k>&~ycO~uW zss1KVQeWu`qypiwr!VE_M>~#XeYY={mlZoqC0uPxUVS`6eYGSC@%-5P{q}Uj@)TN2 zr^=o-S-+8E?p9IsZjx>ZYoFOTKy}{;zG{{Hpi@)d z`uRxSK>agtkPw1c@7+5Gaex~Vb3NlGSsBpBBk<5GQ@>#qp$V=E|A)T^wIi%_WeTNY|ndBwae*#MWQ?1vv7 zUOWMf#)n+!g^*B%Mq|fzk9mt{qqX7ldN+36T)7V#4*a#VEi#Hj-1XZWS)C5ZM2$v; zg_`rmhK8=yQxkT2k+f92wy>Mqb)CXu*4dvaFY$Fn#X5coxz&gbjiop_HP*QOJ03JwMdZ9mFZ=?3K}B zRxTED1TJO)33gdnuQr5-ppMHKe|gvy`q^;5$7xcAdNm=o4MJ58_)k<^<$<_=UPQf7wvuM_Zn17KUD$YW4;Z3CRq`}Q zv(a3hdjm~vu*yCI)5)uMm9OlU?=1M466pSS?*^!-nGmo@^PcQUTrP4C2#y>Iqo+SX zv=j4Iv@I}{i1UOkf62ShFUiZYhYlxmf-k41G_E{Ph61!9&nOxrwcu?|t}PdlReG5V zvaxa-tS^R6+m=<|q<7+x@}@;zw8O4uFa}5Ix(@Y|L_@#MoD?R&glDzM27rptiAz(@ z_W>;*MfF>Gm&dxT4U<1L%vE<^vawSmbTz8ui##{R3oT~6G3-dneU}}J;r4geEb_~B z^_1;68vB==Fn-obvJ^-$@%%E+fh=jYU zpLVO09G-JFA43YhiNE>DpCmJrEf*Nrja1s?p_Hka2qk~M6lK=?Fg34-JlI1KfRO_( zX?nIfQYLky9xis(D%P&5u=SO#*#>ostb}wmZtgF2R0gQO=!3zU^-e!@5&*DsFqWs6 zc^VXNsXC~DY7F7Adv#UPUu2a;SnDcyIQV0u$Ch?4xA1;Spvyn^5Ad{B(hgbxn>?~J zEDNYS=qP058O0~JxE6pl!ful6z71BlI%bw4&X*OanE`0xr^a#llVra4tL<o#uvfW7mcP4$U#O49+4?Wc64Lxz#m@mPp`m4FS&&jGh_> zU_|*}v&giCpB}Kht`uoZG*Z#HSN;vyTgJk^8fECd$sx(+RDxRy%X>``r6pFdsEA^A zVA`_m@lmep@>|uMnz&+}1fZzeNz~`dzijHfz|Mzh$h7etYJGF*Ow6z7`Z;L?{%HgG z(( zo$e&U$etJ5rLLg2{*E}1yAOs^6At+BZQEcnIvxT_XHTw9c;p=}H+0dewx9Jy^8SPB z`@2I#L2^S~r+52mA+ybrFtxx-#Wgt5@)!TpUr0Rlpk8aU(3>W(wfu$T_~1DmZ6vz} zMj=J+AdWpkGN9Y`V5I|E8{fB8`v0VQ16rS!a_?&QCXU%i77q87rXg_}s3Js%8;=z* zwR$(=9jhU#neu)ZjY5sFB>l0xWq4BjY9{saNHz1-zD>v;;Saeq-hP@Aan&(#baY~F zu9-!D@)|MTl`__L=bqSE7BHYJ3mP>JU#JuH!}TV03wJw(*l?XiooSMsAo-rCRnL*hddgq+HeRU zba`WE^lb9llgrUh8#YFcd|L^ae_Ts%82(!BZxEx=;9*yXs*W59?5&_EH_ma(1=6|H zgpjdITkbRSCC0$?s>=`dBou6Mp3Lz;vMlOxbuoxm)qv`);ia=7d(PKc`D%21>&;ds zn$8|B>^w#xn=j62{9J!+ddZa~LR$a~2{^`8A#*nEOO>84z@zFNQ4s4#;$GNq0Xhwr zu1?F^7EBjDd8?*O;#BOd*Owdv4fdJ8F)&8j-~&g+FF>EjtO;YCtc(`>)7yZ1I3SQc z{c2~8NV(f`-CVt;uCHD?VkYkL>Yfe#VT-;7BJZehUB9^AHIr{i1W{dnwso@3WAo!9 ziC7;IUI_GM(xVEp<=*8dT7SSSadD2T83T#6cUA!x zwlSaJga`59MyeV2@VI7yJE$${^UR~SWHjiHLwUC1u}Q=3zR}1d91uGE%>3fnRq$4| z{nk{~j4j@TjAxGR5iQRa+Od;%g?JfB>!9vHvOoM=X2S5!1=z`yd#o!BUBza^+BT?TfWY- z(TwV;R)p*gsm5Fr9@JYPrXv&7E=dB~?`w)|$`6ZWvS}P$5Lu{n&$EKOKA?hgzA|*P z9xe9?;$4DR5vCc4@b#%TRe6h_0upa);yKB9E+a?-*an1pvnc5Oz~_}s%G znYA3?Gf*IzR4?3box^XZ zH#T5eRpf%Y-xzr-;{LDcv`v?^b#;Wz`@#*^HCxt6hiK-k;_6wMKMx$x6QwF0p5|U9 zTtYgZ#XCS}^F_rkH(AKKl?Yr=Xk=GI6**?q8A;nX#^&M(NL?lHNj2L86|be>&uXZx zYr@Z%rhyq-Rq^MEh*w)w(vXR5rLpCK1XBf}oKPwqT?;meV#Au5d>c)5W1+nh`{nJ1 z?H9m!%}-jQC$Hxlny3s-?sDj@;yTTEZrJU3Obh2tr5kb`j_jo?_@X0vH>r%Se*Pwdu}u@>b{det1j=<{rgvLR3qoALGG5Nubr-#L-T1apyb)y-1sCS>7=cj zPU%P%A#$*(UD1Etyz@P|#Jd8=>T)gSZD2N2MJ`aaKzP*$qzk4l4tfAXst%|L^#Q_I zTZ)=g)7`cLuBw(Qor_Qc)a(^LPQJy!k2QVf#J6G`tI2()gY_=6qm6p#7Z;IAKVNt_ zi2ZU~)2+6htW8p{X@g#CRdJu}b@pFlkvbwz+cA@OSD$DgN1l6?-0{)_v-jN&>T&Jw zZKZXGiRUBD-RRW6mX1i^y?Hj()0CzG$nJb{tlN93=R|uU!qCbt~+0F(b{i|Bj{sr1A&U z2XogjNXK-81N{LobqXBjYjX3(S+|TTQyp@re&nz*yN1eos2rd)&0oAOu~>n2fqv8{ z(j2yfI0w_Y!m(eph|3=CBeTA+uGUhjIL(&>(B>auoV8rw=UE@RCGg&c5RCdP>I2F` zAD2Zb`RfxJWVlwUX+e(&F=tiJ!!*78i>t-#Z|J!a-%*=D63?r!<;doV%-?UC^) zfo1TxiTDa2=d&AXjK@yG2+3F{varG)yuD3NSJnl<2-jU*sh_`yVJ?Gqz6aVwBZRR> z{99^SGJe)h;5omBLMDjy+$x^|A6U+u$iSiAoI~&`@OGit>Gzmx$+;iKFq%8Po${n! zeceZKtH%^zXVmXoXo(gmd-Nib zE6Xq<4ld4!`%CgFMml2F_02Bj=)vE-yZO1$28S|e*X8_9J*?lNTVS z2IPBzzwPQTn+<4v#MSFtA)q0|uq*#t>)<`F!Hv2X&zs7Mdfd9;1 z`lpBBhEWY8*m|OkWC>r5JQ~by*aV}A9W-?-sks<#ctR{>=;S0HGPY?W!+u7jMY$Od zFGuQBTG|85ND601*NlRnC_q&(WFX7h_U3j2;#%U7dZ0pA9K(@Dt{~hJu}?=yBC?lF zzQB>^)hS;SH2dhGMqC^7RFpBVp0@`W4R09(1fR>oEKn7HQMS&BIByTElWzQ=ugLfr zQ=hgNB|9#zfC@yYKg29T`;FZ5hR`I%%pUsdmnC-{bTtiJV+DR5n}blJv1`tp!VVPc zK+-05O~iA)x_QM-h{8<@{Q7It^Mm}#v#+l8rwdyR;|m5+13>Sk%aj{q2H#)vBVE-Y z(4dijf4VuK+Wy4;k!Pg%?|gkr(jT;M)BOo>8a&vH8kTn=A&1ZO%SSc# zr`9jFw1#devgYDBoF|aoQ~GHcQGBzOT(WX>|SZ-N}kVQNeNbp&oGYl$&4R40B%+f{dW7=CKS=qSP=l^G^3=_sx!$U zuC?2(Hy&LP*Ae|{N`j0RG1e=G*1*b#1)AJ{VwHp$2P@BbUWsHGY3_mx%^Tjz9qROV z`%;Z>$d@Qyh?Ebxc{a2)4FC{ZukiXLxk@WqHrt$ct}8_c=?EPG-9}mT=hC0*9~vP} zYt_Ywx+eTQ4)(Uzs+J|f)=~pbHd{nZeNDGG&@G!W-8Y#fN{~IogK8FV)2c;Z+pPjjjv%6wdi@u&h5NBdL_V}gz`N0 zS^AXd=i$nxT3tjfC``7@tLAgERWtj3^%W`2*sI#}u3ckogGVi^vMokxt%B12IMNIy zWYV%iaVsGtJ2$;zg-l_fIOcaESdi6REx5B1zY!V3jXz!ida?}TExI3@Z+5IO``w=D zNfAz6kUf69RLr0i!gl7o~8%KrZG4S7e{M%hH4eutI(X~+BkpqtgyY(1J^qL=Df^J0&PMEy{Si<>06ro%+q(?%_r_`Rug5+_4e2l@CMx+kTHTBn7ePRZSXYklnWC?V-YMe zVta~&-=N8OLj@f4i`?sX)id|Ph{M*Q)`|NImNG?{;B>!Z-9uEHxHb>5;`quZ6hX|9rI zk9t7!64yl_B$4MU=r5OpQ_m9P~|9pAIiJR~?Hn!N*h)KTi z?g&IU2))XWu_hpJ%PWt)Me2-?u(rTcIi|_5-W>3hZTnGyL~O>P$Hh_~{kgw?yvOGZ zND*@HiP$QM*A;U6&bJKb6XM>zY?0!3D+5i}de zp7n`?Pwq+QKOgS#oFo>b+@0SqK_5Rod*>N`&{@s0Uy1`kp%4>aeZ5_4sE9(&D>ktu8%hp!y}LKO2%tsx1)qZyg*!dyLt(`L|8P4&Aq`70af( z$(i4GR@?b{eSeh#sK&qW{jfywZQNcMgc?)!$++ITf4<&Fi8pzlzAxQhbU8n9Z1LSA zV=C8Vl#Rh62nzaX7H{~3$L0yOt7fqV`(wM;COJzB3uaS9a2oxv&!4~cu)5fM=9>DAJYuo$&^H8k&~xmVjd9fR^P5$6#xNoPzRZ5Fb5^~#1Ujqo+! zHY8n;lbfW3_jqA;Q~PVf^XDF4W$lL~$BT5#bW6PS@ja8sO#!`f2#4TseDRep+P^KfFswwen5(r6%3R{WJFA-twD$ z|FYdbek8$RNq5F-dw;!ryRlewsSK6j%^{(z_%|quZ@v{CnRQ zrLfh>A+kv}CC`POFdI4Yq0&_gD%sL^3N#+IY^zBRgPx4PTdj6Ry1f%xHoT{6!)z)W zS4o$M0nwgql)<0%(f)JO{@BB=TQ>+-%Wp)zxjvx8$t}mrgAE@F3QJ3z-1no;Up;;?``LynYRwY#+*bf@)J`!mLC=gfEWRRLs$Ks7UF^Tl z@P`ptxGrCLA8nEXCzKkQKZqp5a?Xx{t*zwbP7mI^jnl{2C{72V@I&sk>NUB?e?0Pk z?C%59hs9mv$p)_)8kv{{G7Ue#09B)ps@2;9#P_k)~6r!EHX9|l&XQBFyQ(0cj zipe1SD>9o&uYv=XpE&>fl>hgCJ}F_}p1+?#-e&*T)ldnN7K)oUgEuxanK-}wq=R7<;^Upd}w?G*HBa^6>pP>)>aA+pFm~->-jvV(K2F53P4HKeVQ_%=^Egv7D=spO zJSYYQ7*XdaBeB7Hbg0xn7d@IAMpq)C(T{fAU9^X_HDnXnplM=a(x)64~#5%SQh>)*6WF&^dn$w@|~h6@tx-q z>mjpa$zpy6rQ>Dns=475>^h@6g8L>noX9i$IXI!-k$+ic;A^Aa4*AF#GFEjcS+<52 z@&6nPqSzY<0WW)-!CK{ZV*UaRd4cpM;m(^p?rj!ri+B4`F`jb&{5qhA*Z?Qo1Mtnl>4j7TH6H{(^RatL+-9O0J0>5WrrUhlqUjSL`&VSeZ2RK6wf zWLX}2{D{mB9mF)t9ygRFMNQsWwS_rj;v-!3He~PnkHOAK8o{Bc-~GChw%uCs=feNE zF8&s)$G4&gLzQJJT#Jb?b zh?+A`=0mB_mH$|?F#b>E&$Frx+gIq-zRy+GYx?&8is*pfo5r8xj*ZcuX4!|q*P1j6 zzorK{H7qW6#|U;$OKNEXp`I)Y!@*c}nsSBC0C!XJ zc=fn9mQ%6h=KWhW|Mr(TDXg@DO9feH*?#__L?!*XHFlNa^nDqBdb#53b0-WqccN)^ zYYGkoFgc}f-~RaH#=HKkIr1BYRCxf6{zNS#Av4L}bs)@fAj|8;fzl2U%U6e&iAUhx zc+QnhQ1NuD00IaMV?>cp03!*&BFLtdRW)|z6%08iD4nvUYHRy`E8-DCSF#$fi|}77 zD9u2Fvum17ys_B`pFdDjq3}46`Y|rj;QnrX{t?~dxnPo&N7^{6Lsn1z45(f|2vAMP zc(TV=uI?YLO8X|i_aGsHl7vARQk4dN7EDO_4M3u4D|&7|+BrQ~iTL2x6}5-4Iq3^< zn^Wf~JU%Z*>iTj4`bde4whU9pc{}&`mM3*?S>baNDS8SRTgnPW?OLExM17{7g+4#2 zFyN9Z`Xm|0b1Tw9&F~9^UgK2IFHt?+=800%WWs?s^0r2u-{onik+Yp{J4d7 zxwp!WJ+!(^qjVWS%;=<*U@S>}q>z`#lT#s0V)cd<sv|IGO}-O3NA{^X7+??eA*sl##RGUUa+JMKtrfsZnm4=93so7r`@ zMR6898p-f^?WabMACUjUIetd|jNC$+otB%GZ?2f_BORLS-q$UDdonz~oU{ZPFD5pQ z>+QCs6PMd-t+aBI^Zaz#97(&B`HiX@ATGS$O5`!`x4Uw!x_ysJ98j^b$gSI11p{M9 z*yHux5-RKJi@gu$L-+TK;ulZ$7Np!h$#X@fig-!ec7Nkgx1BDPFz~pUFCR-`md+ z9b9F&&&ONTrcMPc(s)K!%QO!6FKRRj5c-8|C6yP+Zo6|5379FH{k^yJx?%5Rd9E&Q z9mWI0R2s53cmmryQ-9lda|i}%?~PkCcb_2co0-MQ;nE+QFo8@Qk#C&9QDs7)?m28Jp zH=mpn0aLxoCoRHHXC!Ve4a;)IqGvoiLEAHq2z?c0{dl)qj2re<1F4$md($?R#*MQ= zAJWy7#j=Uwtd@a^Y|#(j5cXP8(h_GV8T&z$Mq-%dzI&f?w|CX9WNtMyxK%BMz5tb7 zoNbg?pTp})cRV)OhZ_{>k(fuXBMUW)<8s2NdcTNWMmMfEL5k%PUN}YQq}B4xi<06JEE60ZH4wKy2{LdxKp&eY;p|frpGd z!iEIh6z~y`VB6uV^(lokdwSHU=(2Qk)8!@*u0yS62mWuA0wTe-8BIDe=%sI+U;U_` z#AITcBatPwPFkbYF!ERU6Hp48n{_vCp{t5;YJ9ylTDEX~!h-H%H$yllw}eZX#*5bO zwNfxDG#kR&frXSCD<7k*UU|qfgj^W`!hswYy<|JY-bb!;u09m3447^G*QLM^0DC(J zT#?nkw^ST+auUE;3P7-h&wj(>0b#5}{@_|QQvOb?st_nt_^59r@*zQ<)6DRYTl|1~ zk_mer420F^Z58);G~YPsmkw#r1LXJ8wNOCdr(ei;|M5Eo1ztFyG5L0Xy8Yd98HQxa z*Z3?Xtx2lrJ!-(qGM$3DM>eCar%(A|N_Y28|6tBmw>3nuJt z_kn7jXYvREXid&*9=AZVIaT4s#L2Kjh5r@>scFd5t~|r)oW{9$ z;e2FGE&L(6#$^A5{L!KzLeF%$40?zAd00yBdg!}_Ckk8$m}?}AvRJLIybpZJ)H3Z= z0l-q#p0Ezl+4fWx4CgzVI!qFORcCOHEOXx(9;1*D;r;FS%KyDxUk}B`@|Zx$JAe#c ztX*CeMPDv|Pt2g{?6+(u_@~`jA2mnjo1&P`5HU!Qt(Z{U2s1E1F9#BO!my? z0H{;Z1$zPdJZ7##wstM&0Fv-!`}ZcbprifchMn3^uEjP;U0OhkCypwXh0;}P>*CE0 zo5Vha&9^Pl*U)%9r_Y`w2lKs{1P-i#=V#k9O`W6%8wL@zz zS|dauRj#}We?^XS+&3IZnZ2Qpai|NQsPVPlZn;VOzxAk}saV1l0@}2_H<|K;zs9Ai z73MyWephysU*o$~pHGe>b>Hy#k2GPQ@P>!&7iH|*Iq5M@J-tYIzS(Tp*yE=X6296{ z7$>{RL-u<(&r0A)%qZ|7SLDY%`YDcd1JLtqIsp?kYI^z-nDS9PHZD=uN!h|}V|rnE z;(CX4*u_jk&m)yPQMs-n`~jlYANi`r?WUy95?oHj30}-aaCGcH!<{)U`dt^&qbyNF zhg!OHTN>@=vvsyQZBH-4kgnG?7gL*)9KY+rXn4OP?VIJluqx`(e0ML$b>P_j z!TCLyxrmWeq^R(@^X~y9+%xQE7-vPwmBn7Ds0)K$?fiO_jqm2>h z2}|Mqln*}Kd`iwN$2I;4W_NLco;COtHAkWtJT4IWR?tJ`!CpK0B%yl&CZ{G~KmZmm z|KsHlg|~^wc!4g0qAQ@Si&<*j{Qc;U=gR`z&uN4}cSU%>;m_1lrz=~8Ov#z<2^T@V zJTlsONbIwuBERo_NpUTvWY-ww?*NC)>&^OJWC!kx9`~@7bSW%7B|bhoKXtl@;KLXG zu5C9nUB`jVTj{eDTfA7}>en5k#B2XuS@E*-4VP7NS3JC^2fQ=*dE8YUnw;lP zJhN1k*%H|^V$QZSNs1n?x%+Hz>>lzw!2qR4Hg*H5x@AX-&If`3K=ozAY$mx*N+bDW zXv>TbxPgjz^&X?n{2kED4I)Yvy4COQjeG`vZL2qD9?h|j-tXYi_sr*>c~x#nOt-+H zj_xV}guM^>>x?gMX=lLbbl&vm=PG3o8JjW&*-bs01mV+ZAg+X$zAAb7cprW>=0NiW zE&jT|O64~-A$%v(Bl?keJqTTO*Iw+5MMKz&(Mq|bT6!+T)s~WK;esM_cz9i8yvJw1 z{j*B3&e*dz4PaY=x|}ISW~&PJ>xdjb`X|Ye6pdBt%I?O1;L-ZXhMvE3kIBEnaL-UI z*zyDENe7|1FYB7y3Nur-M6aby?i~I4z;h%%IFK|w%ZhVXwDY&{KYg?O;fG(8@x50l zr?9tLe6PN{wjB-Ez(u4euK@?s8It-_pC`(#+mN2@sUQ8VC1-PL9NJb6W z#hgYFR6I6bZ%1=lLKt%zLPjB>cK}V~6LOR{WKw(mV*nV>)sy1x@?yW0=$@oxM}BG8 z?t7dYOp+nyOpizGFy(Jp)Yva2E+x>UZg-X#ik4DRgn9wo=3|R7VeKs6KZD$9Gc+{S~{jnLj3HTKs ziQlF&HKwm3q;!ACxXrA3{{`O4gP8AlQa;3zw^uiKmN)K=voL1fg-hH%{vE#dEgRNp z)1VV<<+~byhhqW}yVNpf%OCzNfS+xUdI5Q^$l{k!Pd{BE{Mdw~j05C0%9?(&28f9? z`Ir=00_a*L+Zd$UrkZQ6uoh0xvwoV0HMe(igqwmFEA8*H=q_fvW0;qSDJ4~t#@HUh za>td!*FDMypY+W zg&`UPP-<`QvBJn6hC`ba&vfX81%B6u=;yZPjw@~4p<^+&8TIMV7Y`lmuH~$>nVkW3 z->2rjYB-*~;w^D5mGICCatRI~ZjB%^=mC{e{+870jbm4v-Fb2R>d274ZeGML@z2AYHP#xa0&y^j*nXQ=9wg`9;y-l(_dhB zesV{KhLRkC;A<~HPpus9;xKxcld*aM60vf752pM(YZ!ZyqN@QE&LHS&)iiIbbiPf$ z-MK3-m=eDNA6X33mteT{DqsGSYEdSrlDOq-^{-j)g$dr*68H_)?4)ISX~dtUywwaVbJI*ctc+d-CW4Xor8EG9=T7O?DCbId5!)kvYm3xS zk2P3QbbljS<@+*%~1A=cxyK_7%Rft7rCf?ECym~ZfmLWqf;)9D+9lxnm zjaH3950bUrXugN4qaRI!8gO2{3m! zo%5{EN;uh-m8>Fsa_6m6B2Cc1nFw))WASf+eyqT?jj1Yb5=O0HasJ^Vqiokt7ys!S zePAlp7IFFT!h=;jpFTv<^CG7+(%?oUTs}!HTsd#7TzOwK>d+es$&Qwl=ZJ;I4wIsh5pzRlC`9*h*X zqF(XX`A)0oUNjPA;7VqsiY`6HcHSY{HyC@;hKa@qY?P@_f9S75cz6g%&gk^K`cA@$ zK^Sh(HkMX3o>@Q52(s9YD|-D1V8DL)8V*VWrE1}FZJ+uGNYUb7<=e$3CZ&B(-wu!9 ze;u|wCqdZy)*T+;_Pg{;ENh}qCD@N>8MZU)*CKRMm5`cs=;4iORW*oczfU(g&rULL zbjN98S337K)9$Dlj}RlV@U|5^wCNMBZXu6`WN?IQP49PUSuey$YTNX|iPwW7fzBzK z!=D$}iZ;9JCmrXAeyBK(pj+!ny4X$-x`VQ(Fu7U`NV~{E#wiu}i{IV$SBFdm!^qHE zcRWS{^M|ZgP4{!4lFyP6lFFNgYV{PnxjAW#42jl=rj)QbWsAT(d7qTl7#i4aT}|=9 zS%t`lIsb%uitZLPp~pGqF2W@GL{i<_q}&z&PC z)$v*96Lt=}Rn70a5$5ki0}81oxh=0utJcT*7o;bEDlVCMfX`o*Pdw}s@p+1R%HMUj zda5}8dEQ*tRv2Co%moaFxE{}}?C$34LLK5BTF~V_3xjsT`a>RV5x$9%Mt8wStc}kY997zFXpO=2S-mn#(<6GTvE@Ig{%8 zZ-Vc+P$f<*A*)>r6CTi~%?J0%bxjALAK{+67% z{Uuw>XHQG0B#)#x-ocoz1^^-sFRhYdq`xeLzGilFCSgpi2K3Bs$%j({rm-?-(HRwU zi9X~R&)MFH$+~<5P``#lC6FfUl%++?9*w<`+NX&}TClO4G(o#}qMS)%BCm9T6zB-r zTkY))d-~m#v~B&{5d7vwvU=B{%c{Yfgcpw6@2We49ZADg!jv=F-9JXl5@j)#yEH2} zo&zx4-msBWckR6Gqq$m-&%fQemDBFx^NCo(R)o*GxP0!Z>%zy#)KL}|*A*-Vck+o6 z-vDEalbhtJE0+I?%77og%3{$?Y{FR6JL|fWJidYR(Mg2zrWQ7%oaZsRFKdK;{j-i8 zEy8-PAKxI@5bd9rjdS!W{2LQD402(-$FTJ6`6oO-mJ%%mgFIG^A|sDqADOEvWc-)< ztw*IxDK+Zi13-#NBNn%kIhQ~3w+&=b_q5X7Z}$x)p;a*{9Q-s4V&!cni}0*a%~SYX zLbsUQ@w?d9Z@`#D@u?%;Z4(y1hr%fu3xmt@tJxymYp^EU#xV=cna`@H`%Ci1Aec~a zYq`)0=!!?h;B+p7@K%PUlamum{klqCQ%UXPsRwG12er{~uzuG1D;bx9{x!i)!OAb^ zE|*63DN`ZnDwrimaa}hn{M&)3*TR+vXZ)?pWTm-d3BwG-o<`P zqJPrX^UXG>Yi}hAY@@vmw9Ec1r8gnY|OhX^G$gV+3hfDjX`>dUFCuh0Jzul1_lf zh{pNv^VvUJV3t38H+R2?x7c9LyMSA5qsOXIs||KG+zgAhh$lo?Q^JY8Txu(UAw1rYbGhJA=0Vu&ygdd~(pwRSXRxtu=Rd8!E(uFG<^n3*+yYYANhpKYe_Ajb< zi&oH^OD+%G3H#6j<~ZuQqbjGa6YN|?bXstbCgP>BW4;zE565c{J^|$SsbOtAwI?PO zy_fj6UGwEBMD6z&EH!f77*6^=!^ISw?YCqrWH~84^qtEON7j~~I@sJy2;^Bw`W}D$ zj{M1wt@RYrnJe)ofO6<_ud?{)Odntt#Le@695037{~yM_0xHU_4Hpmuq(%fmK|(}I zNo1DJ|n^UYa`E)%U)&hxP~4xv~dRGjgL!Yv9GCsZb5QBjCfjjTk85R;pmv;)uE*PH z>-x`nER>ikr8a+z4O7OvC^q%;Mvs{3ecmi(1>N!uO!$v-vq^o&ch?}5zkZx!5Sr=L zxs|h|9~5D@JFB9Xg2qx=VG83ljs+VN6}@SRwX|KtzQ%>G`~}Kx4fCGP+|ZCQrlFz9 zEWDY@ahtcVhxg*g9Sz++pmo}{0n{M&)|_)dHpxHmHp3^%p9b| ztW;G>U(~+|?}El6_t!fm13x{uwerchcvR`ysRNW8T_>OJmwQ&xo13}{(no&g{{#>4 zlOZQ?WAp3ZlrgUw!ZjT__+d~^vL0eSVMcmuZGZB^FI&%?7Qo` zXqosX$}QMJryPg#w5ULgWh;X{!QA|+V#*=JZseYldAcv0n2MwXEF%$L!8>XddK zvTo22Z+V|&`M}wX?`(rbp$|FK&mfYC8PA_>e{*EIQt|z|(d8tDcj*$ndS!wmAJE_R zjb)XIv?WlDr5ciUSSC(7X$gH`^iFPeXnl_^KMa6~+fz`t*y9Axe70&CKkEiqhgMx2 zado9iI$OM3jqI1~niM#@(kNCex18Scpq-g-k-8smz<0VsfdeI5+5io!pY2!nswIw> zb=!hea@+hR>&Vk-!vab-4-6#5eG zTxi#>d85is!B6WiKRDYmXc}=&S!nRPqo!|ieVd+O%iKq?jsG}#pVjzPU6yVw{fR}< zyet{^l`wk!E-!(J!)(Ea7wh-_ID8(xI-4Os-0>rvt3tUgY^(9i{KGZ@WB4~6cY09t zvVheo*QYf2WEtBcCTT4B&HwcH{*DrMk`a7g?^GHZL1GpiLg%EB1l+bXws&52gy8>% z3bElsbV@L_d3i@Kg=%oR@Aznw3WSrpBT?NN3($t+P8A)uSUoacmEK2>Lr5)sxqKa& zoto9JE4{q1w^~D)_I;<`Mbl$dC2G?HdPyIS;qEds)|No)ZExWYMR$4l7p*e~L+zTx zUA@-(i!3lR^KdwiOPnAO+RA>BSZ%-gF4knF*MMH*e(O%x@a7i79!N|Rl4Q?pcF{f( zaDTw%z`B1VZ(hsnS;vouXz9)sfq*_2$dI@lb#@ao3`^V!_ocFmUoU7XQ`Jw2rry`; zhXH>o?6bm${IpjlmevOqTV8vK!MD!$$5snyK9WkdvEpkzA8bu3*SiIexvG|vHmck_ zns^`*$|>VeK0mnxQ#mGKuuW2AX*WH@r&VS}VI&&13=1G}lC8VkqdS?~?_C69P*Jsa zLxaZ>_i^}s^lA2@jc}{JUHW>*VZWO_ejibHrj$m3+xM+D>W6RbbopimA$Q32EidXr zI`(HATgv>Mn|M&?#)!ttqN&6}BGSHmQ5#%2GqExach=I)n;OWecyi_(`zk@zXqbcU z3%BGmn>*D}Gzy|t+t7wP%b*@{e;sQC^u6LWM7vCIxglq^+~XLVWgQyJq32Id_|3^W z^zF^2+Lt;7mF)IaIVHPwJFTR2$OS;dn*Q@cQ&Xo+H5SAB$2TXVtu4Q@@ulc^CKoBm zl29`TFuA|K_|X(9THo)8Mo7+p<+sSno?GE@!B}|hnc#MZu)#Zv;JbA<`gmJc_=HIv5aU6I(BN%b7}W@@tY-je*ap z!99}9(J}Z`4N8H{?qUY?w28Tb&#YMQ>+eny8FYm#EML%_pWn#n$J2hA<}X^8#!^j2 zL!eOfZL3wM#fS^v<=yX)88QS!sS1lJOlFJ_^3i)K!gd_yJKxirN(F@jqHC}~E?dR& zHK$^dD~Dz41B*2>wDlkB1^0Aibz+`L?buWV_+y3xudwEksf;LOgkKSy5%;nKOwq3zp8I^O(KuuFeMFuSFC2WVC!Oanbh*{j2^A! zXmy;rq%059)F;{IYGiScUJS-OStd@FBlXb#%)Pe*NuvpTlqcAJjf(l!1t}eiwMF}u z$$Ol@k*|9v`XR@m9sb1N{z$A zF%b#0w=zW>wpJ^sErW<6Z``35_Ls#gc%}9^U(WREYvFue1tI)FIJSQ;?|yJBik?p4 z4!wf0anerljb0<^)Mr;!vp8U07}30fSLD z5r}qOsCO)o!-wZ(g01lKQ?3%XU<vo0mMZ0Y34BwL2|pJY>Cqs-e;FYzev#viw= z+sI7UZD}!ulFx|e&bDLg-A_e!B1}#c*m#9wjMcq z79%Y!6c3RtOO#Y)G*#+UK`nh@Xv8p{q%PM$oK{pBL%)YyF)kC9Y2s?t)+FDF8>N^P zEiYKaEW?+F6FJkvF_<0O9{NBN0|Ty3#^Z8i^+X9MRaaTgxXVvudQva2CJ&z!$7}fR zCLW)KkKyVfANIA!TJ7?GzS}Rh7!LBC z!*s)2O+o=3!D{yeWfP}OOxYP0uol_gY)W*imn}$9e(+hAI9|uz{~$9Zk=V6$U+}?V zXEe*ZN?W1JR7-|^r)FA{rDK$B&|5uPMdg^c-L=4--=J7j`ChM%kEF@|HM zgF(#C&8XpFn8OpPsEZvRbNhDsIEmHD=M%R5VQ7plbe>mD+xc@i{ZV=OJ2k`@UBeM586XKIgu;x5nArEkZoIB1e&P+~Hx)4?xc72aaQu16c; ztoUnKIJ0_;)onW-22>ts%0|*j+$K)7Kt?Z&)qGsBg$_qHYf!a6)Q<86lnDtQI9V%* zlH+d51NjOtha+e@7@^8ecje38C_xcgRD2*1UB!mt&$xRh8t@T^$^F#&vxsAUaMUuP zOp0fp(B*Nb``KJhp50zyJ`D}4{gQnJna5L38Y9c}4tQpHvxnwPeqp6w(TAf&OQc&( zc@Z|Wx;a^%r-3qSqYH5r{5;3IJQQI}NfjfupD^!HE^+Y#Ys4j0kXc^V8NEqe1Z_xG zLtQ=YHZ9>Xfm^+-XdcVvB4bXuwT`#$lmL_ROTU@JRwg4tmf`353b}WDO@@;mXGzA> zzQ50Yl+~e`Ot4=jCi3#eKH)b^a<$vuF-t^2rVeM`aUB#UY5_^hD&UhB^X@UNNcmweSaY>s3(3MJ&N z`FcmAiu!EGoJ`N2@kZ~gtHUO)Z_BM_vQI%ux^|!X_g%>54etFtZ)DJ&+tkW~u9ZDI zhr#sMX(Rqu$PlFaNlTAq5{wlQ80|oDJ^~cnX60vR&bHYFYpNgZc_HtS0Z{zjOuB6w z_!j+Q2(unYSonDEX@_~OV%T#0%S1Fw5B~xn{{d;mMm+aI)h;a2TOYZgG(o%th)5Q~ z5lXu6i}i?x^F9LjO^E_Z=dV#>m=`@Fn#4gU4>s|0!pS-rcF2W}fW5?mCq^0MMdi0DI7ycnJ?L2Iv%edrT(GJUD}%;>f_rJRzBoyVOm zF~26X!HT?Ilw=6oBc(gIqa~&l5g|bsmQ3~h9>1XC9L z9(;1IqnrRVqwl>=-K1}+a7cL{eF+HF&oQ-9lKR!w|A-X-%dgOlYtwNZs775|rSS!V zU^T$S>uw0lNJaA!Q-Oz^#0q8SYryVrq2$k!!XWaGF^WOolKgt%_R(AxX4HQU@2~7B z_-LeRgoYx*pYPzGK?YgVd%DIq4h5qXbChS^mpuCCfBhkl;^yZxR%nr!!10l1dwQ`W z8W651FN`^=OOj-@2adPk4|tf)WN6%q6tF1<(m=STa#Lm=^fRAEdm@(ype>TNdq5M`0FRPsIx#Xs+j?1SKI zN%^{jK=fd{l=Z}X%tr0xY}-cu?W#>$!#uGEb(w+QQM14DGr-}(bMr|5XX@y$)DZt? zG(h;EEzXVpxzNcZkcuevG5{zh{WWO!yf3I9J^86>@QX^XDR0t0881*-h?iFmKm-ch zwt4VkjB%P#`{9mp^i*MCDxoQvJqd@Ks>kIes#?h#d)Zds-gk?0^EXy;JO7&Le_nX? zBLCQzN|s~(W4Qd(X!_iNZ>V2(luTYm;BnZj6s9M?WRIg&FO9hk|16KcjZ`Ch5M=+` z4h9D16^Y=1fXp}!+IU3{Hi_kCA&mz_mjguj%f!>e;&VAUeyjz4a;NVa^%jZzcq>7( z`^g2L8o(s4LMI76cm2m9{pYqHW)4<}0TDUfpV7ii=tGep@iJfJdHmp0)&E$}$nglm zcHI$y*d!yv1zJ>Soog05DT%5%QMWVg!Sc{X(Sv+!Fr5IwFIJH%@CJ|99_|rdw2Zo8 z4c&SSxz!j?+)`~YFUsM(m%ceF{w*>pD6)djP4xGf1Q|f-WL|o)P!hIxcj=TR-w`m9 zykO&yH|$N~`2dogK^5x<2X@W9rruv{R!f2HW`2`kJQc86e?U#JA zu}A7h_FsN`ho8<5MdA$Fd27IK~(~`r|m**p!Yor|6iOnU^3tJd*A58R@V6ZW-Qp^p*k7^bCu^ z`#){@>v8b&x+(_2*MeR{OE+*~r;u(_HI83XMcBE&MVSa@VyT?8bhHJ}`)F1HS-2=S zJNiWX@&9T8RL#D{hF4Ljar+nXbFTzZaX2M3;bhK)*VAcBViqNRc%A4ACSmJ%{-BMg;fr>r7y}ek%i8}Sz65Y{ z-fQ1BB1wGz9T_Bs?dC?!|7G)n?%;ZjVlX->m#`$5_I*wzC$!yDHKIqgzAtPr^hV!l z*&l&kzAJu&r-oNKS95HKbD8xf8dlzGp&HIVqLaU-1qvy25vP-{v?5blco91wPCcv7 zjOcdPtCii!)88xK=`F6b(nMy{yxdjY1u}ea63hN{Pbiw72VPYXtTHBc{<(m_SNz(;<-P5;qTC|lncuy8NHC{GN}@Ro9rNfte=H$Sf1abyirK3D zBcDWh0}uVNU7I1Z0x%VrlXZPZ0G%x&A0fvfbKG$J03p)L&|wZ7{oDrHJHdx{bL$F| z+9+SS>rjVxAN#dEFwj2=MyhU0AUJyWZ{sAu<$s}oHb<6uW;;atvisos46CBA^o5kO zj~5lEQ~Exo-3JA&x=f0QCxShK!qJhs+(Wpy!ORAc(aXObw_gd6vYraXH+tUZjy;)w ziFGLSA}Zxl^l+q)Vf=|c`q?|CoSjC0PWMgJHK?NkR$Bzz;Xxn5it%8BONqeRED%#0z<}%U!6Z|7Y z9asCkeE!C_^>&Qjua*~myU$Zl4w+h5a1ojS`8oH*fVAnAnjt$KH#NsuZOfI4Eykq@ z+VbL%b_<>32a8sD_~n!98+%5PnP;;Y6}fABi?A)ey;Bwkr;)+qyE}VElc%S}QT^K( zgcSuN#Hy)Rml3;uFO{A9M$X@K?a1DeD=WC@&W2CA@GirPZ0Q6-g8s$OUdZQ<5Xd!4 z?$RS8Rk6{j#HL0iWJ5o1@{7My%t>v2Lp!KIjp+`x+5&z?a(2LH9PQ;FD7i9~F>inQ zz^@pH+zVHr9f`qFPC>`+d~0_Cgi8}J(n~F-)bovpI+ULv={6>eXy3`Wq41EphEs$-HY{edr12mS6(V`|o_7?kw3L2FV$=x$tT;Q~j;Yd{QgI?yh!pkOeoVcCxKjbuGn^z|p}+F3Ze)ec$1MRz;W z;*z2c*(y+7W7_Husz2+=_(2)X%DjYe>{PQ&iA};yZ9C+81Fn(lzn(trbxGo_x6U*7 z;W|DW^6W55b~nUB$)QRjrU`;;JOX%pqjc!v;Br=#uh;O1NhO@%;JKsOG($nRhtyZh zkwFK1U4-qtN_Gc@ZHbJCEZLk{o>`w`J|_4)s54P(Roj=iUm@gjxJ?a=% zQOkLIdg1owHh);c^5%LkZ-s%C)S1IS_}+nL*9p4fWvcHkt%tZKERC1fzAQhSBBd!~ zO-IC)0%2Dx(Z&8jQ^v#d^~;EhHG<()L$<|^)*MuXqNO5x)RU0{jVxrBv%L0@vy3_M zoTGKF;bqk@s_R$@{E+b@jZ@^fTEnOW!v3Vb1WpK=02c4dV~Z(D;GMM^k}0Z!M0#kz zB{c$6B5T5eU4&^^+=Z5$K-g@{|EU(|^k$jV@l&bzXOY%-sAA?a&Bd8Ua>Qhg%}83& zb~)A;ql@t(+)r1tp31#FdZmyl6)F0j$aT;_>Z{(R80o#GhbiBeO-H`agDfa1vVgqV@dz4+Ebi|Kqg+F?5!1D=yBgYB#oD&(ueLloxXW`ozi5@nE@2~wUNbvlF|~1c zc2dYMneNnXcufJvXufC(2{;1x+~Dy{9x%7VZ_%9XdKx9l^s%hYA82O2-*eNleDw_Q zZqm)himQ$L%B43pm)dLl?blk>kFf}6k~VBKGsN*@c^pILtL@u2mZ67n0Zh2uo#)974?w z6gMTC*)ZhTd<)=RoI0GzjPoAnZ*T7vnCAD3V9KrOHId>6w!5)8g=p>^3BG;b{iE*N z$ok;OF^Z{st;?};V|l)I%}qmyG9MqC5Sc~vz2kBdMp#O7JAv=_nB^_4>bOsHt)ko( zf#G?Jd6IIdf*E2iF?Oa`?ql_2BFB{M`~Qr8{tC(v(2)}n8dH?zaWG~OvEfUwd&rg` zO)LZ=;g^8nC`qm{Uc@?<;%f!DS2+>&K0bJ-0PO}wuQd}ltiO@x_}rlt1dzO}Lp%b>QT@@HnL^u5a%>pQP_CB5r5xM_$S6`;)|d5});fhv0~Ta3H=3N| z$_zOuZDKCd08my1eUKZ)Lo8$_iNjwH~zUZP?GZ`CT8AJuae4m^5 z7iUbuSFy*6+yiK2eZ;EUKR#{`q)M{dP0yTY2Xad}`4RU!T=BTKGqRGyLwSGjL-PAf zCad$}*gmGahLU6+S4Ky$vl6O0Y}r)ID#LsetE7O#1siLULF?)S$j9L@@n^Z9h4@X*@%`^$UCok80ogaYDSbk%LX&N4%CTz zCh@HKbwDJ0m9w~U+8Kg%s*>GXNZ!Ti@yEr^C>lmhKm06(y_R)LLKrCdWpT6E+r^S* zS)&%i?E+>^dTEntHbb};I_Naob=EIG+#ARu8hd6wNu8E-9vY;o5Z!ur1Z|0MxKNH_ zb@0o_-04E?rS4eM^jTu=mxo&e6VI`iJORsv*Om8TP{B}TZpcVH5ZV#N$cTEB1)ib{ z1|5%GKWAP%u3=McSBMZ7`dW$8`ZM!KS{DeLHz=R@MduSrtSnj;ushz}A#*UR3xGio+%LOAhKLJQCAMk(ZB!sxLa?*6Oh z2dm67UznOBwS4tOg7Dco%M^ObKg6@$Ss3tN-)@(?l7nOLJ>`yQG^K(?j~5LX*zCE_ zehlTazTKO;c{EZHZEMuq&b`Qi<1Ruyh8n3Nw|;S(1QV1Kjo&q1)0uX1vrufDJc&=5 zU+_G-$7U#*f2UX13a>9#;r}5Nf<}tyOKbw-9e&9Qk16$+JR2L(8@0Z&7GpSkgx=46 zqoGbc@d8d2qJEs?AaRGguJo+grOpW^RNt2+Oj(!qTT+Cd37wz+c;qy=FA?&%%iX;$ zLgmwabF_(Z4RrHM%@R>@PPCC*1Po8y&khGf^a0Z{)2m1FpxDRC1CsF-;8h>*M4*HZ zdbR{diR06C2rZL*2&YJ55|*e@nvzDU4iWdVPrem^)_@Kh(gG}v)rn=2G&snnw_Vn` z^EAG@Pj%xQ$GZ^w0cT7G`49E;&5BG^@_pZKY+q_86Q3}w)LYD`iHbkeEoaH>?*-cD zdMEO@I>gVhCAONJrJWL|eY1VVqvjmsLnukKRJ%WwxVYM{w*bSPP{Y!-L!IIqMLR~< z4IawBIIcJF-kU>3r1aHCbAB6^KfabtN;ZpfgE8Oh(z>7ceh%BSfFB- z8Z4|~J;`1w#Z3eM@yW|FY~2AJxBi?FaSDYc&pNA;B^-UyRM|3WyhZD74UzmAE2HI} zy*&xWcC`xEW`Z^C%z`^;smbx2-wqJs&ZqVFNuVw|$$T=Rbk#n`*G7Mto~h+5Khj58!Yg>&PgyeH{oibdta;wiz_FaS$w zSe|m6w!J<6`12tvC=wcMu=L)4SR)pI6+LFF&C)n89rwH)uUhDl2WV2X{>FA_*dBi& zJJp)$*C6$`Ylu5CTR>J|-@7};bC3H8|Rl#rzByr|_p(LH;iKs=pPZ#lfV zq`3|XoZL5MZ(8nNaa>?wk*kElYc)^NW^clH8fJEv1GYVx07-^)9Ict`HMjLzx*Q&W zFDw=SF8 zN}&8HK&@sTUJNHIH_L>js%@SUSu*+Q@?9L1SSR-{U;B(`Rp>&2DmhNl%h%L%8?73L z7IN6A09iuhNe6w73oNm9{1gNN-A{Jx-kOr^>#ZvQCy zqM7Ft@LLVX3+m5lO-xJ-J!(Np=fQxGkx5Vr?lC2y@1SZ4lhajcNrHzCP@^U7UdP-9 zWqIOLRF5fFJNB~+(0LBsNe%0vzS9lAhIlGiu}3~~yF~O8=I>VKlWEN}RYSLyhN0G) zzpaj6Gis1-WC$(3&fu0T4j<&r(5kK$b&D!(ekn-fPGjN_y?drg^;E^v59mX?_{Qyi z-rwpki`~fD<@p?QQ#&JH&GX6RI+#U^9Y`3y{4ou^WbS8}fjWwz=Vet3F$r?yPK(p& z0u2im7fM9MNuEYUjLFU`WuU^hKk7~evDmWz;R4ffrWka{`xcZgy>FoL@`9{T^fgv! zE~LKU#xjTrpAA0(33QwoY6Q8wnpySW_wVgx9JqVhk5K}#qp#cq>}tgQ8ZKX=ul0-u zo|PJ7zcvx3Exfe4V`|)Y;}`?>DlJ9} zw?Kk~mV9g560NG*dHyl9qDuCD-Sa$<#NmgD{Z^}i%HHt`T*=PKXXT;nPUe!?5r6R_ zOn=e*i(z-%cOYbuX;dkDEH`}R9Iw(Qoncd)B{a~7l4GEt;hEbV??uTzDf9sr7Xfp51jY?-y7NhhC{dey0r5l2PVn! z3}``qCqF4Q_vBX1+vVKlht{OC(ea=A@~&~Xu=Mw?4!JXaR{2hpG`GzM4BI&#e{QO_ zB_QLp4vILun^s3;#f~;Z_Qof0%NJKLwZP%#>|9zXW(n7#N*v$hdG;thi*Wh+a4wrX zv&=5O+m**$;a+8EVOQZbm%}f+Qia`etP#>jo_vQrq2&JQoZY7S{^|vIoZ57NGT(O) z&Y@{T3F`=49L}GwddlcTyKel+nW_Gxw2g*QH?kBO!?dTnltS2A0MO>PQtwNRm+cBKI|=N`ac%F0{{JxGT2UszHN6 zZ9a16NxA;Zw@ThsgK4e$>rt2m>aABjXhdrtI3!U6A_~RgKRQ|mqGM3YnOLx(8IY2m z_y*rUNuM1P5ACJhgE}$>I!rc2tic*4hd+nEqRX|hr1(BUR4KTDjF@ub+c4x}r=(ANTbB9kFdyZTay9Io0XOWmYEm8gxA7MVao6c-bBCmZzXHvzPlP>=K zNgW@8MqBKMA~n^GCv^zD`6rRGeesF%xqBRwmSmTvgP+4^t04Ad#O6SnsbbCM8^^SY zdOjfo>d(6Hf8DM6B~pL_M5&p*-^N&(#xo$$7EzeLI4D$m^F7hYVTRoSu72;Y**u`o z)_lA6>>vu8-98N8^PJpNX{A9YA}hQ0>?l?%5g;AEp7k%PXj){7d=L5f^+r;dUEsGD zYnIQ?khb4AHH2j66~L3jJc0KHc<#EP*wKKGU+GIWS!J7LxBVS|jG`kKp6a%$3K$Y@ z?RVLnA*VKTwjT{Tm*|T@PtdVK4(hA$e-p-omgLbEP9UZdtf(!s+o z-ag=3bs=t!1JK2rKupm&gG$oIOkU%fY%}-#xINm|`~JkQ%k#HuC=J}5=ZKbAi#h6TYF!daN5@`>BFviJciJ=KX(#s%1uz*EqbTW z8mHy*mtp@%{zq4b+P_&KK47UFW|s4sJxoa&&RU$aK}0 z+u?uu-jh3P9(uJOsulHFMnY0NBBW#eQFCar+hwd|40k)4Mi5j$IDn}j_1U$-HbvK6 znx0E1!Dil?FCRVF62e#+Rk1)+vYf&i#?N2tY1=8HE z{VAlV^X`ZvzU8@f6&#Mw<}YrOyN0TAYp?CqS%B^d)E^&9?zCMtoRJcKQVG3NMGZx& z)?|$(zV(}3{XUtHi+U|>awbtC2q=2C`Ao9%JJ(v%;y6Da4Dt73;&r)ms@v$~av|$T19GZfs zOHS(f+LzFaN;hE!7yrLCfY4R`5e{Gg-PY={}? z4HA*t)ruHwyO+4Yn-fcV^$2<1Jr$5DL0zPyx-v^}nk$M^3=Sg76Nda?nbi4PpTi2rZPr>JLSP`8Vy{-y zi;s$WyuYjsAz=kwY!+c>0-&d5SGsd{!q9%0b7N=7P|X8m-PwcJ(K>HA5^`UJKm5Mh zBMqnhGK|j{E=JQ9#kUnXPE;Ak!j4{~N z$GnTPeU1fQ4DW@1H2Bq%JcOlfko?PX2YbU;6r_yK=Jx3|atQ}aotBm;%n%48*TpNf zUk*el>?H!uEb0_{pA+G9l>~vwSaC)KeKfh@XrV`K@IAJ1WFJV(j%(U5H_mGE3yjB@F`k;S66o zv`%Ny_qCb)qo1%EgEPsPp2R$Ul7z8Xif&}O)uT^_+e%G?eejwleSAIxek!W#Xy?{i5W{cPHSuJ2@cM^ zhXzX2x`e~ZX`)zCIDwq>eTV*ReS&%027Fg$gYGf~@TYIO2(R^mHl|9%M7fVDtF*x2)YSC+F=mQ8Vvnw*-pL%G65Lr7$M*xZUEV0Hex& znfLAT>4*)TK#d|&jD+MhUO+2d&PWcx4#XmHI^BwUW*?WUh{VF>^Za$n9{N2IdnIqRY>nG-zzq4%-%)-?C5KEY|R@Ges0w2BINO zjobx}c0aV;gM0ZQeb?Ms698fBshC=J3wuypx4z@Xc_(J z?%ZUn654iM?HS=~j=^oaS|NQiHZ+GbtQE^Zv+yle3$&XP+U{j#pK*5#VN_Ls!K?p` zR~77iGWIIRy_R(+EtO)kbH&d25%is1t1Or@e8X;(N_@G>ocX1POf&Am=z`>njr0=X z$rkCdvw|)oS?0le=L;5Wrb8bb@77Wk&|0@ZhA_|!usKG;on&)aVZHOsn3g3P zKF9XqiT@AlUB`P5`Ash%johcBdh&oZU|QT-H&AKEQDeU)_cj?F2tz(K=xDpf$LqMC zL}KVop-iHZ+}|rCZ$X@wy$7>ucxT{J-jgs-5kV;EDwQS$p!7|e354RcFYn~y!3{pCVIa|UQKp{d_+hdh-f|d+06v9`m z^9K?g#j9)Z%-60I}p@ZJvdgdFCKH-f4O72!nINZGvdT0|>3g2frBd;AETLCXtxJ z(iUmuz9`)bIrXxBvu3NXP}~XP*`ccC_rvpU;)x!->RhB<9-ihWivmpR23o(yG~psM zacDL|Bx?G54webLI99a_oAwR;KLNh1kmt5b!RM#@PwR!M<}l#;_}MWD=;;KK}>~qo_=x#^=6l zWp{cOg*}Vk=uHggi3V~ntdGbChzH$otx|;V>r>Q?o0mkInfu zt5C4Kq~ADwRE=4td~+?jr-A^hvaFwgA3wb`dJ9a; zsBRD4p4W+)`!jb=MrP)H!TLt==U7lpb@_=%4G8(J3eav{ISwf*`SzaZ;{d?iTfRxjU? z5Ds_>gx=-3qm7i&QGY`7|CpkF0feNMTzJc;w2^zYk}`aH8)U(B+N@V-c(j_MMvU&& zhJl`IgLyePX%<13^N}M@)Cv6zN#hk!Ai4On!;tu3zMbTq|=6$K?JSVg>+mMN;G=JG@5_@uLhpJ3Kh7=Sb7& zm{Ii7?P8zP6nL0xryKWM*@tfaw!{5;8-8J2fbV^n<(K#mEcxFdC-f^?gn}Rk?4QaL zsT5X68)_wcAG4%m&nEwnt7(fz{!s^++6R!PyZh0AG4zk^m<$&kAed-yYrb7;|Nq;_ z7m$#4cDOhFmfwdrN7Bb*h&Ge|@mBo+glU3eA;xn9nv~Ah*tn*0{Lv^6lm3Q`K?5K0 zBWejtV{rXj_`;7=<;`zqma7Sb`|}Ag{>)T_xg)vhwDC4s4Tte1yf67T)ZH%`pug?& z%Zq3P0J7gGlJxKP{`WzH5&A{~a)R!+-j-hzAipjAKd=J-@^7OEfLvOI8`b=}N&WBF zx|G0ls=FoDzXS!pjP1V;`0p2?R=2@I(p(s0_}6Lux9Prq9bn_YT30?dOZb;(>0ieD zr*+6QL1P090_XDISsVZB;33LLC{5#>ME~q7@&6b;5Q<;!O^y~q#p!Ui*96d7ng=SJ zZ$^b}r!Szv)<85@35a6Qfg(CfP!fl&DDKA(j~+j6k=!=|Td-6J3D25*IsgU9mm14O zvy%L28UDg+Bba^44gH^uKt_fHdIN?fO}VxK3>HAD(LQzEBBqf|;pewsv`aPKs^QCx za;s1k1x!ylPoV3s4gdPxd$$n46nh0GZa=#S498X-PHxw-)O2z0CrNa=y|QX*!D4pCPsv&6(V;az zJKA&rQPdc~?Z3`f=KIE^-SwX7XV+r{=p!W1?h=8S=&z1uppW!_>rf6lMd>5seI740 z`B+in!oZDB@~~9jCG1lB`)ZB9(8Yr1Rmm=BFbH&5OG^B)B&xhMPI;s)yM1stnn8E& zecN^sf{BRsj|1bQbKin|b`nCa$|o!xBT+R*kIW|$#10egH?q?sC<|WSp85{>QXS1E zDRo8Eq)^YO8iq|%g4M#jW( zT-lqY4sw?ZOq?${2(Ow%u?DuT_7*#R>p;SG9Qf80b?9^6%2JnrI`d;Wd* z->)9w$%>RbGarAX`FO0WJD%M&NHI^nOgKP@-eMYGG6!@`EN%+onC4p&x3EacS%`YG zSO-L)RKa`9f=VPRaG1HG^j|;cA1O5{c_hK|hw-5sXpof75IPN!U#0*`d|S21OfBRf z!s6lYU*Y;&F3RxZcU^mo8pZlw78f_qf4Hm;`#2mCR2%fnZ1c}YYul%a}+ zmRH-aIb9^O7+Lgf2QgHB_1K@7Mh+dx*Dw+az%C0($^!YjI{LhdbE>S+b&nuDo zmv#D!^$?M9(SolwY|rL`ydi2%MLk-a6K|=K@sjYYJwZX}2qd7L2DCxD*+Az@pJ;8T z{!HoE*T+?T%1$eCo*veg1FL7>Gx$bbx9f;(NA{PySuT7hE`4rl0Nt9Vk7iTjWezQ? zMx${~d1sl;&5a>Wd%qp$>2k3Q2zt1t)3qt;s5ff%oj= zDWRwnWuDaxX%<9UecPU-?i<@r=Ny1a2t(hoOLJ*j2rnn7`2O)2w)rC)my9PUzkX7c^f`ULw^-@9dR)N#PTzh2yQL9B$qxGj?ls%WjU8`fzuWUZfx_3dRRObqcl-@g|&sfE3~Xe+@v9ks>wGwm{=e z%&4~B-U^&)Prgr2)tOk@6YHm(12(Icli>2M+a;l8rXxK>aK$^B(n$%s2wK(dmZOEK zSUmFwGscG9NsA~ec+_003m-pXv*#d81;?_$4$FE*vyw^yi~x0FpfIn=AFG7M;>ARD z&DMR%<89daT#$fMzREV-VW68GMX0&MdGq%wlv$ zw;^+l{j(+e#fj+l?rpILi~a?hBwh2^f6Oi=CBIjGdiog7uamuy@U>v7LfhmYJ7EUn z&Q`o-qzBasBG?rJz5Gd~vaonp_}RNm>I0QG2!*)rDt_`t3;TSIi| zCIm^^C$N|(&(pHo{pK*Cb2+DklyGo3aNWesf|%-B%Ci?$Vz_xrax_ zA1xsH%RvU^AY4?HS~_SkG*jJ&Z396Ypmp-=`Yz4&oDd$nC%B=~UyRyhiq zO0{6>#z(1=3c-U@{X%Ijia`xm@pyo#>JF83DJ&aBsQqTGZSek5HwMX@2lxN5;i8%s zf|fIH4KdNLHvQ*U__^iEA|mf)-@RO^c^9u-<6zDxT+y$@iJ{`!Y48ES z?1*JT9xPvcw$ap4@hi}44H(qk_W!PIT4eYWB&6yh^Or6 z++JMUc~1C0tmAjoDJikpWnXShfrG9Czk#{+fe~MxmXXYRA_C$OaJEbGd2k)W_BR}< z5(z8zk{a!9O;NrfO3UVSQ$T=}sh)`DOMH}M_a!w;6MH^S ziMqqJsm_~Q6*{*ozP|qBdD*~wRk)XUck&-Cz4`zCMt@(W2&0r+PHb(;%$DoCt6Fy0 zoS3j5xoXb_xdw9+(D_;WMbGqx#o-#tKJVoU#o2WmYc-Q8TDOrb8B$BFL(hR0Zze5u zA_?7$NWM$sUfzq+saWD%wTh&tkproHSjd$KiU1%kSCYficl}sJf<}q>;3@J$L9U ze}2aoQeNbm3j423{)YvNiEi8`$Csj%A+9u0>Re(zUfMo!3VJP@wH&O%-Th#DpjC*% za!-R*`n@&5@%VP(X?)0JiKnM45SFR+IN!yIp5UMmRTXngc%xCVq>&Z!Kq_+n{Bbfy zZ~a$WPWv{Nv%wJ%$541Qzq)iF#KViXE}f9)zLuOb>5%nCM*z$_u@M#ffB+4D*@yu z!c&x;%|4Y!+71`~?dg?9Pko~|)j&hOn9>_8zl@#9Q~cXSD!o%G3q{ONDNAqvdgO(9 zqWU5JM6dnqGxvp?SZKo)bzrzr6XoHu2zmSJb=-TC+J@FfWAz$$qKtl>qUu48K=?v^ zf0a%9+xinOO`8AmF#JXbKwULHh18Xk|M%m)FAQ`och>W>(8tRYrTWG3eluf|qmRC- z|8z;Y1km;8E{*baXHWn8g8nBH{N1-JUD(g!8||AK_5bkRf4@c7eJ^0(^}ECV9|Fdo zLFCeJK#;!|1^L@e{r89dXC3qNeUpYjME>8)`q$n0->3DbmHe*}{`H*y@7em(tNj1! zGCoUvy#I$5z@O*jFRzp?gu$Zi#gFZU8h!+;VI{EKcNsB;^mFlHDox9?nEX~^Dv1GR zKehl+=sovBR3zY?->QcJD4x-n$?j$qGlYLR191l;ryYOzukk8IG?$?QjKjN`=T)!R z-v4VBc(rSxWFOEg96#(zL}CrEnb~&}F)?=C!sqs>zf`($z`s<#Yp>AlF@3+H z?AI~E0pDwD6^iEe5e7P93FHIaZiAh1g(Nh#{3zhlmtQ3&_uAX(WvDw43Q4YDwn@rt5UA-USO08<(h z2mSR9>Yis6GWt|7m3u;IU)Wi$zJrq|J45dTigsZx5;5%i*`sdRYz3Otyr^<^&%6;7 zt<>?GF~UC!y7RgCIaO%biRuXa-XE6oso^Qf!+fW`=A}mp``<66kza`wX?{y%Wv~By z=yj%a=HiHsNw;)T>rBB*!R!LDMnasNvHA3UJ>A# z>B3l8!!~~u;UAalO>~mTzxd4#SHmEX&!-$hjvkus=BPF$@87o7vj4r(|9O#N9{^Ku z?O2*@wcU+J-@W(uvQH=!&&$!_SGlDc=}%4N5D%8VSBV`s{z5p{#_S}@UhrOJ%fZu;f}%E!nR#M5z(M%; zExC6oSL|dbsPD4rKhh#4$SHm$qil?57jOnAwUsE@g|QRIE;edp$qW}b=(NdCE`0R? z64nyE+M+u8P(NGRwAsk=)Ys@n4OTEZ?NAe63x}k4EN<8 z*QLBQPRd#_H~6I8-49$@*uZgPlry+Z3CbV_Af`mj-m2k7uKYDr{qyS*eE<*Pz3{f* z=D_ii5*8nau8J3zkG1)5uEM@G)L!l@xqs55Wccue?XiRskRPbH#G98Lu#&4zVUWW+ z0{n7D0}ju&|9)jI|uI?#+Mk714n>NBzffGN-ydv%Qlqn53u*q$6|G9Yk# z$|hfI2tn^_1q#mx4eE2EX&;hB%v^!_lza69fKsjx2ZsDL;NN<2l2uDxeDhog1FR6Z z+;ThUa7yJ134|-jwcDs{@hA!)jT*LuY{z`k&5Jj|#9r1&PIc!2M2sbczd7U{m=+qk zjA^~_RH*`V33hW3SY9WDnVgL-B-@!Pfv05xX!e5wI`N}A5vHY^r{6?I171iqjI%pA zZAbJ47T9>MGTCT+{r9Tj-{u3{ZgJr%H@sBFO{dp_Wv|M>eyv47+gr=J; z(FRZ%GmxK0@4*9p68V6n^H7zj=!(YQ597~6<9*+{b!)@F!!Gpd!<5=H2k>ZUQye<< zJupETn8m?8sPS@Q)L$I%2sef~kEFBlC9?0SFRBQj;rLO`fOQ(c;hhD(U*gJj+fCnK zpxMfmPJBeolx>sopMC2)L6hdltkuja__82J+Xmk5Os~-x*f#nIG*xz-4Js|24|G7| z?o)$=>z;{B@_LNCzcGEsl68CTjn0#28c${S!p$hBZe5!3o-FwDfJd#@*~5;2e5Z%{ zSI!!2tWDQ%McEky$EZ<&M&DyCrAigy<~$IHo)0}iaujMlrT-Vd@NW-ssmf_kAec@J z0QU1>hYMYB-eC_LAKW?Z+TN*UBAadQE4!YkqN(W2J-qfhRc|m@oQS` z+^)j5qK@^a$UN28i&&gg zzWagWb??$~v4#Se(Y!@fRI)4!NWrxSgW%@${JKuKtq~CnTgH9`=QBfE10w8aH%f*4 zZUTWY_tF8wO7k;5(wp^{DphYdrM~zxa{m6x&O8@P8(sq>^NhjZU2kYsi*=Xr^hce6#3V96*tB{NUmG?!v2fR}P3ycAL~x`Y zINI>ZEuYevOgKj7Aok(e*@v{P@uP-a3pt4Kv%xYrZ5bLzaRLPFuVw&?%nq1wl^~*N z5NwfFhOhsbvNyfxZEES7m3)Uw2f4b1tZ5;!;~yIYe{_DfML9|p3LU6lB@82xy?$mx z6JiT4ngSIFU*SFYyU` zcmfFbZeO>DeZtO}x*xh`^8VI^C#%ayKdDu`hg)SBbE>1iX>QXbIy&Q&s^KKra}?X(%HCAv;@sWhX*Q%Xg zejVYO=nC$RzZLMDH+btu#PBksLDxL+3?xGyWDO}5<~g#6mH zZR-tqjvKzd?iH7%_4ej!w*f)|&C9A{89FZ+Jl%SOq?;SOM)$}GT}uO$O{(|xfVbMG(hhBoU zM8eB6wmoKZXD1zq$Q-xn8I^LCuJ~4QiY!QfvWYqyE7qJk;G^2L3$TJmUtiV`5%X}k zYybP`xS48ICghvuJ$O5KtGa6*z&;;6s-8sOS?m%nLk4Guu2Z5czxhwk6n7m-7O_GT zvbS-AYp-P^Jzc(`jZqARVEp;0bI!!zl|z^>)6g{Nj}9)W*@a+NfSw*$=@4`@({ntU zwDEu=$fDLhPM$GWyY`aSVmauWMe}=Dsn2EZo5#pJ955`c!;lnsgENCckMXI?Ushwm#kJHzdFYJ>6AwpKMMkIO)u(;tM@%GyKgzLy6 z<*-%3fEOFXVg0s4aHR<&4vA}8*vg_$TGG`lJ;NBxk(}fid{*VrG?F;}XCV3nQ|d95 ztVKelvTuh0AH_MAs_dIVkcOS^tvjxjmQ@uCKiy!DomJk}|CFTUa{iRSUiAUuU}U6U z9s&FRm%-NCGhxvuuZ&5*5#XFnU~%ck z+kBissf1AS_F4^FCvo>F+wn$z{RTkLq=yX+T_iEr7FCW#I6xTKgkTHnNopOQ_cjnW(D-Vc!3s{E0zjaFmIaaj z-EGF4gMQZwenK#I`3@87bVgPvY_IIP?!~N+V2>xeNXGo2jzYAtLHFJOw7ydKdmqBX z%EQvD67hof-J*2?+v+yGAi=ic$13iPrXpo{gtc3(^KhRaf8h9!E6=$Y3s-_G9M7|! z;$(?+2UO+jPwFTL26-fSU)S(p_zcrKgIRF5QxEL>Y!B{OIW|{jHLAn8u zziCVtAC$v~9F&!H%O*SkHIrJ~f2hw+CCP0s+??U)Q+)YI5^DQA8P6hgKl{N`_tkjH zlfy2PYmj2bUe1AJsa9?tJJrH9z-cG{w{mpPsR9`_caScY!r>1$>;dQEYesighgzCr ztU;o@6K!S`%3<)T5Qf#fO)IR#%pEz}#;u4X)aq>`yq{ z<*;--rcMOVvhH21MJ=XFz4P&(GI0n3*V#8%_cdJU48rd&K08*1g1?vi2-atlR($+! zHGY?Pc(_#m3Y-?M4pc&ig?`M`7ART-yAhto2o-|86rJ~GqOO)n%%i7oep*6I;f2Le za~8iqWFwcc${mfQ@T_-U#XzFqkA`1u=m2{UtxC+$DxdN1d9Fw0X7sZUz?j-z_vtBP z5h69Fr5ws2W5yaiU(v$hj}X{BI0b#fr1W7}VT<{Sn-{^iob2CSexq`gnhlZ4_kOo# z=F|mQW#&FzC`S;+6>rL8Fx*mKxux7)g_Fg6Z1SVm$O!V$DF>!@sFBl;yG9~Dd2Cj3 zNT$0-Kv2&H-YvAwY{%Q>F1F)#t%Le=>QDe{7_IU6lI$+DYvrt76RlU4DB1TV2#M3G z8%K9O9uLw$&`JB})~%3$o0N(PYB5=!vTQKR8}kr=+7=%jJ@unWVA!AIgW=#ZESTY5 zedh?)@(Cb-7(b$4~@Yww;S&tk z5vEZ1;c2AAk%Q9;-khi{ii|As_;5)mi58h(u2;37z#O>^)Ha+IZQDIV+v7;B3>nEo z2fxgR-8g27_n&WGn6K_SSMl3JX)%L>!wK@6B|HNw*F6HeHCJ11;q}1M5e7py4@?5< zvcI#xf^`MUGFlIwbL5JbBg;zbAU*Nt-R}*17QT~m!;g^To7>s4pI27OGYEqbmlCRK zd)H9`?7dkMICg2|M_-Xsh1-*rh&0%}4K0;xJM@W!@{p^(rH~m*j~)NP#&Saxl9w(7 z-_XKUTOD3_Q4sG<$y(ScdyeRsX;L;(KL>eS1(hc&KH1%VVQqF@qBF~vfm&>$hudQ7 z6gFEAHdht;_v0-T86=+s9@DkS)4|tL-_80dHlEkT`l5&sqsNCBh=Y8t4hgrqB4(1W zuxoO<-q_ydgMRJzr*v=ySH?m&SE?;hL1WjAOmwu8TG2j97bWH3>EX``%oA}Q+&h~L zhaH9K0*3h+xe<5I)<<!z8w)NxCXj`^n0uhs6cn{sh=?)gqZ^YpopW77~x zpD9fb9p^&Mf+Eud(nSx#-^i@dvPOJ$)H(je?68&3Z?tPqj?98H6-p zSyN^1vdfyl4Mm#V)s^mcqke4Cyb!^!*oxLEw?*I=Kn{(^-;x3F&^TF=({i2RgJDe& zYg~EFFIODxM@U%|YgtNY-Et+}@9L?%UK|qF{B4V0j>=fR&Xr25FSzhpIlR`P2T(qo zEr(%HE8`lLd>oNT3P$<><#vm$n+4~sEDcH4I|gn&9-#0{$gqhe|K+pU%T!u(mY;v? z?G(78&?`kn(tMJU1?P$ELGLl#&cUSmbwB!~ys)LZ3MWP5cIT{^R zi8olwnMIR>Xyw++A%)7J;i2-EKr(`5GY9SP$i+ffgsL>_Z`=HyE6tkn!>biv0w^>? zn?{Okh0%N$AJUY;d3H!Q+nM`)z#?%^~?r88LtZyL_sDwT8fctgMKvPj3OZcJnYedUFtPv&YH%IW{rg+(EZKw0Te4Zi_e6qjbV%LJ&>)ir;#_1m_>D>n zFE*}i`{C*Dz!@9|lLuD-I5KOyY-Eb?3{%5GwE>`61T|rAr{40)=iD4e$x`<~Ovoa? zN0JeWQ%D;#AQ?Z1xnl!!hG6I5Vl6N00trr_^f|@prwz-tJ@;0FV(a1t(hbw0I(}r3 z*ml**!Gs66O@&_$o_aL+LSH^;tDd?Y+w1euU3?6BkzWQi{BT4%Tfw?W=<=!E z3NHUe2C*NEiscN^HO@ye1zohl;%7vU7Z)jPVqfMnN9$ZttX~fcvWdv72X<>oUzs-q zRF5l9h?EKWPjtrDI^=}N%pifTmL^hDL;559tiD^RxkstHEWSI%o~%y{m=t2AT2b%W z;Ec=NnEqbB`1%D9u{^V26(86bj_l5aGYTl?tAnlJFxp_H2Z5?rwp}Qpg{8OI2!`^2 zW@bk?7Bgf$+`m4pnzGpL65a-T&r0b-br_IzP;$$$RY(oo7zTO^nij?D#r4XnyE{6v zPTOPBd0mlk9&uU2ZlC>K(?xv+mbKtX?epHO0=9MI$fPNHMVmS=?NHjk&d5HN%c51D ztt^!<-OG3pUUnb;2{8QY5z$4mfDG$I+Je`5%x>y56@V-|oPEqWYmK$?l1agHHXc!t zi7)HS@9T62sQA14?>|=D@m3QK+4Ogj8p0TA3dE1<9nHj;H38{zQZ5YY< zPISJi837k+dZb-zUZqOmr~}HMAVl;IpkRSd-T&n-jl<5enO1(4mb@ljILZiQ#s`!O zza1{oD`aq;p&Y1($>=uR2ZL)<(IK2ik3*5LHVz<1{Gh?SFt)T~#!25`ZW!<{D zQY9o2*`80aeaML-`r}RRNEn7DH#~@gRIu2ZIF3#SH~Ei3vLjI|-1#84K?|GY&*YE^ z6k3~f<7Gt)VI8AbyFZw{>dYWp3}UFvWDv+jW-;19a9Xum95>13tSPUyjUso zuh85#9QGUMiwetWx;bVL;DN6nvn2`T`coAbY5;}T zQE9Sf4FIqjJxFh%gQ0^U5Vf=o|3+uGJN@xYZ9D7+?3EK40FB0&90JA%*!1~29*@RR zWB`3Z@!B#1xQF-UbXH~Z&sTHi4pudS7B^Lt>64M}dnFKRm&Ej6dvRhdsj0H)K@KI+ z!%JIRiV!oHw-+w?{w5o60>ty9MNR)P#I9gHaKRb?p8m8*W5ujh} z=A-B=;m~`e?V74tQ=mo!1NEpQ;f8dPb@$R_^t0PHjJ_`21t-&fz^zz=^}zMUB61(U ziM4Rt>M|8QIVk0RwPfX#*!S=Bi{`4Xt>N_XqgK;md}y%ltc20_eJy4qkZR5uHPO!j z(N?ZSCTD@GumgU?@U5ST0Fwoe;52XI9$2F0gvK|v(+PD3Z-+?{b_wzex0;q_;d849 z()+zGy3--Bq(uhzl%$!P-__$>q%HtU{wyYX)!b_9Iu&T`J?lX4y4!dvaxFYApkH2< znZmAP!`B{`RAA>LU=+q=q^dOzAQqszGb&fWGUT=bA?EiGe6N{emy?}#j)doZyPs@f* z%d$7#_E;diqdj)s&sqg*I&X?i7PW9z+*(x0(-QMjxgbP%_?rl)^s2-1RJdoHvMSJ- zyE@e2Iie{6$jzHNrfF*Fek<0=Q6Nom$n;Ysex$cO;N~`(2X^?y@VtnrL$3{%yGVN^ z*Y}rrQEX&6Uv2@pREH^wpdD*8S|)e4suwcI+ip8Mw)uS`fsJ<o#SvK|_ z9gnueQiyF)T2DpGS^<^1y=?N!(+}p-zAjs{KD^yZ$7WdmYq|5&PSdzbrox><;1+O0 z-TqHGz=Fw8$9@3oH9C8VBEg=*Xd-8w_N6X_5_kBDr}CRnH7#nMftdd zkTM~6^>cpjq)qT4&V+^+&W<4XOI}&2pt>@7?GCNH{Ab4$ZcTSjGu64cS-g|s)5R2R zEQb`WuUe(*iPXXnsjwbl5}`o~oQP{^Dxt^lob~OyL)wZHb(D6WYiMZA1^6l>p_Y)# z4FVjXOa09FAN?2NWT1qMEfn!5>QAdKZ0C;8%vml6J#bE=w&^w6_1~ z?eB@!wLsaF%46z7h2SJ_xD(#AO8$23G_ruoFz4#U)>MxnbB2F?6VUzW2YbYG$t{P5 z8ScC&w20lKM%1%TMa@_(6P{NYoSDh^L~f7fX|{y9Oh!jm3~s{wX`CyrWYAtTAV+@sx#(^`46kgp;;z^E!%Fd3N4^ zG3;4+dXoZ2jZBY4C{k@GI{-V5&c5C%+Pr?j1z(XB5GM*?X~D(JK7fH_M>ib}-QDhS z#;pzWUbj{{ex!LE!0+a`H;{tp)lsFO(OQgx1AraRM-Z2GS}KTaK-1FAV2;fOXQ%n5DtcHRH-L|`Jjo!?q9bb!%%&n`va1VTrz@L7AdulwA8Ky8 zsn=%zm^^tEnNI<)a(k{-QT%@trkDbY*ylE=yKa1UBL?yrg-Vm74(!X84%#x497ZBu z$KW&J9nO5A>v_S@W-;SJ4XSACwkx4=yE0TVV(O^EcWbk?c5$Q6bIz4*X=~UTI}O@^ zpF`n2@bp=)g`eb|AdAM0qKvt2v6iZn=F<%T{J7p``&X_bnYNYaB|eNAjn8|!x5}nr zcc!`XIZkIasQWRwefw%O6IO-mW<9gYJ=xN^=9L7(B7Nt_Q36;15F_gmN2E)!H)WJ2 zce~sC!s2Vg{&OY;U>&}&NEGYDj{dUUKbWUq{6CwhDCh~oI!yk@`oxWHN{9^i1181gnoiF7~drS(|npdwD=O za^ZWErJcByRMiea4e*l^X-=_*fV+Xv`}u=|f*P6;GF zj1Y-6R->oQRGNd z&Ri(7F>$2b_S{mNFw$_xci!)_VYDonZ$Ny3#p&xkUsPdrV*~tC@a`{17b9D-${?QE zE|21)XCAd<&H-7*fLlHq9)vFmRvQI+>>Y$;jib7Qqem5c8h7$@h=l7uSJ z3#L3FQzj$`t|ov8aUi&Et+Rvcc7nCm+7uk$NX^kZSrE;1VF$93xG-4Bi%XsKHia{*yyB$liT(M=VJF(xW?E$2^0HWBdMGQ6P3HR6C z&Lr6^X@_{D(g*n5^G}r)*rpqsf#F2z!2zV3nf?pWq$1pDaIHRA_OED|KfKx>qgpL~ zxwnsM&`u>CuJ!Q?8gn{Li3Fel#&hEBpaK^2K=jB-;!RD81V+KOMRA$YUmM;9D+5?~ zR5J%7tdL=>127Wdc()j1T823|gb}Vp3JnX)e}Pxl04?;kjN&}c+R*_o8cN-RXL(U& z80L4U;UY3rrk=|(sGno=lfVA-_pi0R@69}zvC>;MfuW%LQ}eeD?yT%}%(8viq9)>QRX-*(~{3O%ff4tPvYSXv1aJ*syd~SoaLLJ6}WVtGD?D? zc4pGuaA;^AL#Z*g(XUgFo9NgZ-k#2lk#)<=uz)`-=w*sNLin@gv3?~)u?1~co z4OzB&JVI?@M~aKCQ$s`>W&w&7NN8{)p}@oLIMEj+=}!2RahAsLDk41EMh|LdNV&|; z%l6lei|D@G1$#&1M}86DvMp$AfGIzy9;=*q8}qX6+Tihf0=dUyS;XNMf@4@;# z4mD1WT|w@yw9Sh5ZWkGB!lYOY0mkS08nF*F{k4}V4G+hF?ESrr-z<`)d?C z;gfCvRw_bDepUwynNqgO-)xbezsg<5ZkVYIXkT zz~w$U^nEt?Z1v8sq#h_g3Bw+(uCgy|4&=CQVCud9w$mX@&qBRvog93&&4~Mg82J z7JI&inLAJS7;ABMgqSuB*CVOX*}|ZP(hK?FdY7?72f^+7Es}3tg&F1|vpaR!-oMHC zqoka#_HT;f64`K2Q3mQ=MVvA7vnpcf!RSXB=OW;gD(~Ta@ZJnIn+WD-Uu)5zu8=xG zaHe?1-1fLZs&*25rHcz_Q2K*P@+UA0d{QBUeCZa*fMw;9o%fnVDUZ>7-KQ0=c+3>G z)bm*C_iC@k?lr+9L}Xu56D}jSzfwBL!f{SH9E2PA?@i91LwNpL7VfE9XjEHLs(4dM zo0{Ir`e`v%>T|z7H!@ zRkDyVmzX&h%C-I+SMf2JVR4SRYa@X%u+pn4&Ei`K>8PT63+M8G1rjYyY;+{)@vx!f&wZuJE&$<+$cncQ zt~?x6R%O}XMoi}mIZePJ963K|46l^Om6ElkSe+&$QBo&zV~g8;|1hb4q6~g-0*PO_ z9?*NXX*!$@m~U=>4q9EXs|z@y2M0Yzki6jl_KAcay?-UgRZ{T9o7;i)&y~0VY{`I< zE$4yp!zE*xFh#*n4~Ns+?tpLxp;9sb07{Cb}>F=QQutxq?< zmnyqcguJ5b(_FKaJ)^@t0hHqE8YeGuKJndVX1pq9KEHXvpl1RXQnUQ=C&c0}eX4bq zO=+5pv}@wn@RNX0i`MOFNyAFbZB%uTJ4eK{VI6>!1fVR|HRu(!zhkGoRdWG`VSPU| z8JKS30xjJ8a>FDYM?Tp1WOAMjSN2oq3)Wmr1prLCGAvJCTgoiV)ny)bbo|)p{^{f0 zyv!Q!PeBFx+t>saxT^9U?5>&kM(X^Qk z*J|HC2!N6Pz~W-O_M@tczvy%v?sW?6l%wO{`=LCB412nl4Yr&OZ1NX*qJaf0fc}Fs z_5pJgm3PLXPN>!QMC z^g}0&Nb(gnGJ{$8itFZq*8#MhIE!L!3wlUHepbsh#NTcfKy(Mh7HmDX8E$6Z74T*= z3cwzoHlGZHYxOJyTNa$K07O!n>s&H0JpR*6SJWmnxh(q=%S)wLr)F^;)|>XO>lrnw zquPNRL9%LPjvlOer&0ZlW7};O3!CroKx2*5?hQ#iq_BL=z2wud8=eCqf9fuO3Tw~` zfyndFZ|eQb{g(Tc)ReXw*v-<_HcW@>>5st@R^*+WO<<1#lg5Y^dV@ajkH5X+x5ajE zP_iI@aj4EIDqC)2N%2Hnz*pEng;?dOt)b7GEz3Ur2?~E52rAhhfPpLB=VjkBLd0uT z>%;f4i~@Yf6n1dENd@aE(e+;NyY#F9X&)X*ch|V|o7J6K86V59g3WJ&(*_g(jR|Qr z$*u3NRbyi~iUxV$Fvr5l;FY-1RWX$Ae;i;LPb^ufE44~f&xGnDI z+*~tqX6Z4jUu3BW%D!e^#qXqKh`mBZ^1E>{IGoiM)RxX5Z@UkC<4o z#0YUE4~p0{e$8~aJ$prN{J9Vo%TRlD^|V(0rIvdsX$6mj|7MSSxuPxy@RzIVJxT+K z@w; zbmn|==VqmIwo#T=B6u10E2F>$9@LGE&NiQ}ju)}iSCwzs1BkY`0L#ITE;ua5Ta{{G zd{}a#q`OE8zXwtM>*LH_IRHTTv*m+(PlQ2yrW*2ish8&6L=8e7UT!`o9}u7->woQG zqPB;12!L@PhU@S#>>Zb+<=$MV-p6vAKbKmwE2ozzYB|~Y`Y24&zg?nh^Qn@`-GCWV z&x3*iyQ7)f$iKHJzh^#0e<=Mn;?3w#LrE9xv#7_ruhJk*B~~qWj>iZ)@2hBl4yGtf z)Gaoz4d0l06tWL<3@_-2kPL-O-*x%Q8FS-?Wp0H@Y;tpe;SnRlzp8}nU0Ck>Jx0RX z8S7m;Q|np8n>U7e1N+}Q<2xe;WF|EWr4;YskmUf10&4nIH$L>yiopEy9}_4gy^CDm z^3Ln(9axdmV^u?)sHB({w7Y=vlOGQ*`xOK$gtSbU(KpvZfz4m2+1HnW%I6;dr$os9 zmM@vgK9uu!B^s}6%hqTUk+LDP4Y}rbE;qj32{#r&9E%d zrXaO=2)gANQg-inC`wspS4nB;eMT5|W;(6n%>G9g|7m;QUjPvOv$yqpYag?&Xpz$f zUmv5C*zg3c%%#0V`Xa=3jPsUf?e?t2yp|F2b3nemRXGvYcRZoCFmDR z%$v)xr-IwLU9MuKM86txhdpFJ1Fu?8W7sQ#&kN6Te)jsCOM;xxZE)GBnOq=e#EM&r zXwgkLpHFV#k(}avg<@SZS7gkK8AuM8K30Y}TilQ*=iVJYdGZ|N z{pUBRb~jRuD&&@H{Qj`F2YiVs5iV9_>nn081Esb$fBV?nuZPOantEBwPC;64vrdcm z8<czw)6t3s1R>(UstiVNJpBL8;C3SQ$;N_ zhyR{X0Q2x}AO)&9@^#8bBljxhHmY^FfVxol5Gs_BzA3c;c+|Sb?Zdz2cTbsE{%4Bjg?ta8CtG|}ZCSIG$))lvcI?Rl)TPp?qJVW9qN|uEO)3oaCMNH=o4N9)n zV|M>^6*Xd2z0gKVaZX5$&_eeSEn*5cut)9fc2@E;`Nv~!Kx2{wIj#jbo-+UWu}P)U z??)+Je4+1w&>G=y{27=DIfG#ahqZ*C1OO5tfL2bBhZ=7Rw68_lX;Phk5Hq-RQUCqL z^GZfHuO!3vvA~*(q^rgyBdDA6lDW!HBn(;s5f+%GBr;G1eD$tTvAabiYji;Cb=23x z(^?AggL_Pqhdsq%+PPE+GoH7b0LfSR+w)Np zWh;3w3Ixo-9Y%WS9IHx5y{DD;<9mkWch?A=pdk@2l_i*R7VK-`7)Q-e0?9>J6?rsE zCYdI-P&C`V^z*YgRjl##ZhP7>cwkgC@JmH{iUR{3TV|XM0KX|G zSM0&f!vOt))(>|`JJkD;W?NKD(`rKh;yentzKLIbZ&uQu?teZl9*0>I7tLKHtm`O> z4EwL1e?dA~E;u~xbR0%G!HRh&W)x{OMOMBp0RaQlpD{NQ$cd;4PF3a7EyjBF2|6&{xG* z_s9kQ48?`|`GrOa&z7(?{Ig@CU!2dFs4>q%cOCbdvDiu@axX8$a)2gzQC9R9o-~U1 zHJx}KD$A7FT&9n@ahG=1Z)-w4n8D|=*PMaSSNjyhL7t_K!LY8^;l2pfhJ@ccQ~xqp4hyASg$x=x^R2s|XUnYdgg_i>)>f4)p^>b*A8K6qWp%SZ z*uFcoZxOZN0NFYr_J}uXm-MVcgmospiQhs`;ZSUy2vB$b@u7D?1{LO`um-+5cAoZj zD>YH0Y`*QKZn3q`yF0+%%v}O7IIwqM=ShC=Y$8SASo>i{1XMr+8nyTrC)dTo7YTd# zxQ-O_aZcpu>^0gcuUm!@)mwo0_0or|WN=4kg5u^UvvU2zTvL75>*y$Eh2TeAp^H%q zjdR?8>Z{3GXwFVfK$(iv5v`!FK*vyk=ycl*AY|N@%{!~@%mP$kDu_-OZc&vas*tzF zsr*4{X9w*Jcln?N%U5Z)08>qDkyNymC#2^zy4jWK&$xfuz8L+-@c#EBo|ygtU|ph| zeLymWgDZAgtOW*c@rDYl9Puk{9t(2CJVk@dWZ1b%K5)U{+Jj{_=;X4dm%-0pw!8Bu zaYK5``Z6wWqXI?;fb$f;a=^h!P4%mn@h?0!92GfPVG2IAsl#{tlWJIcUCgP>FH_Ys zu@@2)el$p5@_`$c*EGVtYv)yE)rJOX-;!|VZU9J6V`Jo3c9{=B^nN_7DaNlST}otN zlY%2YNZK;`exW@5Rm4`Gi<(rj3eRVFa*7H{gwNu#l9591MfF!jPuqNgP6`|92gZMK zW)%nZ3-U91K33Z5K~yvy&p_LgBb7`z97*|hYOwkl_C*;#4TjnE&EX9o&9eI*n2vBY zIiMyM-ZplnUi~maWWyl{l-~&d2BADvxavf9HclM@<==>E7MaZRu{Oyvp_Q zT5u&bk7m4?4Wa<(&P1)k2Qi$<=J@f=79w=RlBwml>&?cn__g#V(4>Apz{_0Z z;+7}rMqRp@)W%_*!cq)5w588X71KlXCrTz^pVm zXta|eAoD@3z)^j(#VF`g#e9_c$ICm~KU^0g+%D?=%DOV&6G-M57L#rBd38mL9J4?u zhwrfqy*uO8mw>X>=3aEFoaQyV{ZNfyBC_sql#BMTDoWJx7PZDRj2sfOElxL;F!v(>|XvHZRtG}3C~H%%UI`Gmq6OzS~xVVmvtq|#(5A5WtAEw5jkjX#U_Y=0QfBRgEA zmBszl?R)qeYTQ|;gGbK2HMABO(G8bfHBWTRVlp2vLuMklo?Xspz{u_{b}5HcRX%_4 z8R1dE;_Qd-{K9!V8zvZljP)$ZoShX`qSrIjrPrBr@w7i^hv1!tVBSGaa|d@mc!tV zH*)LEY;2u6cSfQUDp;wy82DEL&-=wJ-<;yH$Z+?{mbG;Gm2ao%u@>*LZ~vhMVD%rA zqX6)cliS)$mG~zC3l-i;zZsPo+a$;@Iew%Yy16t2XPv3SJ@rIrY=>M97$<6Q%oF>> zR;oHHkI7%!N@PynRq_Z4S)!#cX5$kG@NK}|G( z1i8Ju!vsYf5hrp%&38r$5`x0&@8W;vk5&xUfR<8m%>64{y~9zksg30}#4l@O-R>LR zrta>R?yhLCbQ> zbSfw!=)KB@Md-Yrl-Kyj2BzXisNrsuaK($N*e1^t_9dXjK7AcFmfO*WjmvxiCON>& zM?~Ci>G57qnoaANPQ#iGZuCyePMx$<1=E}|XVZ>if;f-LPrO{rzd;vHgsdhR1ugFc zV!;AYri=b;k{ zYl+nGSkUc=jJ6;Ey`U5LFppV`wC-Q5W$X3HOLNk`H`&|~oE=%&GVM-~pFKw#g&VCr zrZ<|r#Yu&#g6o(JHVl{dGPT$nj!WtmZ5#p=txE5~XUv_*vnmaRn{w=xO;Dyk6K}Qa zOmDFEs_{<=wsg8j@EoM}2M|Jn+g3Rvn|8zc4W(}`ndJL$lF*@6`zHa3s1?2-8^kyo zE$ABvXl4F}Ry)cqH?qRbwJrBUcBzwAiO)iiDPX+pZa&+5Zwqk&6Vu=}6N8eIT8nPL zM;kXhKW8A4w_U|^;LF>m%GN*9!;gc)?P_Lt3WFx%`_Ic$lr{p2vu(@GzD&dX7pIPEh_WHXkiSC}gl`BLf@13HR@4{=Q z+#7ckkvnL!st?IX25u|w!*8D*A*^{fFO^luhx1R)cq#vNrm|kUx$Z-7>yYmpNYBr^eNB7IIb0stwL$U) z*Xe_$!9Thm>yLCEd+cri^>%?WyA>YI@Se@ zcARSneGjnlF&P0sm}_u;EK-)iG_Om8KbWG^Gwzc|N>%D1T|BOrI(b>qL*K`ZqGGF! zUtM7*c;qrRDiqI7xl|zE_P(hPolP7pvyV$}tvA@H258f*6N|jNw{8NUGm%Ot?@abZ z=b(kMEw4iOB3QSs>S5t0P#j5FcBj}5-jL(VD96;b;~K;5jVz#b;8N3$9g5Jv1}@B> z3(f}vojQt{36dko^SNM29pFby63HLu*bwxnf!={4SKA(xZAZDUtNfAxS-j)%rn)x+ z28C3r>&X&3z!Lg>FqkaK84JVTH0qd#SE6G~g_iO{Eofu`2n0)5UWxkFSOJ6nl88zH%JX2Al)HI zH_{zSmw?jU-3;9@z!3k-`^0n3eSXj9!wYyZGtBjkz4zK{uZ0L6+`g?SKu=mbSG`=O|f7hW-2V5BxjPN~&X z=zZ%@^NJQ=)jtzODR!aj{HQsh3vMmldoh z>dJ|H`ro_HY9JG;N;k4CHR%GZP}>`v0Rw*fI&Eocl8|N83#RZ!j*R66I=Ljp$bY7e z2hUXbf8!uq?gbGUJ;NIvRrO|UHs+)HNK<83!Sv2$!F|R1AbBJDJh%>HM187J5=V3p zgVypk!aj5qm_wYylGmYaN#@hYWO!M1Hfj>1cWyq^a^ux}2xM+Syx#LJ?6x^;nA{ZE z@Vm!17$wj@3;{5NU6^IX50zpQOIFaXe=@WqT=04fl?ug=^z#0VwtR6pym{6Ej!nLU zy!kBK>pY6@5LOYsT+w{AH>B0E`Gpe)c})QMqkYp&0d*eZd7IZ&t>_U5W~F0jH-eLL z4SzXYPL(>|c6<%b_z6w*x?17hfg!@^k%KCq$($}MIJE6%;D{XUJeb3KMBGuQE^ptA z&m1`>B;Kjcs;flTrr9_C5`tzd)u49{rVC8K;cTACO1|(W%}Zuq{`ZFLQHE934dupN z!FZaOJO;&x!sziCn-v3kY%F?T6D!i{%5jqsbA2W_vfC0wS;y>};14T|Sx7UDB|ak8 zqsbZ2G9%Gr0j3Cul5Y}R>4~~#;6)mr;`tZZR3?i(kJ#M;K%MfgK=m*U(9GRxc|}ZC zp;qu-rv@RTQy*;UD(k2T?Z+87+6rD2?!(eg9h#oHPm>e1Mh|bj&C+fSw?t32YS=&7 z*C_MJI~TsJFSd?&{8%aAgP|S2Xc8k*<_sNnJ6Gbnsl`}Qc6}l(DqMK(va$oG4c49F z=uT=Bs}4qbxZRiM?bDn;XHL^{9{IAN!cQ|>06xD*So)*F+xdMdz$5G^4{qRb^NT3p z#NcB8Y?+N*D93TP{Lg9#D2aX%jJB6wfcqJ# zd`zV&Dm0BqCppTWqEf74krnkDzeeJEm2IO)D~w4l+uiOtuyBhNc$#yFJEO#Ce8hMrp;tNW9-C_w) z?K5~s8sZxxoBf6%4Z1K5-K^`y#=&3VFy-#H`tW65mxj&_`CP= zb}F#?Yzh7p+xf~BjeFH6`5O96_NR5NJW==7`o#zOzBr=$Omeq}sWz2p!!ZS~_#snM z+BdZ(%RYb%&d-ZIr(tPeg0L*Clssjq;JnW1oWX%;HH}7>0&zo;B#rIuYg@>UbipZ&Mds> zbWW|XITF|5O^V6==!WhXuX&Ag-<;lAo(y@h-fJPvNnc`Hv7GH3t#jz&_um3_tb|V z=$##$rb$sdSG|g1`n3F`S>l5JK}Xt3p@zey-8B7C4BtI|xIKoUz|8a^aSh#kP){Rs zc1LRF#Dl2)rMP@drcnFoJ2lzo_f5GzE{-F=6x-YqCabHc{<~fA8u{WOti+4epz6FU z*7SZXB)R0^mltJUUUHWFlPI>a5v(tHFuLs~M}v3%naDFRa@g|Hhhy)jt-fOaY*P5m zA_CUCIOccTeC=pQg`TogE`XEsJ~DgBHsL3vO6uiJhc+x;%|7H}U|@<+!-=&ih z&!K*2?w3z`yP1XK-Vg1^jc^N>sy|}>OGgV1?G#9g(ZYLjHWU^adiFZ%Jjm}~YuGsR zeJ%EP#1Y|VnC;P=F)%D*$};b-m}dLYy5(a~-8ubu=PX6v@c!wqhKWW63!AYTvmDl< zET0H%O~r)4`5z8Y_UDTw{h3U`Ra!itjO2SW)|&DGiz7Q?KS6 zaYCkd9m6;$7jA@Soom0|%jQE0`R#ulx|P7E1yn=dl~<4jH^i4xK3|$|MzDqS4(!~l zK?9j`T#rwg-J^X8@meCmAw6c2)Kk!6&(_Y?U?8#?gZlL=Tlm z(f|=+BcL6Z4&Z{1xi6zu4c>j# zVOT)CJxgyJEMy-i*4$lRfxiq2ApND6{Dd)Ea!Gc)zhI^CMzl2JPfRR@{WMh6-KG(g;_hX_) zz5(?kJC}rRsryV*#eD_ga4v-c{X>2LyA0V|YI4=DTF|VR?F6K(T6>g8`It<h2T7gi2=mLz7UQJIuHn~L^?lS3Q zKRe3XOYCDSXmSY3C^-OCxb2L-*%p}ac&EuB`ki>msJxI#uY|Iw>Ra%N#zGHP?OmzS z;nBnJk-5my%5Dm_m^3V)N1EW}@VSOpk%5`TXronni9Z(UWXxR3$z=g@Cgkokc_5*? zTO*5kZ04AiZz=tIS_0GI_wahhwCVDVA*T2V?#HwOMM{PYiH;TrgWp~z8sb%oKXL=1 zciv{SQc#CxI{Qm39W0vaKVllq>O~g&)Ao7C7=0WxL`WBUIUVJ}B4INZSlIwYU{~o_ zN6A}LRMWUNf|+EnzTf24-yLjNQV2y5-f6KRmukHPZ zwJ)Q}6gWEVebZI}$8SsZw@R@j1+!0-M_}|Cy4`HK&1ATvq=8o->L8Yb#K+aa4y`tm zBGW9-Uc4I}paM@C_2D$##JG}Gtml1JGa=$vSC@MwoL*WoL9gEq%)tc(Kc4ey4L;h< z>Oj7h?~;su znnNIJO9Su-n9kHO&}t;DR@8;W?#$jl1TEcJr8KY(w{4V{LT$gvL>bUm{o-ua>B(sJ zI))b-y6u|b(KJ88FCGC=DfHPWkBcv%(6@t8oSgfBxKgH!JKJ(QVD@11ywx(N=i%62 zf;*Q1@TnEHerrzoyLq`wKL#eu`gVn{LClKPeTmU}J{sKaTzopL!j{2$tH%ORDn6hZ zKSLOpOp_@FmOP;E64x-ve#!2xFzYsiVA1ml9gG3YzzjzwgJL7dms%OC{n6VKrWW%)ywz4tHK3jpK(A>NZ!rxM7+$kL3z5@w3ph&^ztRO z0CWeRJ`6GL?#QEyxx}lasdPfoeWdX&xWZHOva=nm>E0@MyxfH8wc8WAE3JaSe$9D= zQh6aB5Myy`@O;b7 zwEm`;_KwTJdB;6$pva-!`AVS>8KNL`nn#c?8*{{PuzG#Eu{FTn=2!x9&<{9jlnurv z+lI`{0~2iri_C(yxjF3c%l1x4e}ILc=u->k@7IQs)p|k|BTnP+URtxHni$iqe(jSB z^5?tB8V;qZZ3c?cpT!G@Gon7*7q^K9U7N0th^7fQS?x^s#WVEP@68>bJ=~k+vUTaz z*{(TqqusI7Ao@TtUntkFPL#$5N0Ih<9X~3Vm%^m(lv4TS8I;p^061XBj&F&j65DsF zQ7b*l;3XIE5@E}rJE^I$TZ}UYz=u)zwtK_M{TO}x$|ngHUpp+o*js@I^Mf?KP1p>f ziqWz3CwrBxfJ==tf{BRReeL039h-+6c^V33X;pkaMiWUd3=RrOlv?0;nusXqm3WhK zgv1dltYY!7>KSQ%{WI{%UgztUhMzoyDcxt`B`?iV1EkbmDEAsQhZ1Dwi_69%rVt>@6xH7bl`flwF;6Blf<=y4P*eKfux=NWhe1{Y~@QZ?eq@ z_V%woRfMfdo>tF1$7&Aue!uT~KXpp&KFKMo08Fted5%5;fb+qD=f{<{@my&P3y~!v z>mu1VjvU~NPr`^2ufyDbgQuHZ$>K48KJQ!}PUc+-bfti7i8XFq32n}}?rZe&OV=F$ zbKQjVZv@izt=h;=+KwRNdixifCwr;~+2~yLl>0 z$uswpd!r_QAg?<3Q$8VupH!tfOa!joy5cbh9Qf8arN^3kyX6)S22*Z^9W(zm@O!)B zE0e_m>Kf(lSSaNXBV`vXS_FTj1ypN5{9NRvo$;ilq3;2m^)<~V zJ#_@VQRoMTXfmpagG8M(m8~`(?ix<@o)~YY{jL^y>gR}%9Df_)TyBGqF-$P?`GsHA zOW_vR3ElU^0IC#ZX>O75&CZfG>hD%y;RJqLf~y#Qs>n^4{UlaCN@E zk~%#air?5Ab3CcWi`bbYJ&~jovqC1{g&Q;e`8Hf%#QM~3DhFtCNiGlT{n8L2(jk%ze{+*rQlcE&3U%1eg1otG*9dYcfrgF#kk4VjnAgtl-MZK0zI z+5A?lG~{|=H`XaFbMhRl3u0zeOnx7?=3QJ++KNTS^LiIIVbK+uQ3H@Z#Puld4}(X` zcLLm(Pkoh>M|tgVxZs8BqRjXbhGlZ}gj>&CGx<>yzK?YJsEZH(8Mf1~I?a{FK1U>@ zr4t)f_ABm$4Yto_GIj0KdmgXl@N+h;tC`kx2JEnuGSf zV!R)^%b0~ibZa14*MgbC0hE$Y3{}+@*-g-h@n-ZK2pu=fhw$x*x?hQ-m;^jSI#p%} z-=U`SFX|mwy^oPW+Zy(7ST{{O$ayj>rU?HnLpG-s42j_GxF4gNVtiF zYr25IT5&kjdp9_p0AV!i@pLws59an^!F6Sz<3~+avY6le9 z+e{^F1<@*kQn<}Q!iu_*a>_Q&7xjggq~;UUHP=uKcH(zml@yXxK0#>>N*6X_o9!Pb zVCd>so-+e|eQ0QKY#eW1^8IV44b$aCk0VLRL?{!{=2jhWYWM-X?<^dTM*yt?dGgQ# z%L$!bYWKql$80Thtw6A7rMG^C7o56y3BNlZiQ>Sv!tJ4O?07P~ZGHQO@Pokq5DuB= z<({2zuIn!TULTG`BJh_$4};f}nM5A<_ByMeQ{Db8mKU12EW#TZuETT6&Xl)sNko6>nI^aVxDH z`1C;C`uN^$x@@k-Y2$aOE}dsa-SOyhqs*F_%h$RYJCmMByiZgRk~X4Y{tZQoiPb_B zAxfc)?pBP3kUNfBFWov@-D?I5k;2J0)$5z`Hge@&95G>wL=O~cmLxts$FxWFs1x$kU1()4_sOn&$VSONnG=g}X}xHM zOi7YzY++qIL&glNSox>*uGnSFX}r(wI`sZAmri-{CSql`3Kzb>D5uU?k> zd<$;7CuX!#_l8o!A^eWp$3RJS#08tip-Qx8|pCltTXr^ywJXI(2_MS%|j0a*Vc>aB2>&WZ)i&nY* z0OeM@){48>B5ZhpHtPCh4jTM+pZ6w5B||aX@=516f+?XD*}VkxU=>gmThk`KofpZ? zUG2zbK9P}&wfilJMc{>I%Ys!UjTlW$ZO(h4?X8r1{qMHM!>BF!eo9fKJb8P|RgKEQ z@_J%If;L&QBJb;$U1|-++S^~-EiaZG&;L+Q-Sy(EA04rkTNO3XKi?kK6t|TpG&;lw zaVN3sA8ms0#w390)L(XhynzNlFSYP`fe~W0LVk6iI-5u!GG$x#8=$L{Q4i?sQP3>siba?6p^u-zv>X@ZZi0Tjo+=6#g2>;T zM?_>Z$!^p89*=Q^Ut)ZBxH_0qU{FbY$=-fZBM*aD!i`1p3YMWKOMY*n9^Bv*?s7te z+XVwSe?JQ)xWl5AFRBbT9c~;a-Eroek zM0@BithALq+d*aQ`03(`6YILrHIaA7{r%3nvo%yI(&Z2vLn+B*i+I3*R>>mX?vxIJ zGdzi&w23Dbg8j7mI``u27HQ-i*^I*p;jw9MDE0>_=36vqtJ`HNB4YN5cY`uwkUT=? zJoS3x-t9(d&;x(ig#_|?(^6^Fm(BySKS8Wb^9VIfe z?OPz>^q$=qcMTdru7E*xw>WCvhLcW=sL$A8rCODVeoVOv1>(eU=ue%Audy|azhnW% zQ~JaFHd%c12O(}oZXTk3MWCLpOb^e{8*XOfM~Y|9gP$3*JHXq8A}ukRU&H|Nmdpo5 zcbcFNdqvrWRYSpimrV6x=mWPn*wr9zH4pB7$tEV?=HO zHxCJ6bKfnqzBGtiLKax-Z#~PDGqOh7|6UFV(@pEid01lB&Z)-lqustL888I``M0E7~L+r-Ozx%I}z+BNh@ zeAg?{D2{ajQL?vPsClece{wp+B+GlU?ENKxsqd2$F%DqF?3dkaP@f423k>mGn z1&)e!CSqOKhH=I1DAHn~LZC(n7i$RqfVAixjDr5o1+ewOOrD zC@#~_k&kboAmKsd(diM@V?_+;9^+esLZji=_;QSh&2G1k#Nr~H&D51PM6}B1_!W%{ zTn@vwuoB%X{Necw>V|V}kWCjBtXlenlIZ8bdwz+*;O6hHRCPATnE39bNq@ILrdCH= z^*}RbWQ@wf)f7%TUTe;G*&oYTZ&VanD|44X;&?u<)JoGa;Pbkxfv%!dZi8&>Y}M_b zHpZa0)CNU(yA9}D1Jd*4FkZ+#>FIRZ#~VWJ>uo21SEH~Y6D3*K#XKTvP9#O4 zQq18{q+7?B#mWYNJLDqct$`p0G8(~d=`3&3Dx8aq^G!9ZXO5B z&e~b>Sr%8l$41uIg0G}KeF?#dL_!AyDs%kUnG7phUo>azm#X%NZ%O#cy%wF6 z^{yq-c+2x6l;uuqWunN)*gpXB8DCe}oU$7C_Db_^z#}opZlg%)=U%8wjId&N z^-!{|@()PI4n9z>`TKI9ZFP18f5ZnB-ItYnj<*;Fjp7!1>XJ-#b~xI9I1B*3AiPYB zY#*1nOTo%m2Q6x#MVnin_*cFI$qM9U*Sm#p8WhR{28hYJyI0$$`u^-YKz%efmHfs8 zZ-mA)cSei=rDPQu{b}o1r`&oECyILjvAKbXBlBX3Mya)VYH%T=7llNlRea&I-sb?z zk0N893JV#1C>LotE6$gT_EOUz?GpBY5T#YKB7)MBGtx|D`Hta;s^RF|Xz>~5P&h}` z`IKQzlK3dmq$J|m&wEs}#-U}eMJoerW$Jkm5s30)Z58O`L02cQ_FKB*4tt7f&%q8> z${6}p$RNK;89iWyy$5Q@s?JUD4~sr2*z%EyaKo%;%tH9xi<_S<{w>(wS%O&*F?lfr z&2Ox;DL0rn&Gs9+9Fyi%7RbPb)wu5zzju-oyKh!}Gy%^=OPgTJPgNSi;pL`kU_JAqI0w;`Jg*x~k2 znj-uiwCQqB`hZzH*)eMp|1+O(dUM=7wBHh<8ptlPAITk6&moFqTZDInwNsjQDOiuq ze6oza=4Q34Ks~nq3`*gRBEbRLajd*Om{7@3odNxvukiLVLg2l4b@o!7p=S|_n@N&e z<-%797ebo+(uNa1R$wv7ox1=(cqSC@qFy^Z~5J!#Be$ zU`=|a(0y(Id2&sItm5)T$|d;}jZ;xoTm?cB)OZB-!+t?og~9ajYEZDYY+W9~n=s(= zXrCk}A#DdUSckG7_qKb0qv2o})i|&Wf(_qD{oGLhDd>!5Mw-I)*FOEHE>5|SP`1!D zAHSAFc3tZuD*l4H;nx<|)6^FYIREXAE+$COaX!g{MObS;G+#8;T}u+^Odb;oD7gxW z9q_9#M$F+hL*D!jd@cO#Y%%XytHU;K*IZS_Idsqooa{yMxw;R?7*fv(yS*~BDHUn| z;mPf%_yXaJloDb48heqrsuMK>$aI$ONoa_oegN;Ji74dw{48>_y3_(+m}iZh01Mix zb*Q(^POxueuy3FRZ(Vr4D@7GJ88lU)zMy>_?$z~#so)nCt1}3wl-66Ck$-xNaVs`kkk;)tkaF(LLo0A?HZtR7AEM=UuG*j(J)VW zgLH@F!ejlr5DA7}X{k@fYFoO*e#ade%BI%ab8;8%Nx}WlVqWP_fhrwwdr?@6F; z@Te`kuKf2e+wZF7M<&&n;tN-Y3tjO;g5c2xtlHs|AS(N{8RR3>qWC1}+r^O+e;Uhc ztIeP!yk|o}>QKSIJ?;Yh4rjb>ZLQF)8Em-iFDQ+uL{NP6DNAT=%Wr6G@JsXyY#n}R zXXUd<&dDN8_2;`tKM56*ZVt`IIkEknFe3}Q1%vT9P3-CZ)BW7<8Nu}dkkN;XtpFee zm|E$zS~}qvK=m=Q2ly$47wXCa(ztE$S}lKkfi&3~PhK)|Y-kROMglA|ih3*~U~ z)W9?IyP)OpS>(U845ih8E zWF!TJXkEux6Z)os1WvFk) zu|HK{%;CA<$G9xyE|vd$NZ;vInFdQ2<9{eP|GMsA z?`~>5l#BIK@RoKW-k9s5wS@k`e51OBg0`IXgU=QNx5(mo;t<&~0%u1s@32>Oj1L^0lgY`tL<-3B}I<9h!{`+4}Um7!Kx%HE`Tg&@_K}O zRM=Ngj>QRVKQA`0$Dl``VajzJOyymg5NcZ@gMJ!x{}vg_Mq)z4YvdD$@E?a&tOo5* z=JL@Jc2on*z0ZAj`u1QKSH4gOn95h23WlhVqUj(4CZX|Pj$4^arzF>au@$p{?V+;} zPnJ7{NAcG)YLfL_la=`iizE2-Z{>#ce#E6&VK%<&!+*+hl&Xv5b~L}MyLPrU;8oBQ zN9-`$lWk^tn@!NB0hr~0vl~Ghsk?T}qc0hr2_Z(j2*k9`4H)d>3M41xw*GG6cJ5N( z4$PH_)N_9MJ3Pykfxxi(bAPdk$A*?S2n>C({_1NKZY#k4?@~lj((=PKkD?Nq4g^UT zsVe_gd_K2&^Zu@4!C1ufizk6W4q&u`IkT5{N)QQ?4PL$c_TPucg<4g_wk5mCb9cL}jQrfgl10U$ zN*RP!$!$65zkC8JOk_8-?(`0}KQ-!d=FSyZK20Cff8x)Ee82r8$yl`!xO>29_-}3SjSED~uP6TgcGPJgF%}-HyX&HL0Z?_* z<&N^H0ba(Z&=uS!g4|+ityUSVU7!(vsuo;?Z8!fTp{2qQDaZXANucNX6o!!Scas++ zXkX^#KO|h*2_}3O3>?cV2XB&6F zeGgbw*I0GQi~tk2JJTA0U&S+rT!H>1fd0T3-nJ-3cIg?DpvNCcsr zD(@trPHZrKK1BmjIkmlr@?90Cxnt{LUbh&c{o4uy|3Y{$f@H&UEce8>h`LH0DtQgY zU7l7fO0`Xgwgy-DI-A_Jlu@I-$~azOUv<*f2QvyFd8LO(^| zcu#jbZT#9#=~-fcZ~|AUq10)#moFP*41(0VbB)yoAj=U;neTfqo~d1}5~W8v?HU#w zFlDi587#PpLoj#3LMcB;$jWXXlYua-4X9q2O<(NdRqBQs(=^zQH4%=yJ4p6G`j2bk zA6JGL9&YyM3Q%^f9Dc7GV!ksm1K+}klambOWlsx@wXz}u}cB-ujK(& z=-)r4OiuzmrFy3=mj_epty9Ls6jJ)xr!Iec=(f2OqRNvfK2a@S z12E>EY7h*4#0+=*M#;3+Lu`^yp{tK=fjO_Mmb=^$v^p;(r_CXIZ6@kRKTIQ4(-MsV zZK-sd|hrJz<+1>tb1YK_1-B$t9(iR zm7z@0iDA z{&SJVn((txn_NV=%ZUD3cQHLY%dwJ#uQPKeHZx^k(#Hiz!3DZGZM}Z)aoFh&Fd|J` zljWFu%P{}HUGnFh#Iy)L$D(BZdJ*J}^cj%gNR7?Z#iAV|CAwIgwca2hG}hkdv$c$m zdq8v2iqhkmB3MS$t#;9!yc?^W-sSeXm%&nMRh8A-LqkH_4Szr$V|lY5qNJ+mjirnD z-yihXH;`iNco(=6*&vI8|GD?qKpo)1o-p|O&tib25ZF=FZaz}W(Z5W`kO+hSdoTav zmprm3Ad5epM@|+-B$Xl8GyFjH@13+&kTnV23S(8LXn&oZ;b6h4_v0%-p_f_AB8!(qfTGbDaxz3bY+8U|OF(<*0=~2g|McfH|BUsd}>;>nmXDTkG{fW&1-MAmfex#@X3<=r~J?tj=mfX0Ev1 zM8Q&K>h(w*JvU?Mdxja2v2!i*7}<8C$NkE)BwpayjjK%&3Y0dS>ePDvXtWPlMD1mD z_C!T?NpY^wnIHyTqbZg_3y5phEB<65u^dkZe;53H*~OgbKUZbfYTN~?rum>e!Ils| zyXlKjJ)7XOpT*_ZV16sBvjn8AM12CCI#ew+X@V+gYzy_WnRF4H9YFcNgOOn^^R>?> z;qGB0fwl#I-9Y>$l(9FkP%J&`%7fx*(9R`Oh}A!npjb8}YWy@o*OG(l^N}J=ri^&n z3_;g8e0u8mejoT*1Ut}qrsD2wge^ZNX%y@6Fq4YhHoyD$m@Qtw`WFZLM%ZM~i=yO%s$s^ndsNX%l2J`}T9kBUsB$RW-tXO|2UGig^C_&xC% z4jj4S9=ZD4Qxg;Bv$}&Aabkfq%QWN#UH9K|D$%$Sg(jIRWf^x{iidZf+eS>6k9Ve# zAvuY7!s51WI}tOt@1*qV3~?8M%ti}+!X}foxxuG1fbKT}ts#t`{X}j~T-wElASZ%Z zv@Y$h+l#su#9~+@W#4#OAeO-9_94DiLL8FG{H1_$3V`%!yE4fb{($n71Rmqi49BaxR15R{yiIyG2J7YQ9&C9xeW8uROR zh9uf8elNx=%U?jMx+NValn}hgqDHB-Fqzbs%R9*xKU;hA6V$OmHH`CH^bV8qRZkR2 zDUIR1i25zXz<(4;awtzAJP*fwE4}WI_gdz|=_!#c8~r95!BN`{vtCRias% zPWA@ktYD&jdR@QQnpOpx}Y05 z1rfh3g{0!1I^;|fGjP6S^0d^5l3+}Z@j<0ha~&e*Qj0*X*~BtY4ERu-^f%ht4{UFO zo}XzHtgc80rk#J9kVui>U}wZHtX+IwW5)l8#$pV(McVCcEjPn*udvu{^w#M2=wWqf z4xE}R4(<1wS(Pm;(`icbOQ_4Umb=o~8hBnk0SLQ^3-$>VLT(@=`5nHL57L^jGs1og z^xW?y7F-PpGwvB9*j~fmOU;K;5l5`Q?;!QE3Vw5$3qWjg5g;g&9Y@ocOo;|RwNTA1 zJYO{$7k?%m?C5%6mhAoZ@6X_`mG8Aj9P4(*oqp{w^%i&UOQIekC;{yWL5nwXHPci{ ziDQMXOxOU&@?^1%wr;(7lvU|v=;{nuu_EKOkG~adpbI(U1#JSPiBMoY=t~w%G<*ji zI!OK}3#2APySssA73kvT|D@Gs0Y_6y)nM~d>o5a0ZT+|jV@*>Pnge~0?pQXK<SJY9 ze?49(dP%l=IyCRo|MCl$T^91APEZ^`%B-FWy_rZP8~K6nY)pwtr{->Iu}_7==cpX= zU|va)9zcCLmor0;_&M09ausj#1M5VF!;3}7sMnUG9T|o>tN~S9BJ*2)@nqK9(C%%khG|!uX%wb1gT{}0SXH_*5u}{UA)=5J{fcFy1B~~g2)INq z((Uepu@o0D&XFUHGHQ4zG8t$zF3#UtNxR^_{371$ErVHnE5&TdFrbrmn>nxj$6z8agk5a#q=}2_W_n?m0g~UeJFTBrhOXp4 zJ0kkXQrU7*Q>;Lg@r+Zvbt3of;pwfy%7ijTv2*O*i^BkpL{)uK zR%C&OwZDUJHGI9r_i7G$w%q%r#`@AajinLb9RU5F0eQwprA2=keWMFk9pOdCp-2I~=Yxn0=`_Eq#?oKtVADtvYsXX42^UzSbjHeGZ2RS|_@ z5`X9zaQGaT!?`H(W#Dh{&R=TurjWGd+?nHw^%WzS}SGehW%3 z&gn7uQx#Fe(N>q1q=~?rpteQU;N;cjM;~SrUt(I?74IH(7Eb5in2lF^Hj5zw0~*g*}?-j_t65oR6iprh6_raL#pJwaF zD?bQ!@L86+-)abz58a4}s3H?QG$;M3iB7VxM~z~d;ExVGTpsVMISZOy+=08p&3F+w zxm%0pY61;>ApvLkv3^iZd|8z+n>xl3ZuX1a-@6lQIe%CP&`zST+HR1g`=N>$v6#4N@w1( z>sNmWGMMxIO#9XKIKWeU7OCwIlXcg*Z#DQM^=%pljnVfVwtA00D=i=*RCHj@@?0f3Y+_K21}3IIo^yj~2Mnftgpo_->I&xt=$owU*DbIP+$DBSaWp z_I;i?_xl3=ePB|vETs?s=0l*clY^)E$%J1`OhVew_o|~Iew9DuGytSp;S`O0Sk?fv z&DrKfjo41^BYj|Z&Li^dgbn(58`_?tR9uiMySKfChlM+(DwsZRvEN+3xA5X>n@AtT zH^~0XCjL2*DAML%S^&br-e?*_+XW=P zmSR0o-@aM%s#NEl(GiYwHxF+0WU=%6@u26*Kc&ATfZdl}lRiD%KxJN9mO7oiVpM2$ zJKXYvAM?o@`QHCXFU#~T%O3FgU;<2NMTWF{V(krFl`llbVlJ1yXBU3-f301qYG3`d zo8EoJBZ)Rs5)~64*D7Q%xhb+0(@t3Q21J zqkJ@(FNJp87QSBw`y$Ja*aY1A5`ykWw{?srH zznl%5UE|;El{<_aiEw@B201%~WFMkjIzkyMWZs<4!jJEnrG!ycY$(nJ`}vq~yIOfe zfAtS-r|h)eP~ki*HS*DplvcKC0pXACIQo<9f%j4(;jWJf%;W5|=P=h(>!4tT`Oq}V zQ|xZU_hBP%0U7f7JIb1=EMX00_VPaO4(tMS`CxVI{D&}iED!+`8cIytVFW-;{LND< z1q9L9R?L7<;%xcufmH3b;8=by5Cg zhIyh-LiM+Y(`=Z+iJ)C8pCqk;`7YAVI&i^L)9@yh@ zO2!e1lT28g2J;0Hv({k1$+yB{7){{&z>c4Gy*TR$jFeu3biVnF(jTV}=Dm6>xyG|p7s*LWd~LPpJ)$F^F+AsZpsUdpLO+NL(LMc3Pa<^!LxS)pRe z9yzijs=J<>?=Cs8|7XQl4?iE$ClMxj0~1-_GAZ0&hZ}--aE;xf|7P| zMZh-^7WfsXdV&9P76mWm2MQKhFD;{p`LKt4k{Et&&4!BbJGR!H4-=?FtOj{GYTAM` z_|ZKAzWS0D^IisaSl$BHa~2Z9Qxr~{Up}^>w>;c*V${i<5m8JAaXYcQ87 zhKU$(f5C)(2y_mX?ROG=pldHi7zeDfoPhByx4;RI@&2@%?fmyXG@9`H<3<>G*Hy~F ztLQ?*LX6#J2U@=j>8kQD5)lMXA9MZTFoGm+>zFTgsR?N|GC={c4H@X(YZ+{DzXq^8 z7(P1u_FneH=)UAU2!d(~&&+BN!cHtQee@*He29zpG8Y`}!H`|)OH;j>IiIa5?LMO0 zCA~HYWJauIiOR+!JppCu{G;e;zx9YE}RU1GIaB1J0KxoXt%+{$r51&Jt+CD8wpYXfi8=IQ@{pFq;{8Hp=V zEbkQgb@+PYWQLw1KC&;U%|8@M{a#8Vz+R+@NC?N~#C%#wM4Q^c4p;JPFy}WJvPxVZ z6X!oz!ZH$*W`(H~z+d>0ESBCoTj<`WNdGUC0=I$PsBTdM>-e&ycvf(+|0^pqP%5)f zf9k5Hx)Tyrq>gU9Nz^AlC7-6z+7)&D9M5|S4U4n-QZgDXH(g_fQA=_x&AcmxM*OB+ zweV*7@MQ8L$uqhZg{J$@2&kB_MLiYZqN=RZMz8Q3qh(k(fKSNgB+%@avs{295_p+< z`GgDP|8Rfoy{7Q^a3U(v?aW``kIr?ZHsU<}27aMVOINescZ)<|b7BzO^y|Y(4d4Y* z7%LeqdWuxoexE17)RD-{^%|>8LvlDJQD@u5eMLBUq z;bH`|LoYvD9(KnoyHto8;3OG%7USv8+l(6;8I&f0mq+MwMAk+CQLGAA;l`ibbKg|n z;JwJK_297|*P-;ez%x>bs{UAe6YMLqKjP-QI1r z#gAx5wz z?ULK~WwJFVj^`Nte{IR&?4f!3B=CADG}avc;?}cAObC_3{~t_*;j47EhdFZmBR zcD?qBk-ME|qaS>ik)aEQW(ncatt`vOuPa;D<-egeL5fb3BWYAM9a2F?c=p$4eP1~c zh%J8~XtPJm5Ey>{d3d%3dll5$f2q**dA$JZ#^~i5T%$bk5&3!MuGXv z`;-$N?6{Y`O!y+ql&f}2+Q=pluG?l>T!~tFLOQKpiK;Y-A?Eak$kJ=WTxlqI6)-$7 z&1j1ZH$OQ*#nUDbsi^b(m_r})86ZB4SAFWEge!tsQwaX5*Tsx+KaV0(eq06ST*89^ zVz|dEsv|;HJ;PO3EaSaSEN~3=xI7Zb5Vex;WHcZ)f9?bL!{fZGHCZ*%e8U3$r*n)M zSj5A!ZkOp zZd=T-V9973zZW!9-q{XIlJrHLhCdQ*mkrkXNF6RxXyk2?t()|7miTh3ICOIOqRQhKw7^+lEm6jtq-dT7m6Jq}5Ow_e={pD2`hy z5_NYLU-HY*H{|C4&4Kh78)!R))gRzZPf!KA;I10Cd`TonBxaX_K*MhR2akojh5Yyh zcud*;kvs&6BYX(#0z^pA&~AU9;Q6-)-*&!HY4zgK#HpdcKBDH~aWQVNQw<^E{rY~0 zbP5ARQ6(zHWOxBbK@?10Ac&Xm?R?aG?QqohqNNxVbK8+E9$lY*a_F;9uds#M7?9M+ z#FTi>6?)x*32pxRpzGyb+3~x=V%#FS?Gf|;(RJ2QQMT>c2PB3b8l*u$k&=#~Ll6+8 zI|K=7>F$;iB?JaRB&55$yFt3UbATbfo9BJ^-p{l5`z>a%<{uVo=DzRiIZa2@oZMC@a77JefpFW$I z8G)ZBTQPcMl{(nw9mL%7*_LC!ov!J9ssM__&DBP9GR$VSx<9Oxy_q*lkaA5OWR7V} z@yBD($#oiW%>a~$>0ki}2N9KgqI`)`iLa>S@bohY-64C@IQxMH8 zdYTnfb*xLV`U6NScCQkO>u@XnCe_FC*+g{^+eTKyS5gGX4#EyXfsPh!yViQV!-`5m zD^3CPe^WyXIoo2l?=YRKw!`ctSrxK^Ybq96^e4m@D5a|IEk;Awl` z^ya*M6$*pQYhUUhpKFf(XGUfqDiv)WV(F}=FCXKH*~pfYz9gWq^1L~ea(`7 zwQ2JIix~dZmOeulvkp4W@Ck7s4YK*g5Q@;H3(!F{{fTUtUunDAmKh3t{7B;bIayGJ zCIN4N5&j|FMgtv!dD!b$s2a`hBrOZ594x{KKy;abJ);e7#$O{l{JGE`_a9kFq${?X zf~60i#+KfW9Ya-3F9)f81tE!{E3@E#WFsX4p>SOoijDnY3J)W?}K zcCx%8n|||3a+8}+`;PU?mUK=@Bj(ShyCJ;cZ<aWe3QZ zlhs-PsGJ_@Ekm%6g-+p7J?Hpu9YA+}7K4D=+F<<+=Sn6;d)Ha--7jrCN*~heb(g2SC|sB6#z2qxB#I*&fIK z!LOT`{fVR0wjZC&zonZ?e1NPCp>W(U{dA|u*Ovmg&=L*3rDt8Ym$|P}?3xmUJumt9 zcqaTMzcoUCEWaA;ry=!=N1qiz%2!XakX)jg-s0a8H4+2LI8TY5(z#BLrBOOhmm?vx zKkV}@Udh89$f=?!M-A?0nIYGh!zp{$$nP69%HqfytPj+N&Ei;qLU7}7RD^2Kp7NIa zkg1#;S#cPPk{PYiMpumE#yp6(V#=J*O4mne=xCW{-a0wlXKKuodloB2z%lzi;X%=C zhY2#)`j&s^*&5kMLCt+RjC6mC1aY|1Q-#E4rpKwizdx@&b~67mynbOPoQ-L35zDsu z;lAG7`Sx%SDrA+Jeoyc908CL3l&fCwseiPsp+FDj4NTI~#;yI4>bQky3*MfhPn^7C zU3(w8{W6{fFuYD(K9huma^9Jxn;a)R*(!w+9V-2Ang`eicclGRYukjV-NX@$HDXIL zbBT}*AB{oAjsmFhf83dKsBi>#o{a-W2@I@D&y5EC_5{TgNN14Cuaf>qWoygr=7Y(= zUxuRDVQjq6`M<>1GJgaK*n;!$0#b|;N04~X^Ui)^R=sD z5_=~U&c4i`g`4P!+2TDPR+{bBDuLZQ=kcy6m+IKzJ7zVGJ+NhqiBS!0#oqbO_@gPe z%~Yyoc_UzB710?@O-Kux#n z%jTu;&Kx^qzaq6=9?)z7-k4L4znj1py1kfsx&gT1-B)jI?erIdSA{Hq@~l4oOI2!5 zBiX!ljk-Pg*&PgJ_X3{4%IPTc5qU$%<$yqS+Df@uY)1BK@#kBp5V0{Gijy=bU77?3 z5vxXRn(U>)CezL7ET8_^mlv5&Qlx~3{V`EpUKwqF;Q8oL4x3Hn4oZ-YgLX zq|H_3_N=Zndxn0MN{JRY)G~)n8+a=MM##egla+n|t|M9!S9a_oGZ%#8PAQjx$K1(w zFWR?{KFpMTFi462qVdu0`Ji^WS-%W*tC0!@Mv|PI=EJ4nvqh`Um&K+z()pfcedS1R z*F#I<;tHO_$%8Z;H-}zL2IdlOvCRXgK`!l5FL$@Haswc+cV{9mUi&rGFt&G5%SA-g z@&3i2W(JjDn!+VpM;q&{R{bFkHpZxBtfyZ0TlZ+t&1fif!eds!3?(qbwF$OHA0s$M z{Ne#f6IOC@2^A>c>T$bJOJfP_hP<4;-`p$4{3@&|TsXsv%*sV&Te_I?E^%#QFQrn` z(48mia65)xreVdixw4yK%`qg@&tq}EmUH!DrME}qm-|(BfP!V|Kq@juB0^hDk#2pJ zSO%#@D*_2>Cui@z7=9ZuvU3XAVv}k3R_xI#3TAsb-yUgCVNsFxf4(`Ap2t$~Nv zc1mIRU7$t1V?D0Fg-LpiS@zrS1F@qbw@C_*%Sf^e!fHMc7&#kOG9>)qwKG+iLZK{d zxXx=R=_SIk?UN&yCg_TDl7M>B6~4Q$4b(=Q@MQw3tw%uhMZBtv$iqID`%WiG+M1H+ z8rHDA{}9eAwq>CmMWSc7H+zCFG@Al$VJUX06yPHJ?egI_z4#1KHNSLhi&A}8P~=#b zUa)ip>r`6F7fqoV>vhMFGbuqXlco+N@>G6BpqF2@cn8u&umEZ%Jb{ct^}k*B-Yxl<@47@zUD!6h z6{PSgX(9L{1W=9C_wXgNlqKJ7rbPWkCC0Y{u(rz$5<^f?GCB9ah5t=znav(=a{eM+ zC>9wV5o}J$gW5gFT;s%EQU;KJTnr{+Nfv{VE(0UUWC%ei0JhF-l|*TCfxr_##R_=A&d7gJ}-dM^UT^HKQ|LCu)&o<;Xpgx4F` zFh^7XPmBnCGIs6`&S#dT`xf+bSxWp7~`4?8}ewf+@ zSm8$Xkr$IM>sLRyuT$fun2MSm0x=_C?*#zG{xsR*&*&Z(V%)gi7CB!Z#PU!HqnMMT z5WPyK1H z+bhvlpAzx;A$dF0bEr|9%JUSxx4++UOl5Sb4PK$D^{34^l$wqG?o66qL;9f(K2+a! z8P*ix*=FpOMz=(9TB2PLY-jS^h zgV*OS$Uld1$r-QYtK7YF7|K5@Uz>9}ni)KcHACjmo#>}SZ)vzx%HbA@4f1dJk)Uuw z(RY3(68h;j39axY>^~OQ&z~ZJ5yewiNf=)ls!gydyY**UihCqRoB)GYy7~%sxRAoP z9ctQLJekiBpN7T~|u!{+~5=XlIx1_v}+Nne9AM z|N3t|K<%!Q>bdByQm?_f6e1>eJ|#r&-5fY92)C}?gVuWozvcU_Sqg}PgVS?ycCGJt zYuZnxXVk%m8~`@uGevU=;)8j%>r|fAhD={*VPCi|-7RMFxV`jHb#H${IFNq`MA&}G zV2-x;yeYfz%Mo@H4#=3tH>S#q#ldx~W^%z6_C5vzjBvAcIa$@nwkGp*`!P&$k!8V3HXSke5;`okd&tI4WqY{x z(!y}|z4$EW*(yEm&Z+50mVa4Y3#(=`n} z3jwR6Gt*!sHZN5^(lUv`ZB7gPXJUq(p2y4wl!oS7SX8L4x;KtuNaYkf7;fMYs{K zq!~DQZ3sLM_wS}^^k8f>_F0U0x@Vna8ZuL|qLw+R(KX1Rgm%Mm^%bk#h#eKFu>cy9 z_vluhX3XxC^@HV*`a8Jd%i{UB)#c>m-gI*6E{X!q@0j}0b z#Le>2_zy95f3-2-?yYpp*`E--C6_01xLz zXBdGgRd*xPux;U|pJ`+}?mR{sVPtlGV1%~zY~4Re1-uzCZIZNolGKI2kgo4C-DDLs zX2Lhim7q|Iw-6}uSSo^T7HQTgMssK@z#BYMoghYkU50F3g|&`mJfC&4=8bkRa&H>3 zbwW>F7j^8-l(axg1#X40+0F3p6oI6*y0(5*hfg-*Hc_Q|*_JX(9 z$cJ;KAgUoL6VS8*#Hzq?9+?hX@I9DoW`*$gCUI(pzyGF`&n=v1F=9K`x8~P-d-5ku zJ`MaSyti2P|LrgTODubAO97HuAOb{K{PU_gi1zz_xWCVb5AuQ?VW4RYM0K#;hvQj) zS#+?4d(@dJW}>wP8szoz_ny63>1C9c-)GSCwsFJu#W3F@&kzZhQ}n(3DstUY`31Gn-U>n z3Gz;tWEzwc9Uu^+HhlSDzcvGmAWtsls*V%wvrC^It@)s+L3Zd>5N11@C07Pa3Mfan zEu7ohU~sl4r!{GWTxYc0j?mo)Y9HSGcb3k-KJUMO(|CiH-IuHeI;Kj1W1>ok3+@B z+mbS(I6ck}KlDkGf6-?Q@*8JVy6g<}H~7yty%}ChP3PlN@-iwmzL$dig!MTluhG8g zqV)qu&5B|LfygT#seWrD{!pHeliV2|cZ}(Ex*%H8hHTo8sPuw0y;tle`wsnf&FE5L zD+!|F9(7K;Q{NWJ+gJYg{Y0~e{`EQ8(;z2cY+Hb+)dG%y)ZtaLP=r3I(cHZSK-@~x zcN}QT{gBR|;`G_q8m<~l=hBom{}wMY$2TLvJKR@~ud2RSuruy0Sxu*gVxC$57K!Bl zGCs02Pe59u=pv0+!*GzQT;yAX%)AZx1XPU4hW|fA<{zadQAYTu-DVmaUCJbfVW~ccZY|Ie291MpY4=qU`&6`5B+a|8EAus zEZq)IE zj4qYJGA$!*kZQE;dr0FEV2^`TM*|G(6R-r(wJ~~XM3`?2t}4(j&IK3!z0VSe_wodWc>htI^<=6Y6jl+k8&{p5!e&3 zM=_?9aw1)3KCIfPW^D?5XB3Di9Ae9Q*cf!c^!I1>ulGINNN$TU+}b#c_!N>u3kgURmkQPH_>)uf6m=XAr*#U42TiNX6_WEO2+}fc@ z*)ik9AoN7et^8*&z8?os8x;tr9sBmNJ@TA>#Rv#q5<#{f6sw8s5#F0BxR`l)VhTDr zHt%m~Ed6N9llQJXJ2_Vgh1kh(DD|U{zqVJG}WYpgYhT! zwl^O7DYAjnq9BsTZ*dX%80Xn!rohpcGu5+TPphaOMNT^cGE#}`+4*=o9Jc>Bz4&M0 z1D_?2KUq5)Ka5)y&!$b`d6475M4?q_GHb(W;)5k=qCiu59xb$g++Uj$Jb3;=Q*K^IH)C$WbHb|{jv19|cQnzeDPO1e*3pjvEVKysH>>1MW^XZ?i z?ARy`YK>3X&M89y_OL_1Y{G)5hIb^k<@}>X?H{?Ou*?-6JW^W6{1;XR@d>1&a$*CO z0iMIB4D!OoDVgtstVjbyZpB$XD-VKv-xfPbJIiRX{f|&dNDXX8MCp!$2{N=`%WOKF zPHX9~?PUknIcXE{@F4URJ>9DTmq8aCJVbl?|M{~=o9ACIQyN6Klyp(^BJ;tMPj%h~ zRE8=?zXB7lH2$okv#{XZ9)F=G;IRajAjETk^xAu>WC`|^<_f~=x}xmjvZ8h~s#u8Z zbos2xtI6)@WAeQ`dsw;jJ=>98XC@!e_5_I$Hp!yYgC=(w_@kVxjqN1$Y1u-0iUE?D zaE#~@-N^la?l$FtN1A)!Eq}_M5<+0=F$Y>)YGS=FMYz*|sWnhb1SuR3vvO50`@28R zlCvr*$hmc)$w5@F(4bc|ui+q6s|*26Vv1aCBBnLP?EO<}5`1mMx~IM~cu@d$Zt zos1zr0$Uy|sv(D{x5`r&E!lIyn&skoGG!8v74?|>--{zmi?L)L(eK64E1yOF6k|r2y>A zkjqCSGafTcssXWd9`Cwhw~;D>RRJuS(XvQ{AyHIiPUB5umpF5)FVYAwyP)^21>Q}^ z^2F+!l7H(F#o8br&mS>?0ueqB!{2xCxyj+;y#?p16#nKORsK%Mj*`*o4Fnf*+2j=I z50YXt*4ZvK39lMo6ZkM~b2(tsw@CK1uUdl%Br4W;#Gg*{6xn%%vkVDmxm8hSs?00B zCn~0W=3a}j;f>PRgS*IqSJ>5m+eGfbYOB{Q&TFl8lv1tfqakbFf8M{er}a-zQH&e7 zYah#u&ge($%y(Y>sY3m|IiH|6e}3S)&w$6APujfrw&SRNw4!j03M3uQF>t!H-wHUY zK}dulvR%BfMC`=K_781FH1}nS%X%ztX~^aN{?R`nUB_oPbPF(R{5FMX{c6Cs)I$gg zKIY%rsO`(21ru>=tWb2zHEeURk|A@*Vfl9LeR=EgncFt>6sV1@kY98P572gTyfTP< zPG>N{frC+$>XrD}pbs*ZhR`&(oX45_oZ_GrrhB2o6UC?CnMQ-#eDpfykSX)*J@N|q z{Zn~W$28z;SOlHWHO4q>1-i8MA_lkHGIx4j{~Zqf<@Jgrp5$n;Wh!3m2Ct>jvUioC z%zW7P#kKfvO9@gtG|^(d)*UB9U77@14lvhCIjTBI}N!wCZ?D%H8RZZ0cs;HNaIt z|0P4;UGQvDgyZ#W;v8ovf=`k(hIXm|tFfXS%~wAnetH(y?1e;0-8P=T-K{_kgoD^% z5d!KSrr~`t)SMQmz*4c_f(|XFRbd_)V8Qjth9Wfl%4jym8pcq+ebcFhTjcC!{xP$= zwcON!`?Imcz+)LSyb1X5f#Sj)+jGqLeHFOn>JOkDK!URjY&z~TLp;iYTDa#6_=k?D zf}B7Jt0#wHM=CE#yM(O|c6k_8-c+~}=l&$Z`RQYDfn$d@U7pyoeI(O+7l@jSDss6_ z@Fg)Zu`%jH|KqtS+7C{(QRD@*;MW^r4-D$RHJq7pysq;B)f;FDrhFQ^fC3zvZ{IHx zeU?3SQ^RUoeRt=pJtPAl)Q!h~Kn0%l9rcXKp99J5xGj(xRfV36N@jYOWmthMsjbC* zM0-*>t$I2XJ7SCO!f#-nSPGJy%xY37M`O7BS;Q9Yswe0l)oKJ6q5`->-jdyF@%M*P z?@dDhni~MDLwp4`{KdOG+)~*gp)7~Aob9#t!WYOi9Ia=p5Gpnm@quh?a(d#3Qc*n^ zcuagmg`%C}sd%(OxdBz-X}1hXQfxJz_$PXFU^VwzqBj-l_#lqeCeSb)cDZ2I{pS`~ zRYC(G_$LDqo|Mtu)Qk^kwM!X|;C@az>Dcl#GPw0@%{x?49xY*>gE*?ti&&FrVcw6O z)wWBU`|&^Ta&uXrbtLNg?fq%_aS@B8uOwVfdKYs|>vSowR> zwB_5A$fywpJX`VW?2pY#qStCZHx31AsxdzvY1L8z^So8E7fV2(iHB_nO@UPJ7wDWy zvKG)hV}fTkmM`!2uV*1^~Q1o!_!+q+#5@5lk*EevVTADt^OZ%m6!{-1=Fc{OB4d9&dSh@jBl04mU`{hOVzR9ktv>TR91PPv>aait!pqm}ngejLqrI;mT5RiYRPscJ>xoh$b?DN1{N2Kf%NV5cst0-2O!@+VSr;7jNE zq*6iRKb3zxrcpu_0QX80J_E)Qmnz*YXYHZD2YgRz(_psne8oX?jV-%L`QcKi6a2*gSFBjb<7zDVmM~xY9GPP|fDD>c8`ZjH z@kG@n_9axb|!=;uk2vnbyC!F2|SKX4(QTZ;N~-3V5ZOf~YQ2$b9WPYne~ps#6Ewlx|Ml&1O*6lk7|Qgk?u zb~#$>(r^a+2^+>w0Ev!AA>1(1nTsj#DM>RJWV~5$mRaiNXK0wN92prT&0)boJyC27 z!A7RqYQr|kKDM5eV8Z_^g=V=f1XfL>!G=z?D!9JU3q+no8L>7D+&a|tj^*i2XZeJ# zLe+t!IZ!Ab8<3BA4>U7gWS%|win#O3@e;lE(PKoTSE1WJhn%gNp&1_{W>Q?;!vpceYTE_o4IaXC-aDTz zCWtf2E6=9B1lGO%=nDO(NcfAB0Z_>lTuz6r4b$DySP)-ITK&8h{P!SzoYMIjC!0&@ zdaz^28lEjzf+Mj!nGZZuVg9TYD_wjz+0dsnd+zi^TO96foXkqHk>QKh_;&sxU#0S+ z1QnW1dejBgPLX6of7M-$P{){^>;9jW&nQ0@gBJ`}ZP;U8dLhA^urZsh6J(Ld!f-AVUd();Ae zlR#SwYSw!67Tv_eRvS@NeamODmXGC4%R+8(^GSi=jaNhYM`12gx_?ygk5Nb;Pf{Sk zTg|I_Lsx+*Qwed8s+Fq9t93~A3y;RFjNU<;HAV%{~H4HPI549I9qctR8v$sRN zq(t>;R~WYt_gUONE;7CSQ`*+M+Dn%{>qT?r@o!>OCDRmrroysZbve<{>qYbJX=M3* zP6#FBd_?lsG+tv`#W6})GcZu%IgqpbM&mb{hLyLHkUHDm^swso>0?iu@B+&Jh_^nB z^ZSpq>HO@9+PGSS%cc{&eQs}EwrAV_dBgF#>;tE`^v^Z*2|>AH%xcO4s_eId*QNqM z{;N2@RCS?V-FqcP{vG)Np#&tJWQ@Y z+D%@y9+fOFg|x9zW3S&?mHin`CN;f z-o0kDz(r=eLpx7w%1I;slv=+ZC`83lZZ_~0;E^e$<={A!>yJ^{xc7Jd4Fd0jdd_%i^!`_bw_u0xx651JD5{^%nqu zdo9y+QH2+~@>F`M^%?-wtR9taT88CRY@b{7yu8Jf(JHH=dW}n9W>&0s38y^#u&4U< zo8UWU*@IbUK(l4zo{lp^gdVWS& z2XMI~MNuVE_A{ROG9EpqMh{p*Q_dw2>@@pl9Vy-Dxajn^@~eskUEc@Ex1*jWlGHYS z2S*H9LFa&Sj2M|A35`Q1xO8_tbm^h}1b{3ldktc(a&K~f2Q;&KG_HDFFW>nJ)lN+; zJ>gsM$amWPx|J2ozI-ooTRFWRA0vuB6XXG-<`;X)ZLyp+cbUMdsv+on_zW1qSx`P` zhuACt_1S&lSiCo1TTbD<|H`MHQ&ohH&UMNBHNBatQr@YVfzqIx*HMtZ9qnET|q zRoxaaEBvY$%JqMpC z@Pm^;EIb;Yi=`Lqu&U~I{j=R5wvWsqgD{$uxKiyH*~tF7p~_tTX_sP4i*N#do=td2 zMdVk$>NtQhXd$I-L!zSM_Zn)7_;p??y<3!bz%y= zUf)7-=*b1jYXH%GM|1Y;DISKeZ6N<)2{aUr;Z#KB_RG`NoGcR)WE%3@0xOfi3LJEM z=a2Sbb|R1W#kynfYA5F-iwlfN@3Eo}k#|n~!93%P`+~m(qrq4I*TKd6&~^a(`gmXG zvd4%kat@1iu~S`qTW%gR@4G~E?Q?Fy zWC#n`Fa$`=-ti^&-ZH=_O=4trCL`LNK8JHOS?|ZuyO%m+(&Evx+_6hfvcWCRRwzJnin*TVAP;hxq44H#a(=vyWBk+b z?kXO`mg!Nit)CR4k_*cXexomLK}6nyjF(H9(3FIoqw3UD&N8#XkJqx&svK@#cYhDD z%%dJDi%Sqg$6$mz^S>g!?k1<1N8m%Ih{KAi>ZSy2Z)Odp2{=FuZ-v&JEVGxwzwux% zkpZJae&ZRp%1^^|YaBNqYZ3#m(s(PN-dz7}Rg^%vON#@^d7HfI_Dv8N2&K||-?W4*G}*3qM$DRO zQYzXZ2(JJ3PDxS7<@SYL<8{IcvOjG@UF|SlG~b2OC-7SDZY!J`gcq0Qvza`W;q5u| zW0lB_A&4Kt02yt;F$VIRYPBF1Wx9fAf~Q!Oi9Vph@;J!l2ym*dJ$P9obMm`_`76g8 zjF&auJkV?hDx;z*Y22Y<#j5<0?*;sI?}GprecPKm=KeHg2gL|yz*+jm_HkiKi#-= zxRdNmt~`gC*0erJ(mf7ybV=G2(mZN^^y}<5DK91B*1<&F*H5}r9f_ezkiDL1R%p9G zy;x&Mt57mr&=-J%D<7sDhxl$*o%!_aZupUb5TTRcMRLJ@yw{tU-82?nS4X%4s{*OG zZZ=LS^~1E314Z>KsB4q99eeF460Cn3XEhDU@9QR9-2trz|7!Ts({xlr_*eTAgGSVg z5A}l4ep*D+d;orF7`w@;+t-RlZ9TQ{(0YwLq;7ezRAXkIpG5k8{YQuu#`F^`Xa2o{ za?{0I_kgPQ5^UH(|Bb%cRQz>1T(DCZ=COfOoCpjctWeGI6?yOie7qZye_VhF4gvL2 z*dCDc^mQwpd=n%?`=dy8OU&|DygWK$?|)?hV3jI4Ha@hsQ#E)>WKj%aX3fceoMzL1 z0d)*BKa{wPPWW&rU_8hbi-4Ma92z?H?E%hUZ!w)|!A!+sWu;G^E2P2B?kfF`DdF#J zwg1+oVkwY73w1zsJ3IiS0mMya=&l@?L7SXT32;LsGhW}@)9DQpBWaLEob)9#=K^D- zA2v!1;r4?qR+Jq%VBoAXf{avK=@D~&YJeMu+$JFbmZJA}V)8rk5FLHG8|^73eb8?( z?K3&Q9%9+zZPuT#guDU(*_l2;p3-S5#>e)Wbxv=ksK&Xu&7lz`Zr(YoSkItL9jr11 zWtt^OuL6ihoX4Biw%)x^=>;Fse5Kk4V_(n83Wqh`^u09mPQcJ_Lvg}Z6T9z`i%E8J z%~f4@xD97|Yynw!kVX=-{gvJ(rBP=&770!@zKBJ+p*yER?yl;gim71 z{Cy$S)er=3{Tc+gf3yV-&d1Zfd~$T8L|h2>g{Op^S>HYEr=g`1O3!vhmaNyv4$0$# ziM5dl2{|&Mt{$$NAm-;DAzbMzI1OAGOlFN-Kh62q$T++MF#71;JwuZV$U+fkVA<7F zV&yqMR~tMZc>IB|H~%vKUH|e{NWpbd^@v=@{HCOtaCr5Rl4cls%K zD9!nm38K(SEL-fXBbI}|?yCcteurU3<+d&UPM_2N;tNt1-j*RvXX@U!+>hA}p%ioi z?O!%RAT-32F5Q3Xr3_!3PfWdzKpcj^Sr~f8XdN%=OcRfBP+OC$I^~I9B2r$ZGY?1U zRDRr1?_y}EXao`(rFOf6hj&Zw@!Cuf^P7S7C6drQB{4MF%3r!~1%WuJ5Yvc(pwwyY>% zR>gHX-=dDohD_5;M}A8y%vS zJeO*ew->)Kz3BkVvKW-*z{AYmb$fTT+Z60Y`y=q!WntDi(>8JY2(^FXD4=RcUvMu* z&+L_dpSGT>MjA5GYXtU4(7~)-3j*SiZJx&qg{&3jMA!Jz88jR+mb#u$oro>`j2`d5 zOO*e9Pg8?T6A(^ZSLx|6ysRM-{=K#SVWL-6ZLTqF>nS0xnm6AzHM+`@B0i|*B|0hk zj|W`uZwz-gA*cgUUz}JK^2vC7!U( zG0Q9APP_bG8ZCXsM$}(p9BhH`)B`@sVN?(grc1>#!5{igt=YbQ*mevw5qvH-vRbj` zwYHUKjLy8`%EB z!NWUuv`@*ruD};WcomsnLh(S?22>q^o>m9C$ z7S@-w!MA}wP6HaJF~*$v4Yqj0eM0y+4mPmq7~+*N-@T5Y^% z=gWOoaXmF^Vj8xloe^6A?h+rdfU}OeN0AC}K7&d=jh;rKXZs3W$l{Z=Jd($obGe?| zN)(?!vx~DmNgaCFHi^bT?{2y_tHr=8n4U=(I-9DB5~2)H2YpXlg#;;1N=StL@wr+- zgV{EDH=hn`hES$3e)_b0^l*jtO*H6JzD6O&w_y0fUa`8{vefG2sYv*ZRePh)dM8Qn zShlZ#u+u=DEW6Kas&N$UjkmbRtk+I3iNrKw(N8i@;cMClv%!=-{n~-|NO{Spah+mX z&iKcH2xgqdRoN5s{n|@=8v|X~A9sEcOvju$Q-KGKWyl%_E$Q_B5rX|MX;SPEKWx(* z8=CkY8`YGY3=4@ZK0{~4eJIj67H^fzEg6V<7s2y;EuipwawW>-;$2%L!@ZN+nqHl& z9}1&L${{&enx+lZ!Ox8kqC?cH2iMFN8SCXIpH@ueXGtkQ`Fpka+;U!ioiwiM zc>wN9zM^5BTs#hN8(KF>ix#@S;_yc!Rg0%etvJr9CFJKvp?NC<_GO8ul52(^3T@0_ z%&Er%krlqzzZ}cOd=@J#;|t)N8|sB0#XFBhcST)?G&62AzGTMHkV1fP5rd5iZ&s8K zLNpEVPTGe2XC1&{V?0Gx$zR(}z^Ih)=u_cd8_*g^9BU|L zq28rVlj)YS8yPygyn=BFILpIV#^&_lnU_;%oGWc!i=!{pGKO$jhthDrjY$Iuc_rwG#2m1F;YGiz95@6YeC{p#a1`cXr^#OA8}>zzh0 zRKbB=x54!b!sTRufvff{R3DH{`-|2(XUzbPn^2>H^ir8Cl_vM)%Q+SwK-ExS|J2Kk zN7XdM7m=N1rBjD-pe0`D4oO?W&WUah% z+fsv0;OHmj4d5<6Z#Zwj{Y{UT9tG90Z54W5VBH3PXz#FjPH^3$+NPN$tG zYlo_Iu}JDMoQ1_c1({ii>T>qFsRZR=}?$9DmwL&?N2F+P(y4py1XJlfo z<1;E_=+CgQ7=|&)OdLM=_19sPd*vhgXnqN&gvDYH*>^F98A|jRN*svO1Dw6$DNzmt z0*uid-$C`)<2VmNp>=vJv@UfkvwNv>P*KTa=j(5pVYQrJ&vd$<6#!>WA;N4v9W(y7 zv+Ws+kA3!Evd)uQKCG9>NANIk_hco5F1ZK(m zXhJpCSocZQYubAOGp+xVOa7NabQ+Hk#KtQmHWV^M6etTe*s?}KauuSz@z)B8 z$67GG5;jC%))A}eBxcnOm&V+TEc~FGnc3opCn4F+MJ|CiR&WddT4(L9UTVJK8VcI zd}OpJmud6U2nVL)r;)JQQfN|&>{EXWqPk`@i!AHKY2FXol^xCpA|s7~Yt{rb*l zm)-G-|FuuTFq#jUL|QZzm(1-XUM6v7J~{zouISe%O13|{KNC;>)`aE%$vT^1k(QfP zhzFMxiA8G)b;fzXO%tQY`EWk?mozZq=~_IwMx2)MKc}+foX30%IdNTG38lg*q~dn7 z-*&9P1uwU8W$G&I5Sx5UJc>?G)Z1h9y-cpz$WCd$90km;?F94^Q=4V(cqW3$M~jui zLdF%|id1XIo({@OK5xXTjoVRwO~@uL3961LahyUqUF_44;OS^fx+7c;1nk%BI2-nf>zGH)VV)+OCS z$|}e8`5O+MV>1#ziSMu3k~hcuQ6tlE?$8VKtlT5UC|}PhH^Peo3CA*& zxKglJlPi~sUSWV%(r}R^Ie=XX3|i*1uQiFC(q{s71$=5+t#<9-&p! zT>SKN&@69{{bgR6BpM~-BJ{Wji%C$GMW;g6OW;7h)MBMg+2J_i;%ZGP>|Nq#j9(va zBsZ8(g3$`q%R}tc7weptf?`H}o7J7-p-%{Sf^3~5wql13?V6+^Clm3nB<&@%v~yev z!!jKVhVDKZ)~ttN<16^Noi%xO2Vcs_&T|bxxCZJes|402#@mn$GAOUapM9dD8{ou( z`CpvsTTb?=?+Ue5uo+e<6eJoq@!8Bj*XY@LO6nt|Kx;Pn=04FGd9{B0gZ`P8@qbvw z|Gk#mAb}#yI0uUCfPp5K>Qh;kN1CASO+eP*m6Sy=R{o8)U5-lk@(t2EkkR|27TQ3R zjw%BPPn+ks+Kw~gd#V&z-1AP9kLuhJtGc30-3n26`HAJQ-UbZZKJ z-S0%2^hZKz&pgs;BJcxp3W5~7p~9VnIzCkoa8jam@bijx!u;(bhbKK^op@fttr}5m z1XA*xqpS`M-*WQyy}l;7d&ME|<~5!{LQ54W%bhAT=M=`vNS4|idvOLAy`hHuqd z^7RQS4q-bmq78ET=jZB%rXgMq)W_p_H?S|#FQ2eXq858^yoyGI6kG^w|4>%%W2L(0 zee*8vasp-8!e?eE4GxJYTzqNv=9yiPRntn{9=(e+|MY8WAAZ6vuJ=z~2ORkPDCP;< z*WnK;h}M^+cD+?|&|84wN|Nv29j6g~w1i5=P%_IHIK4}9!%2C88y>BkeF!-{smEdX zTs1c&IsafY{H#!?62lmNvsc`CPBuOXa~u-Vq!2zQC7N>HEYN=6q=#lTUR9W@niG99 z@KBZx#Qx9tV$C4^e=eXuguyS?w#q(xhN_MbDXo`)DbL=j6o(ykpO$Xhce_Ol9sT`e z%AOo>UBFNvX*y-OLt80K$^OVc7KduTY;su|7ls`#UXn6s!&Mn>IU|QKJ&QY6P5u(s zF2BYl(Cj$GyuRvqAb|H*`!R)DPSH&Kvm%F}>}-@2F>&#aPx8bGC!8N5Vi&-T+_q)x z3R#R#XeWIQeYAZq8Wfxt-m$Z;KeE@OjvC33;T)fLwBU0+huRDh@kSw0*08hH19Sod zFcneANX_x~*B83gwrPH{y*7KMppimd<_4(x?{&quaUeePTKGYAdX0TYaHew#FEd$N zuKp_svJfl=R!;0CF1E$6UARcKp%7;*t;p-U*r3eWK-YyI7R(!clA*rm9gvMHdLFIdtUYW$2&A z--PS4Sg^FkM$i07BRkK;Zq%WX))Zdb2r%q@3d*OkP!Y|OG~%~LGh-k6boJbRgTb^) zDZGjd|BtJ$j*4>I{{}=DdME*Dq&uX$yO9P->F(~9M!Fkm>F$%zmTI(#O1H z61Q_4Yw)Vp`R`Y@zd#?$Bm4(s#P2;dDs1mz>L}#zMUbjI+!)LNRn#sJ-i3xr%5D2C zvQ^y#?KA?SBI}shNKvw*9qJ}VJ-9uElf|TDq5{N}5(&eQfj!8cGTKsPrd1d#Kn)Uk z$QZbKKN?{`y^k&r#GI6WqEXE+SgYR5oSmkI@h_5O7{@uQO4;ldW4pq+!SrOEe_KOPjHuFy+%~Zr0PA=|40lr^aq)ie0Ryu$*yc(AV zf9i+E@pQ$Fg|QhiEzNJkm~jC>*<=KrN03RqmEtS5NmlEgj;IJnoH0bicz+l#-#7dX zGY3s}i8Ma=F^iC&PbTKA^KbkOyJ)U`%2Ez;RBMX@Q!*HwEYk+|$UI8*#D8wXetX*LqAFN(L#!e6X))A&^rdz8h z^1OEm^LuD)?Ld$uF{;){TwF2%g2h}(xqZ)>_sxpSiYRu+Z|%;z{f~?t!n2&Z0ip6* zpWHIHQi=2TiEzkqV7@T4p9%%KbODn^U~j@HGaO_o8;Jkm>Zr8i`xYcDUUsXO^Fl`i z+BBz{b5f?XS(7lJ4PWL=w1j)*zW=<1bR6q0r-xCV81lo3aQO4)g5-`93n_yGn=YOB6SGkWVbRwOG0sigLRGrqucib92*OL@QF4-qH zH&}l)9FSMIv^#<;aA|{pyA_7mh(?9M*@&^)WHyo9Z4gK{zML~k!+r~uMzSZ{ZPbWT zFru7T;#nBmnS1B#ht*pl_kT(m3Y`OX3xeU>>e zN!~3N$!F0FkW4jOUH^p-)GZRI>n?%2_fLm>P>6koY*lu+(D?~`pw!`_A-%X5lJ zpV!SQ&GSiKbnnBtc5l`@MK+679!GxK46aYh04}Ib)AnJLE95mnm6xtpd*?`3$SCB2 ze2js%Yf~#k&wj%{X#Z9p|JiX+-Gy)A5`X8$MvjA6#n=@K&toTJf3f>%i+`M#(D~=H z>-muW0OG@eVSXDW0kduPVxfLdaIWwGa?X)mv?+~n$bFy7UoFtdWL>aD;q=;VbH6k z?HV~;@rr!^Q+h{)4NY{|=@Byo_D6lwzhHoQLLfcE9ht;ss6cQc1{9%O{@`o?{<1_2 zLY+QErL#Qe>z>xxfoB$T2iT&)67t^T$ z6WMQob0zRI7~RgclDb>j{C+jU9%Erew@Sd(RgEW4=JlLAc~d1BVlJlVh&ZL1 z;T$y@KENn}@&Fr*NCAfwerCz?LHq{HxFOq#A^1q!dkeEaCgYfk^uEpJ#ak*p z$bqoC`ZWidwzT@CRXn(q7Or4}P1JxrIlz$5#g6=b%DD_(o_<{5^|t(BBC}x ztI>0tr?U>NMc#uP5U}L!vU$?$2TQOk7j+wTv3=+;j`=&wO{_ei6Tyd3o8jqCbqRS; z2^d+IaZ|`{=g6hlNq4D?ZS`Rd=FZZ4p}@zUJjl!Y^!cHuU0C6Ey$8jueZakqpa=eJ zPrCL8x8otDn6786>tU?;Co?wZ*C{a=&)ZcblIsw2?ZD7`UAK#w#}pZdS%h|;8#O!3 zbIh+eDv=v{*N@&MicCxBRjJJ>4G}=4Od$^_5gdDJShYhdIvm34i4frzE0CZ#9j_aa zGN$L>v9wR3LQgL7a2{|IMD!y&`HFM>*(;OhxpUC^pApgrZa(ua&&~6!0p|Hn@C}}8 zNB>j==1|nBpZ#gzCMQE}BN7~`e0I06mN+Ikj!?3C;R6`V3GsxnU@*yJEGQrW5K!pq z1dPZYFMz%YB)huYEY-*TZo2=-FdQQ7tN}hy*df)IXYy+-5 z4`aN8NYtJp!%-<&0r@WbP|8ENmFpr1wi)ZQyJ9-~A&-gu{7!!)ZUhi=A>w$v%$cw% z;XWMH1b{v1N6-O)Se$sll@Lh8(k&Fz#h~KpZFgDaRmB6+Yt4O@e9r89uEhzxYGbSE z4No_Oduv|YbOHCA7)60mn8VA$P8NC|Jq}r_^mw#&=@-yZ7-Q1!Exv#P-$A2wP9T3< zlw#nF*(yom{d|V|{oej6I1(vp;mW6p*pdG6B$8c7Xoy%Gk3Nd~xG{8-IK26}zay}M zEVMka**ki&)8je|vC%WYB)pKn; zXCuk1IPaSkg{4_Hac*YjH#}VYQj4(22hFIs{3&nC*~I1?Z+hc#Gpi9Auw@fs_A&wU z2!Ke`l4>~}Uv$cq6*i&~zuRLtTcp;UQ!e%rK4F(>qP9y!aS^Wi)lZ1&E z<6YVVz{8I6St@u(fzk{xL$MP`|dC+k}|==31`&OGzBLE~g&oR+U@qSn{c;`11k6UE7UumS?2r4T4ErUG=df0JF9 zMHeJ7N2)1=OMDvy1}M2bBE5^yM5K-jaz0RiCBmCXllP&!Q~IERFX$6~oRw#ectLte zkSChABWwY_MP#k&O*|UL%G}_JAH~9oi=~fw7y^RYZ^jKyx4+2=r|dTt)F=>+`0FA0 zq%gZO_I_?gG7xt?0dDtJni0XS4Cr$bnz$*s-L}zzMLb7z45EFEOL)Y9B{B+6f-T_n zW@jG@(fv*ALQG-OY=){x=q7uV+{T`xeb-1VBz`G%FbNu$;%Ax2Kz$Ojd7yy#R9VSB zM!gex&fzcSTC^{EcB+LB5~tk%62RtXLiAGJvf%Vm39^C|7+tN=Uz!dgU9dwTmj+!> z0H3wMDQK4uI*^@Jl*@JwTR(Mj$B!|5^bJ>Mv^Vn1=nRGb$50!fw3hG3<1strqi*V$ zV8WY9Npc2H^^jszIUC7uB4niE^8}oyS=Q4Xdl6W)Unw>D=kj}KbZad<^Dd2QO`>_1 zEk*iL{=YH;_#wstntDe&VxH))Puee?*f$CxjaVD9+a$Y(O$`y>D7nq51`Q{wn>4T| z8?F0OGU6)!I@4GwvCq%?Lv}sieb<_!5ILLwv55=Z!_7mRChK9$+f$J3(h%f-(Ps}oG{6u*oNZt*3@RJ1{F7u&h5udVLwPn+@RqCY_ zQ;hu7fwC}`XcR$=x2VIGWstq2jU!>x4guF0aBC;+F+LXl*61^;H^H5*A1V|CSuoqq z6ZN#bg5>8B0_CaO4@%yOdKP~>zCS{`XHSzh{@oA?ERu8HZJbza8A(!F)YqU;D=Z)^ zR9ZueNsDY#Ri*~!O`v6StAOn6@I$?`{P*#0UxYP20CLgvBtAh;Qq-4&ty z4}H?w|5(Z&$-q_uJfW*Q3ZD_f4fpzpI`@D(+>8q$!<{WIU^Tr&^HnS2v!5cYxN>u7 zXTFx@uz=1P|2k!sYd1}Po_g}0veFtnF1TxW{#~5GaV&3eyo3ZoUyB;)DUTy5L-*Kr zb*@}Z{-dP|WzX3sS}UO`qy1o$Z+8wmVn#VxHfTr6k%NpXpI`;Y`k?0aJn{O_CjpRGlZWL3^XtX}#*CBNDli}rni15IPw9Z^!-`ObKAfY1lyR=Y(m;}47RtKZn~ z)jF+*f?nxn^=^JwQoRQ1e!H)Ae?-p{#NN11l)BermN{7huPGRu6d2Tt< zNv=p<#o*E8K+i_3vnEo;B4QdLC@Nxw0x8T_j6UJdsEk9rz(a2CvL&__(4++x^o`pG zk;?oBn`VVdZZk_|O&@kn{ALwJ^H68;6W?f;BkEoAFC7q9npH3|(f=-bXS6Ed#SfSx zLYpkEUwNG8%O`;QM;@?Noz_dj17=eA>}j*0m4qQS-v^o;0eeTM7j>c_N5D`t=m@^c zwh&2o*Aj}@H7D;C_UfcDRFFm3-~O3SMecPQ+pLOe{ci6JyR}2G^~(=OU9HHpl(tpt zm~ocB+BX05=K4L73ZOXNxh*f4|MdXVKzUpzz&5v0^8^q(LQ><)f=$dZz630`PLw|- zvQWzYO#b^b{J#xRkOIOkRaRjtN4e;$D&YwWu!mO7j_YuO%oKKrLZ6qNe!Bp__XSQ* zNiWO$3HsPDVw-`{-P1l1u&RkT?k)+Knxut}Hpx@-TajFL4k7@ zdQCH0jw^*qQq7x+TD8|3)U}!pVOQF%(&m-h#feDGzRP&@_pv~DPZNI?rgUbQqvcUa zt)N?`xIUB|cUn``T_ZBRy;Bj*L$7c28J(`jmFzr(S4Bt%mRld+=T?B0f+3w> z&!lHm-zpfN)50e6zVPH&sEJBQCM2FNOs86pC3!N*1gla&+BzNZg?ex2^Qv*$XeL%& zGRu2ZZ7pkIej=WpRKz(95ohi{Y~G=VwaId!P3K%TB$~CB1&M_}VuLM4NV9ut-sU?Zz_i$og_3@$9tL|i>jdXtZDnI4p>1DmA_vbVLEY)`Xm)zsHIWP}Jo2dkU8%Yok-8@~QRYxYF2Fra z2mVg=p!eYIB4L4$VRp-zL03Yk5RoR_9L9fEloQdsiuW;r)Zf>0%J1=muiO+N-Ue(s zH2Ap(rBt!>i@J#-iCeA%4Gtv!mw?=Ia*HWi`|DyeZsqq}soUcjxYgzn#%vb7!AxkD z8SYHZzyDec|JZ*x-~{sZe}uycrkripiwB3)v<+|^EH+A_WBO0>+8!?lX91_#c{D^X z%ZkUf!e*+mbYd^YLG}r$GE8jx5CZWvIJ-1fA46}z^)R-?u8k4r!84u8X;_JI&w3Rd_mtmd=Bv8wRDP>szIyBl(aITdTdPQZy> z{l8Qat+EmDH9!UbTaGD#4~a;U2IH(~P}n-|W=02dD1Cp0*+@o4A#3RsrG-+~3Dc z=iXy;x1JY;(btB80WjmTyPBf>o9QVmpCmLu`xESNT?F_1vM`nLdyHByB}eM{d2+OW zO_qPZCJ7>k*ENghk@!~_D5)N?uUy=(A1uIH{IQ+{%ccChCnp>V9sjFbZ9L(S6A8an z&zPAZ!^oXqOB`)>{K32e10waH@@5B^wf{*)5ZOW1LmKg%h+dU@0j zl@}hZnAJb`@osIKVjn+ctPzt2snz=l!<5Dh1A7?*QF8PEk&ITWo?kMLU7UdFA97~- zc>Qw$9&}$>H&@AsSs!z5a^3SSwtp_>1xWxSKjg74WBm&wr-gLnNfnCThxy(UsVCH=2K%Y}^^3TKhP z5YHO{o5NSM-HDR;bP*1^Tx5RBwTjk@9i`g9P%&oWEoe(Gry=;=2{npDF;$qTj1M?bXMfF!GRIPi-$G&9a9- z>qaS z6-myAw(rKlraVaXVe^b5wGxh(>44vc_7n)$(!B8lDTT0gmYr?Jts*WM74%{L^GPHH zr}>VSqVk9=WnLNX4AY?z`*tb2!kVj727w^iL$PK_E_I+b?x0p{TPq0y83mE-Qc+-G z=lHwLj+b$$c)FjOJ;n*{eEqCsP$64jn{S2kn@dg5*Y$;1yq6xYzaVs_z+X{6*s6Ke z2!*fDVprn0@XD?c%Zc(TKmAm$>*SFER!3noGo2e0P_C4Se&`cE2pVTWdd~*7TCB&s zI+%-AKT+$ZU@kia@ZAqT0!|M*D%(j8VtAoqUDh&)jtSZ2>d0^p2<^Z>NcFG2f704T*S@La= ziyGZW%DuVqq?$Qxk15*8T&ZDO+N5n0qgmYS20Knl zwc(Ok-Vw1R@CHI-Xq0P)$XJ@Jl9g&46lWo8j12`!*ip<(I9NWnR+{Zbl0rhwNJj&%XoLZZcwLRE`LtTM{w4dh>sr58%ASdeZ`JNvk~XV>Gdc^6e0aatrn$O znO$C{+NN17wV?i@uvK#yplquG^!n14@|NPF__?fli+i5kVJK2kr~x?oHw_Acp0?|L z+-Czz`^q;SqE~z&8Pp>lB;?-&1k_sO@D2G2do6dqn4?eI#|t<=?eA6N~2+(Zm; z+421|ZifDlCQ}&!y|x$V&GkZIc&)AhRNV z`xHZHqT7te1(VGSs;mg0Y*WCEYP^s<_t^%}{T2`V@N8k6Ek`hfCh6W)-i}8wgyRC9 zF1SBJxY&G;Bqvmh9~^}Ds_8Ww)!IDj9j1@gnfXBzZ*;uzOzQtS_@KmzGI0_>f;C=R z+{hTlx0D9p@$I)gDy+zdDaDNce)n?GeH*M@S(r5<63bc}__YaDYbTzsqVq2+@+ z)?`!;?3s+Bof0mgN`ZpMAKC!TDW46XrR};gJ?g1vkt!-#TUH6O2XrT$>TlDECmWg2 zy*@xN=tcvL7V|)FcHoR#D51~2Wb4KC(q;jcu7WYq@;d*(D&29bM_HwAR{ClW(dB&Q znRj~~RR)gWJYWeT3<>8kT8B_%2+FY$etQ;RN}M6UbN6#vN@k|n$pURiAIe+ITZ)~0 zd2QC`CWE?Ox6R$4cMx@Uh`7G_7f?#Vb352$?xc*=kHw7%f^KVEp%U@VEFuJR70_4^`$J+!?}J; z&-VxaJD(982?2928_Y;``O}IdKD8FmEU5F23g-J6`rT;0UMsv&JL_!FCUOX2y(l8L z1W4$fpgRc-Xp$dR54BCcYfRL$|6)q{xCE^>N|VxxzJS%b5sN&|tt-@$n+eb`sGywX zLY*a%@UP9$kTp+-4Giu3N?at@vYHs*I`OV%P zW$F`YpG%$jFSHhyBeY*rcuEdQwCKU@K1Cc1nqE)pYUGtzbWwudCRtwfCUz0@pXcze zu7!I`FJ!OK2-X>+R3zX1893{A`@ovMf9tjZp{U4B^+Uebw!)u%(bu!p^-?MyZ<;R^ zcedcc^Vd}uXOhH{)5;Uq_Wg3DYI$mrp|4@$Zd2iSrK1CEjne@&v?Kl&wl2vHMS2#% zKtFq=BeHvq*-Ao{kOJ2o>OE$gzd!@OVrcho38276N@Wlt z>mnst-U#p=t4zt)>oD!=PM&wd4z52Jjm7V0va@^h57+?`jSqC5z~&)`fdZ`5MtIXrjP)yF#U zP#dB5LA}jVW_2hbIFDNJ`y+3VDgIS8&Mcj7l|YzE%grHbvE)EK7YnZ)R7dAk`Uo=a zM+u($!90V5L^`0Zd3d-U6z_|?33e@exG{WD(nUtuUs98K+C-Sl5r(zf)-Va{fk6q^ zQrP|;es=Kv8%oyyN-rVo~BZ%_`&;PmmaeRkbUCeszddHN_0Fl4~tGRZsdH1Cxq;vM8 zf|phzUEm3+l2ynGK;cwJoYeSwX3e-$kN z7$YaU*`f#{E*}r+t>3O?1s=n_;}j{A$1H8Nb)_1eQJ_1a+l=DotJFz0jg@6PQp5{U zwM;uFFbyjTo48Oui$2ry5f0EXwx7kkHd+E4rDC!v$e{GK0ntq=!96$T+X+2ZUt4%z zr!WdqK?+~?;ZT-0If2I^(}w3ufa^i7VqPy?2QTrA>dv#pTsitU-=~ee;~C&&10NBu zy|iEc=;U0Ga_{E8n^FFHN2^<_-b%^KEtkqMnbKzZS%nmt`;gHos?Kzh#8T(S=Sw>q z^5~%ylMJd=pA%j{BPky=rcwKJk82GM$RAuJCAs{a{JW9Y_2tQ6u3}|V&rRFzxb3Rr zrNpB@n*X^t737Civ7p~Grfi@)^8lDB(OAt@)DAilG8Of)dmg6AlEST5n!lfH*?+Ck ztb_8q7`$AHFuds7`5byS&WG#lt#7hSfsFrA9bouSb1URKUIx{&egm_K($$)dZpCq) zI=jQRjNQR5Q?B!o<}J0tOSf3i<|6_g%K3;(QK3p+v({vMJXb#e25Kkg zVzrPt{^hPuc4vSLE_V0^elmR&Do z^*3WC`r*8Ni+5i2E_Cg7CM*`SmVO=HPY)3tYuC{V3t-UEom(`Po`VA6nHJR| z(*nj`kRn2cr9We+cA+fIrxsxd$6yS~6cLHzN36lKWNG^L`HZsm0J1>q8sn!d_v;je zl}Oxy*!gBzTqfglqq+ehswiH^3H|=oj`-Zh7oMBe#fop~GSHA2^{+$0GQV~D^ZR;{ zw$JWoqE{~CjUELYd!1ERV+p`m}M;}V8qjJpiuN4a=)%zYB-@$4oa2)4Kx%h(LKSyO8{nrp1a z;LbQ16UwxyQAs0`z;!>I098{3#-V&|VKCq)^{nx1x~EBUa;%?gv`Y`;pucbI0KAx} z9(hNNaxawQVG;RylXS!9uM0vp<-7?kc0=?2wlG@QX$rHO&8GD_6`SaT!8ZvCqSN_n zA40EuwGcX129r(wfRIo=FR64%D1!+mA6z=Vr$6ykj!&X%6hO^J`S8r1H|>sOWyW-2 z${Nk3muOPJ0U{Jv!#8iHU&-P-^cj6rMH&06+FmySX-tOXaRT9RDzbLZKQsRW005V6 z1fM{&pd!w|UZ#cbm^2RNYz)1YTB3gt_+iH4GU_ZZ1Yp_Mb&(hxlHZ!wY}+%!vhe@Q zybj!rhR~~cJ$jZLm`T3>u}I|S6zFW!YIa_s>^Jxgp1a9VvvQUTG|K_;D|UNoGV*m^K9TF>(+GPe3XMa1DjIv4ktr9 z;^ymdPp&1o4oBC~i4?6wc!Wz%^~lrqIE5UbY<3*;dfZ>*;+1MwjMMsM72M`$XA8J} z_ooDrpcD!AvTgb!2xopHBEn_!Og=BHQ*cMaefe2q?hq;(o*z;UxH^`aJe0DCXZ z;-si2)!|dUA6nLi?YSic)s2~C-Sek)SJorYF@n9^C2r5;Rx8t}5%Z*ZS;Q6+N|dVfUXwXRVU)GJ+TxXjj45Fcfm+h<;pT2(U3?O>e;~0>;e>(XD zS_jfvwA~O&k10`>R9vYZ==i8}=C)WiE0(jxI_kLFRSLR;SE^ z;5|R>G4Cj_7aHH~c$QsuyP2(r zj@lz--F;?OuH6FZJ&$_A2^E%2`*Sdw*t@|s@_7L_OUBt?5AdPY-WJ*p))*w{lf~>j z`|5RGD;8_~Nr?4>=Wqh!8Q$WGxO;rypi>S;wa_UXs`a8` zEJS|LuaGLl$K$`mJg<59V51GcnVIT{znUtiyu;PrkPtupaJiS)9V{df3@$s}{qxba zQIoERp&PJj1ksg|i!hjEc|*jvBgBFqZJ!0<5UP>vlBHtU3PW@jNz>DLZ zF?DO%l76S6I3ZpCs#_8oP+gDH{X?j1w{Lw5IhS%pmoX@*^`v9%UA@QE{;$5!*bl;H z9Nr+w_apUEtCej^#G$?Q>}&QBXuO*aC{*yr!~^|eI*v^3-@$1#TfLdN$fEl#gfIH7 z;<$_3m-|KCNLjZ2>Sv?u)U6e(^q)p14f`oi0tN}KPUfov03m7h_r@aQb6=yE7JGi~%^>J(5xTzhU1^5?`Fa0(;fqA?H5{z7?4z zVI&L4w2t0K3CFFnsvn}j74@fz?q79xF+rI_UMfSGvY%LOb;~MKk<)3we^HwXADd2!4l4 zIZSZg`}z_GDqvBr=4yzu;q0DMGa-U*N=v!+N_XVcuq9ZjOs~1Z((QK>+(rel5rdS1 zqc0^9d1>_=%{MdrX(e$8gQC~LcV?AFf@(>d{Q0KiC8$@1@^04Wkyl3Ljo-=va?Y>M zFV}N1u5xp=8LcLto$t0bua~Tqb>qK`fRl9Je&Rw|Li2Bbm1fmzIv&nQBJz2LVx-Hc zJYDUx8&nFQ3;kHjaLh$>B@RF_=1^R^Po8Ndn{VPt*X|2J1Fbb*@%b zvZ>qHlRN&rw3~YmQ;2vaf2O_tyqykEvm(La+6f6O0wTx@l6b2IimT1GT3M_c%Pr5c zOJC2JIP$Z2sn98Z*v0h7FCL8WqB_w?$Qu3AzCBKnTY^2{Ypz5?78D@nWdaqo~0j3-U zLcAB?V6s=GyTr+ftJ`qFHTa<(?6u8BZidNbiCv8_92m;@EBJn&57u?Wp?<((;dlp= z;em7HYE3dWg#qoI=MzDXYgsr+MpT50`>s3Cj<>ycl&;R-9h>{RXa zqp_jJD|$A{sN1{j8%w54a94vX&qT_(faZlNU5~D*)e_UcXJLs>Tu4wpAPlhL8JJd* z*NeTp{KAa*l`WA(EdGYTvO~hXfHE;aU`V~pWdxtwTZ-J{SQ?p;AJ$Ntw&FZkQ^2M{V@%R*U(qgM!Jbb=jMD_}$4(QzKPuE)t_}wpfhbP!)Ia zok$Tca8A*v>)bs+1#p}O-0&-85nuP!d%q8~JIyT+v9xKUBU<&BC~-bo^nPdfv(!5P zW;4d`O+ppefXa38V8$)$rj07g>)j$lsx5d2hUbPDk#-UC_!s>5u!51q;OppjUzlrS zA8qgVio`>A(hr_)wVy9C71)FeOc+C-mSM(&GzD(9YL)zKvlc&OdMvqiG<gdmZ@L zgjuhk#B4aCgg&g|*fbp<0m*SI&YmwvHu7K;-rJbP)>h935B95-O2ep&$EvO`IqB8w z(C9S1cD%i{X45Lj^88l`h~GT@5U-Z`wsy4qKW$r+#>_#_KP1kDWJSK_*!w+_`)YJ0 z7bKh2I5l=Z290S4#UN@rtyTxnyeL34zMl=y zI@eo9m*itF@t_!dag7H*#248F#`gRvGg@shkaZLSslCEORiO3fuiz2u9$r5vE_O_B z`9R;SRm3z2!FID;=1l%mJhaMF+Su#f#er+BqMnje?*OOFTl`Eew{W!DfqU6s4|;pQ zED{_Dy~hy!J{Kr_&&1GZ9;Ktbe@NC^NfYtBp)L-epNy+=Ug0|HYJMM(C z^5Tm&)-=c6F;{`E1rD{h&5|j|85?=W0Eg)ZP9hiPtt~#MAnb9=D?`Q)pE(P};t4!^ zyuef|rp6=b0TbE^pjfr)16r8ni+`j^v3otDdpl)GS1wAnjiSaOg`PrKekgQRH zGQX2V(SzqnG;TlD&v{yo^MJ>$l5(C?rBRH4F0NHXoZ|_$>iOEr(KnX*`X8pZWu%!P zK~lQjSD0sK6!9}_w=X=ELfN_VPHSEi6)oF~p|%5K)Pk4OIl>{uKBH-@=yjf#RrRXw zo!ket(>=Wo%>=N+j0Lw5#shc`j;8Sq1r!{i3qh9@*E;Pnj zW1%exJT4XOPF8LL!*)`oHgJTt{oOpMo~K_ul>5=MWUDRT)hexZPJk9JrNdIB6C!dN zN=oo2#LPXJrT(o>4~ReXt_4cmOl zViNYBwF<0KeDy+{k$KaUbmM8Ac8Pw&`GGH|sRI9OB>?e3B5v!0Z6B_!^uLL^Qm3(6 zs$kc{2gHD`3=z!U)iZS%CHTs=8l#&S)&AgAzsy%0oG`YS6Vh2!XnP%8DgHQFa&gIg@cW6@d9?s25%ORaL9Uht**|Af3t(e? z>85(3vYZDm2D9G(b|GE7OZ|D0#Lrqb*!QmFP3GpQ$2^dl06Ez#>*;q1XyAs2`j$jY zP;wH^S}d6Hy{BuV%u2{0&SKa?&5rMOcsG|F#y(}vzqSVzdY_373a72gF)%cqLfL&s z>`9>yDBig<83+jvD5@>3Y!l-U6`0>vrAkk^JnNlsK1Q)JQXj2YX%2sTp5l0)^f_D> zmwi|v|Lynk`Fe+>u_^9PuW2QoA!;oxCr?G{?Uqf+EGG5pt)|t<0NX~a|Gw9gUE3qW z^*HDS1e$sL*jkE=!=v8%e1BlDRBr`EFwnU%EzggH>9Bk@ARgGH{h_C>{c%$|#|jAc za%Ym*&TIQ*&<9A?`kG8K@E6HvVO_sCWO`KB%R72)QGffrSf@Jr-p=a8__y=XQpAf? z&i1=88u2CQY|vG!~f!z>W+QBsBvr>nX`sQqRa2m_TuS$4LGr2&bew*&h zB<>te`n|1$>1TwWio71f$LB>!)SLLSvbvyg44)m3n9=etwH9znD5*xj8%m&rdpu)6uWmzJG5Lqq+PwQGj{n3Pez^7Nh`Amm>P!OOVDK2hK^ z+0e^!rJs}spn0JvRhj(IV<)=I{>3pho{;sF8P#alVF_m~o}$#uh|{lSBEILTG<#~& z;k)h3)kJCqD~?xdOlH;;m;NNkTv8k~JK)Gc3~c@wVL&&0X45PO>hr`!I-Z|| z2QZ-+tZ4q&h3L^~C?fWjR;laLx=7k6vJ_y$sA{>_wH!q){c1^+vVFW68Smg|7xfOL zXaroAqF-@%HQln($VDCNj47pEi~TcPr%nuK$(ZMEmBRCV5q%g#Axxwh9A6r*PNW(^ z{h$l?Za9kGB(tyOcIm-*c8zEg`qT3HJ6-e-E~td9H|>k)GA&LA?_x(t#BVPTDmrw7 zI-P7VDk&H`gbSJv0!~bAvI3Cd!>C5+2zJ?|Ah!VX#iw`tT&-127c$%UkUP#OZa%$) zB1NayY-UrWb~hO=B?d(5T2z%3UUH2ia@P-XD4Da(&TB4*%630TMn(xB+Uk+!MDJED zW)Ap33tz#bx47QVcLvjivYWrubUzWN#|{L#tfKY=qp+-sw5-#-fmzax*&L*%VCx&9_>%H=gN&2H_XnyUi7!^z?9pQI=%&2W+us>= zX1IY}ZRV5yZ*%9j#8y;aOjmanYi&%HBL788nUO$LV?c8oE767+=NdG*mPYtVJX&dY z5ZBVIzS-!@%Ry9pd*U?Y*crmS719W2sX!7jxI*NfKgbjpu|@@MOF^6y4w1wEpem>U ztDhn17;@79NTWcZ>v2qYE(8xoAp6f~5`>Vh_aO~54IAEI48gb->qi0}D7NZ%y)(dk zco$*J|6xqNLBEW2l@j}y=kXT#9l0X4x~U>}KjZ!73B|k7&w7u%vsaxCCzmA!xoUvY z_T;-{S;!OdpS-sr5WVE5-u1eC>>p}(K60jP#6X4=!;?T$3UvrszItJSAOu~K^-pw) z0fTVFvKvV7LMW}3zbZekC9g1aJd!vcVNN*iP4!_z)ylMAbXn-q((EbcinyLW2TkNJ zPSii2d&(CHYJXBvBC&40BexsPs#FrS`F11`MEu7*Pb@M)&+^z!PvP z`&R7FQ|f1}mUg4{rHimysxWb$H!+mu?haY{7Ies5gQsCCgV~6SB(-6y&ki+eu8x8H zEN6TQx5}g(tpWavvc;1S!g`NY{#7K3=e2=co3(cR7Qx5+1&XZTDR{gwB7eu9S4_Q6 z8*>U)=nqwE-Vb32;@XsaS#TyZI@sa3*|4OZh2;uY~bY$11^7O_KOb}tZ zxM835z?PU&#Q2#eRI6t~6IoW^?Qx^ym{tHDO2mV#8t_OM%GH6@F*2oU%}ap>fjSm* zjcMc*J_;JYhxz=b@eHZ+j$o8uBa`ANolR5~`^rz6glIdm`~pvl@pOTvA2JU`W~{^PNaN zoppS$YAEq1^xh?&Z20_{6|z_%^Nl#3U0^b!zW+HFhiaymg<{tRILM@0c!48pY>U5d!PPz32O;KtFRddmu%`^?vs1C z^VwYYEtVUrpUrhDbQtwO=<^3mJiZ*;yjj!JYC?qPz~lw2gXGj-{!QH z2|uG&t#w^Qztu_?hdwnh^57i)fY@I+2FUj8{p92w#du^8L6C?N>w-T35niKtphlt~ zvR|NJG7toSvlM7i^U~=)JBEw6tcRP1Ih3M(ws>A3J-uJYuzLSbNj>m1hfc5KLqg$u zj=}Ume0U}*4oI%BdT=&JgM~pgDF4W5rmCBAYr6rDIx}#+t|&4V}+GO z%V-fnXH@e`ml&YcQzRvM@Sh|AMFZNr_d!RdSl$=a?Tz^^*wRG`&`V|)@eO0~BY)r! zIUMx{l~bk>@OyDhG9Bsx;y*!6*IVOfDwFV|WUv=N$hM&smc^bJWqC78ww~SN4r{IG zhv35mMb#;REJ~1s%BD%kB{9dPsL>To=IZmpo`^LR+Z;B%cpk^FVr|@;)#Gya(6?G~B6{^ZLK5mTO~D+XE%31|^qLe1-clS83s`*!yU*nBL>`zs1cSb6~?8~ls zXrPX}e%wvKh8;bcFnCPSv}%RU|E&J?VW(~QVX1n6kb+BcJnZxm#*V5Y<5iY)1chQc zs`b(39KMj#7I=q~H_VJ!si4U5-Lr#{;bP6_w106i?{ zBVaT{{U9D5n5kfH3Q9f+L|50JXrH)Ahz= z^pt+9FQO4Z4*(~|pe|HBW5sTfKK9%pZ^d4P8*uM5YBtCPceJX9@1n7~E}O3uM#67}@(^Y3FP3ZNF7z#PPCM(a$ zIl`jicZX@z!Yx1xO9^@Q9`mcAU+QaK2X~UymPlfkQg3k+|NYv7kVn9 zW;yra>0FWK zg6Phl9_J8Vwx1p~S57~`Qs*JvZ%vmj*-~P&TKwq8pZ0Y3|G2sepeWb9Pf18EASJbQ ziAYE{i*$E)DBU34p&;GeNJ)2>ba#U^NOyfN*K^K2_nTpy9T;bJ_kEs!{$j7F18~|s zj1m`JxOl%mh_KxOzz%k$Fg=OS(iyH2e!yhA@6wlf5jo+_jFO}C6V_bJdMz8G41Eb( z9mDjZ>SSuY@24m0GR?EZlJ@(_kaj72@BHL(1pxYn^nFN8S{x=R^{4QGUuBuv+N!;7 zq3C2FW1)%=c!>nLEtA&QA4~#pcif0(7(`qyW)ukGvX;V`I~X?8mR zeLNw#cMHA0?R)&LDpt&6p*EZb58;=?nP~E4%5BKnR6{si7eRQ2*mY=3Cw29&bRaDL zZUHuEBS&oI+QPIZIl1xPI5IsibzSOSNq-!X0a>-NMAi7AafvnE@6j6^N04&S8X%3> z%{*Eo6k3 zzVY3fjTt{Zr1t5jkNq}%I%~ol4JaH+qMr#b`sKoFIp z`p23zHXu$TsUCcGH0`M+LP4wySBL@@2KzKa&C^uNz!qgamu0@wc)i|Uw(OazJvZ!y zGOQ2pF^WR;dS^D+7|*E6)$~iX_2{%PMeQu}tgj5%ndU|CvIP;J&Nq6lFe=#;BUHx> ze4yn}LXVv=rh$)+7^R0@`mn&fP)el9eM-A@bZ5#}KG0iZ(s>hw>NwbIPpxRVbrV5* zy0*EF|8m6Y*eGBm1TW2yNl$~O*=MpqojzBm7d$nAOh!De%BdTaSJ&T!ofp8q$c9#@(g_7P{2rGVuj+Gqaek|(-? z2j#i>UVScpyInq0x3_p4E)m-+Fl96DRV!tlu<$wOiL5F_mL91(N3b<#3+iuq=#$f4 zj9!KG(N>AUH0I8fSTOO33hD)s+613|mmEWcNS*|zty|LfYtReZkg>jlV{zP{QC)xS ze);Jb?ft>xSquVKaC(~i)<^8UvHizB3xxKmtBT)l{R1NP_nk+$Ja>X`aEy?-rxoy~ zq+TZZ;=r)H=AZQH3`EV+`fMniE(Dmrgk`-^BnG6kumSgS%!}M>puO<~S>{{`mGvU0 zO&rVQf8#vuy)(rc@P|^oImv53n+Fv2bDi9dBZHK8rZ2|LH*j2kuPs_rl#S($7k+p% zuw@u7H)0&cP35r0)oG1Jr9T;eh5THyy+c$&{qSB5850p6y2+wb`E#izP>*H*>{_zA z_wGD&CD{#+BjaKx@|4AeK2+e33r2%s<~c@ijp(DVWE+3M*}-BF!zg3L5@7pXL+_EZ zSF%)9o&sLZ5cL*boo9Qi>*$||MiC(a(}%eI&TK+%_}rQd;qZslb|X$&ECG&$piI%r z5ki-3KUFLqw{>-{>9Y)z(1$IL_o{8eNC6H>68Dk>_9>}{zw@B&W6x^BZ|2UM z7Cmnh9U9{P&h@VQENP_`_E^Xiv(xVqaN>(mV^{nIoP_Jt^V5T`k8)b}W4Fh90i1O9>qNal1ezFmLmt++|(T*zyX?V8Yg zUV22Rz-(b$RjK#{L_Uii@N6qvV5VqL%SBUm0B}dn?C2n}1~@!>TwNr+woH?fB!lIY zvaHX2qovCp3_QY#j*PzxOL?{Y=E1=%j&aqou(Vbq<~vfp*HcBxj`gulM+iPl@PV^y z`&6C(eKa>8pwcoyNf>@>I;bNicwaj!Q$7m$&$!<&qm4KfM0@r?7FGp&StC1@YH-F& zVu-In{meRRk+dW35|sf)8*P@KMtq-PZ^+(YR-H~qf1AD{)#9(S*su?vq=x2TQHwfu z=%Xgkbv-I^|NeAQulXPZKS&wamC+U1gBsgm)rn2(UB74EBTSXnC|hSTgAFN78o#z|ImeF){wRC&+)JR|NKu05r_!o;N;l6@lKn zn_8;GjJqx$FS*P$jsTqGwK&u^O%tT%W#s0QS7M7Qs2 z7mJ60K0qpgZEAWs-i@()=EiV zlSf3@U#}A2eBpH?4Ig5Bm^P{_tBUn~`J5|{k-+YaeSp#d8zoB^92ug3T-XX#bV-cP z&OO_GkARp}CFi((vbdJ%0$;(d88yVA#?(>DAehnw{nLV4*#XsPOMw{SXm-%8IWRct zwx9FhP`{&rOOg<*;hWi?DI+nKEG2u67K0don6LeTIx`YnoHs58kyg*de+PztNSfdo zL_Kdnof+&DVw~U}v){qV4$F{3zdJL-RabNcJ@9N+aGJZ^v9kAYs{avLa{7n7J|8Rp zq2*ULjCV;p49lS%^x@Jxe*4gC5!v`n#kE#5Y!+B3=h^8!*58En1CD`P?rjZcadm=< zvsPvOf+ahJ42sc#$`6k)%cd2TSiw@q=H%}EQBm3bTjo!mg||Zs$EkA@#B>t?=e@vj zUE=T1_xyPlsUx&3d>6MnaiRp4F$J~{!io4p0O9DbC;%Uf#?&19noV*+4e@`Nkk20& z90u1EXi*}c9k`>j$dUsDL_LO)4QB zQFEsTpI<<`-1&(@q6H7O*zK`jT6e-L+Db^hj1*$k7r@=@u~1yzp>ul>v1tuuGA&-SySS_Ai?Lb!G@*QxTTr7Vry~e zO-+MB*dh6<#23n?%4|wvF!?O@hpTdD99NFHc&n!?3Go0<&&bwIz_x}R91gz!8!pk5 zN)n*?_L3gJTs~fHXG#*(!<9C|wbZ@hLWH+~5xS~*?mZ)TpdBA1n8L-c{mmoEQh(uZ zOQMO4lPB%Yy)vj#N|8j=od^2N570CT!g%v?fk`9N@AAKFEeIF-z5m~zhbzL!exU+J(Dmd??w`e7*i2r z?`@)n(7Ax1CNo?;BNAM?K<9_8yZXaNl6#!;z(jBcPn-l(ULP1j_j4@Sw>I6ThJOK0 z>qOrCC7y0{vHE;jO=P$4pn}u4vCp3G^1pt7jZV`{Vv`$(`Dl}|`b*neFVE}hyLX8^oRlUWi&{n%5Bv``mj@O6A16W-2;Y1!kZo2hj&Esz1vQ;wG zSdIYQ{y*=@XYpBruVw>kb(H~o1b zNSU#+Z*kGdEmup-3%N?;Ert!L@i===l(`SiGG8jSRDuIBY-ICgMe0Ss{?S0|n>ct_{Glfd zQ>=>xDb2$&kQtXjEDV81Gm*>VuEz25#MjTak@G#_m4cCB=CP?YsUS)RV$Yo?6 zALN_!M#2J-zky>^3R^-Bid9-oVl zbf_--?s1k^4A*er;F^a=rclx2Z@QzOg54Sq-8;@Kijf{est|k+%%VwE%G46Eu}DGv zOP5XPd3uunMn{05rQ3@A$IR=2L1ZxahkW2u8?pgeAg;z>S8ek#Rg@{$mEbly!~vjb zhB0orsEf|dTUZ%#xmLXS*OPsYx`Uu&vb6n)6+Rytmg;3yx@AdR2DO5wj{+`J>Y-D< zJIyF$nGF|v>MNvUWJG-I%D!11lfEZ~QlBlE@HxirsiB~un#A7fRzQHdcH#+UeGsE# z5x~^v4f^5TCIcwqB0hp-HI`vI`!jD)fkrhr;_AkG70KxR-cL`Z=w42(WWoC(Gzy4{ z1cvuaUzQ9}x53T9Hk*rzu-MeIh)z+|V|X8kLsxp6iMf|WOHfc5L+L2r#zfB`uig7& zP58tP8$e3L(i&6GriszllI|eCx7uFdrDYKX*GhD|bii}^bU4YZ-MrJ7oq~K^O~mtf0GRbwgD{(M z=S8t>@@77-u-uqjKKuU|H9`E6JY>jP!U0;Z1o>zv!9 zkVar8L=nd*?LHpQ!q3mYL4=vszveMu0vg*CR^y&%V^5e}p0H?2_%pc#S-`OAS4oQz z9Zdgl5(I-ReG$@N6`6i}n;N*tRPz#S;A4+{8oxl<-gHHBOuCv&kK&Fg0) zrjCFqmelqPNqJVa9p*fHb2494Mwv>&@>j(2aiMB zYTGn}W>=kCZ-}nvjR*>lLk7ofg5kJMkQDYc02d5qC*;S<5?21bn-=~l^aCm zA1?OfYd8NXzkFr^b&xMZ!I}{Q!EI@$v#>asVcG5i`K}T0%nr)(jG93$%Yg$2)ZRYy z$=4ViqW3RO?gu?jEd=Qh47HU+^n*XIhxI}z%4Uy(|2#99CwWHJ53 z-KU)}I0hJgTfw-DjQNG;Rrt}Q38yl(Q_fe07cz)-^5JQ9I|f0IWbmNt|6ooEmO*dp z(A1XOvoK5%yNw$%?pd-RL*D55Ywhy$CCv3u!2objib^HFd zcB_a(STY+nARq99Pj&+zEn4#=Wjlyt=yLGYp|_sz;d3tMl2E^xiBz8q%yEI(pQ|K>4(-w>6fB+$C_H!#fa#_piRq_7U|-+BM++1dbA^J&yXD{emToF0o)k9CTJjq;3|* z8ypT_Pi5EPj8U!&&Z(FbJCv<+zRNa7@cI7Yj!^Cu1qW5_vzQ2gjVo-`ZglFNI$pB7 zOXYSBb-A*~@vT^smtjoZZ*mU|{-J?Msy+rkxpGNNSb|o-g5pYH-Zx1;S5eRZS7lBi z)JF1Nj*QZt1oNj53@S1KrM5ZBtJTaYHn|7~Xkum>qwOXHiTYL~6IcTfLu7oxVtyx% z3AYazHPDn>aytF_z!_i&{8UN4f?a5FdGrqQ)bmv!JQs1RAH|2%@c%RmXXfsXyu7lEJkn>IH1c- zfNIWz=*y@O>jF1;4_3C*WmvMB+(%7kR8a8(LxE@ep{u_w4)pn%zPmo7>xm6WTwrR} zdXjwazB_7Woc?)*YuV^@h!aF;7mNqk)1|(uS$yVDU+(62FIYDd#VtRr`gQ;O!iZ_P zP=hMz>?z0#m`;B@8AoRHk4o-$jw~u|{-6|3s!T1NL;?QFcb8%har{zuIKbHYN|x`@ zU#-d}bBDgn=VQeRtU+BQZrCg8hc)y)dm8&2=rs-g+hcP1><^By_r|-d)m_zh`I2w3 zmo7i3(lV})cQ)Vve4?)rGs?WCIGH2Qw{DX<`~CeaSWEPub87o_xJq|aa^rl$QyT$ z!{hd;()sPNe5&!I7Yq`GfHwuDRtKfOCM>F;5K@g=VWm62=&iju`t>)(DQ>E3DlKa)(Lh*W?lv+Y>bJjEvll_6~1$W)r3Tv7$*mRV* zkeFz1;yJP%J(zga6uie(z@r$S-6VUE!qRj12#4C>*JC3yH-V}YeAe^M4fD=VG( z(rqJH`{779<`8f3UpB=>+|hY`^*JF>;f5#g5P!c<_^k^5Zp-{zWOmzz3M2KQO{s~D zOL5+f`xE1>Xw1h6KjurSa*~Adm9wd2IPkJY5%D>{>#0$K-{GDQ@BIscE_LhrtrC5M zDk8em^?be?FW(~gI8yk|6@HJk^v#C-GW3`QWb3Arz(tR3?eV#}kGSe(qTz&*BM(ca zFvguR5x?U!t&p%r_0!#d5v)Y4JZ#naGyqiUcdflo54P&fw=Z1p`CG`d{oriMT0PYs zkMC9x=HVEdrl+Z{k!xz-YQFt~GX;nHBJSyMVFl+t;PqB>eTz=o;~0zGoN;_WDNZmN z|4F$U{1B0)p4;U?WDv2tT-<|gefL|AW-A*};38IZd4o{-&dw)Jc`3dj9AYI{JeS<|46=WRC??HLB>d20%k6K%@r?z4 zI#vdc@lMB_{Uw6m!g?UxBi*E_%_mpad5G3=WBzs>cwMVNpW8~AUDS4X-PsRO(v-?J zp!DrPlq^*G5ZXn(Ku(X?b}z?M0;_993?0)au2xy0!d15yzJO>5g#^^yd&t5rPBJyu zH-{Po?)$Z?HjI>8B^V_Sii2A;!k{XvpyEYsL`AyMq-k85<8$M(YGZPCGRnIRh58 z3*Q$CMG*CNHiKV?eSLjMZ!5ZV({IjKUi2UEiH5(Xd^)*yh7qb_^xD-=WG$4UWBlMG z>}S6{+^0(NcnXG|qvpS$P1Ir1PJ1|!eWS0IVOSl3g&Bg1F-z>ZBYE2ExDPXBRezzP zE~m|)y|kp_z?&1pn-e}p-1Ovm(^K1m4SHhm7*N=^k8x(QJY-aU#WCq8cUZ=EE=c>c z_58<#c&vt_FW1ThzP|?^tV*u0^PyvTZFRTc3yV$XujY4fWE82?{p=) znQ)2~XnWMOFZ2HDuwxlw0=1rxMyz#=nhEANk+RxkQIG6U8U z0`AcTjs*l@(9x(^n=}kJ!RxQ=Q#O3@rBxYqV?hY2V7o646C+#DUZ#Ud*s|I4}};v-=f>izs$7eoYIH zeS=)20_hUvj;eHj6+IF>!7vzLE!~gHUaI$3*U7T88 z8;)PE6Dp?kV6NTQ^E-}>8(nj z9s(@b0^RoC&jhc^;w#k5!!%IR^{-o!TnluC+;8Q^!@yJ|?k(<)^{Vv!j3h5{dcRT> zDcbUgdNWk!W!e0+HX++54B%hH#2c)SmIeA1gIik8yq-ESBQj56C|B<;4Zrp6ZL4Zp zIz9m`Vhqqo=0mI3wrwH?g-Y{fgZbtJy{d%0Vx`4gg>sG665V^c7c3|kYgSJ`gJ74~ zYFRa5xX$et?pCZrMquax>7Nsz$|X^tHEBPmyJ&`DN+l9J8cE*!70!Kx7<@Ilw3q(y z1}I3?PBIyJUx{JdnZ(jL-&D`^Kiwp^R%gNTJxnUvb#hxxekezFJRENPT>0fJQFK?9AbC$%m^Z&1ROE*T`~KboUJ zEP7Xuuc<|$T0lU2vZy6WkYea7!pi>I)*g#p8>9NAP_;t}`Wv}NE3H;R`ZxYNAa?By z{m5|35&|qCq*T%{1_lqfA4eN3Q9Bnz?$gs{+NL3L6WHa*_L(kkJ?<3p!oNPe#K6D# zA$+fiC-gDZ8%-$B;eNS?AFJk^3mUQK*t>9|^Y`TucE!39`M;-rpB^%KbU?u*auGvA@3`z3p}Bo-uFAcQ@zl zf)*gG1T>R;C${QO`TXiaKUAOYzlVA+ksJ1WEuX)?&H906eXwIb{qh1`h&8y~^J-z` zqv9ah?czub;!q8v*I|)gmpzRrT#c7XHM6>4Sg|%C9v&LP+!ThF5PJMbTI1)RUV5;ozReXiZqJ&z*^YpUeIdE94E%PXIbmwsVTu&JxP0^o2 znWad}#*`NgChEln}7o94O5Xr_*yW^vIzCk|#0tRld0)~j-u*$p|H&^l!+t>^?oi?4nO*=fs!q-HWH_+NPoN>DR4m1%pI2Z?P*2`~P>q%)< zVvj5>Eq(ILu=@BwWb0p)()a%mc*NQyfnmeh_;dzi3%NIzLWEDJjCCI;}iWUAO1{! zexkqtesd};h8igWBS@<${jb(6Yd){@#$pV<8B;}xEU_syO*Q(yl&!M)AFTi)mava8S+>SI?yHdKN% z;s0)|1mdu4_VKDR^dNE3zs{G)pw?2v2?LWqU3N-ag>6rw-?t6@96jSyOs3tOQ0l5x z7jND*MLutXrln8K%ITE7%cC2X+*Z=D;su+Wt_;~hRy12pO5%u!C4?cotxJUOL%1H; z(AjJ4x$Z(md4hhDztgG=={dg141W7sp;#CuQMQdDh7GBRB^}W;;U!F+wYMP^;xDP* z-WrnYAt4CY{hH4Mgm^J1_$@o*3{x(Lr=)E$E+GRN-|AXevltWprgh07zhcciMa9*{ z;O>M^U;5r5@|&QyC?tG5Rc51ZInq=3UCtXlVG|{}i)Yy*Es;q3^n|3r#PJuoR-_s7vxLoH*Zh z%vjEX?Ui?Sm6lN|dbjESwa*i9!t$n}9ZU9tg?*SqjjVJIgX&VIN>=2Ysp_AygA96; zP_--V=v|{|XDT32VjhxLjffqUAe1Z7X>m<5xlPTIyGxL(P&}p}2{ofxQ+TfA;>axNpvg8Dx`;>T0MRr;=Wsao-muQ# zRpH5!J=h1`3i^BRC};9<+z>aQt+#U8(+htA(rgE!z`Mg&oOH#|$e2{#MDNm1WIKp)#1ei?8fEVYRRZ`rk0gykS=` zydc3?CjB)Ua<|H;FhFI0ul5k8)Y@1nsTqL5QLPrG5xoEIx+!T8Cz;cOt^8<>^uzs{ z{aDq&8%VbrUS*zB`Ny9>PDg{@G7*#A3j73p6ZGF^O?SC9N*<)pyDjY>oXc}k$qSPC z98R*m%~G9AMlafFdrTIqLfETf$-po^V;Vkc4BKH#3RhiIfYbU7s@Kr@H<_x|s==zN)vM1hEC+vZ%{&X+05 z?puTSoVM%!U-4O}isyAYTRsDxN}NTHdeYL;zI;EvQGE&yoGH7N$a^8WXs&t&OAc9( z>;k|6To-rwj$Sc=f$)6-UuD+`2)HxEpDcu7-h$e? z2XY7E`=)Pi{jIq=hzRd{&y*^W74>odY7qWYr>RRov46;FM%wU4B*PEh!Nfr1xEOIv zl!e+Ybbwz&Qplznu(8KT_c616Y$t)h_y`Qr!|PH>r@e8TC zI_gblm^_3E>HWJa%~uVc!Z|}Qj<88_Tri+U&JZn9wC*FhHzvsPw$eSo(!8d&H|#@K z;8Dfs2u=_#t!K$)l>jHx^4AI$ZWSUZPX1UQudv-n@Pk z^4b^jS^!TED39fTmc7vMb$rvy93IUNqFf_=Nm#p{kQ7G*cRJ|@RX&?G&3oEPr?GgA zga!YeyJWn{YTjXO(O~w6zRv~dt8{`(=36-9{io~RA7U1>SI&53bOx;{1@oFf>RYd} z93f8RwqDLCH*_`pac#9HjvhG` zC>VhbaR)zx8<;BV2PvvvM7wm^x4$86VmT};*k*OI;kPXL%=C`W-Ys_42bc}7%EEMa zQ)=`^eg`JSg%sX~d_03bh6;<(Vyp^r44AdLCvr%hXErHcnF;f$KONgzDJ!pXaH;oR zhTQgD{>H%jeyO-HU93*t9yxw+x~j?(V>k5Px;j+us+a#Z5?h*~Zdj7BnF7evD)Kky zcJ&7p129F_b!&lbr&mw=cjJ%q<~~;-XWom+2|I<54F@)(pCH$jJ1f*;jf)*RL+$H8 zF>|-8->8%5+IXA>kc=IHsG}?FqO+3y(#GM}=!G%qx9y6)!JoOfbII-=?gMbY+D}x6 z%W6LL&-% zniM9rTKd^G6sO8Qjbu%eXGeeQR?Hi?V_!EHC`MpKU z)=kFAORO&-s42pVIf>wV9c?I$?X~>|eBoix1DEj9Dv%~2!9v^4!b&(ApAf;H$oLw$ z2vjv*+yCO!<_C=>!WGo~5SST$`{lgR6w_e-@aAtHi80JJCfeWP0%AdTnAZ&FN$u3v z@FdZ;Qb*M{l$5ysy+hJNr@OINee?u6kqnwO8eYNh2>QvE!DLs%t@o05 zB~3qonc1&>-FWip6Wv;#vvc&#g(70);?_-%qi8^!0e)FFl}#FlQOBZLl(pvD6g%bzj9Mud}FSwL$0lIzF|dQy^o&$ zS;DGe?ZeIb!_@#mZ}@IQ`FOsL>lnJy_2P=hhsQhW5%{f#ZT_dZP=|a=LQ&E>kK@i- z1Pz0;YA4Epg!v&gU7NWl|F83_aL4}>!-BystRb+x<9iI0ho_uHsU?$ zR0tezkRsY%z_@gf%L~(d1Yl*5u zAgYSCVyIX!hMoPHKSs*ex=Mo=5Y5cOoP!YZ?tTJ=$JC|b@PzEXLZrvAl zMc)}$5B#wen@Y^cWsnGkf|8g!F-90#x~h${Bn_e;J)7{qC#N)Cv9)a?79u!@6QWHtEZmRBQ zKNZmv7j0*>PfJ9J%eiKkN5R*XmK72kcMl{yoMLe7hFeng+gK#=Pj{(LKfXWQ=ISCp z3LOR#SVwHm=x`U{$^YVe8hN5{UU7}b&P9t{f80!7Ayn$!MZMR)IP{8@T|BduT!qJ2 z7DneYvluTUhG(8zr>u^10gaum_Bs=Lxywz7K5l9%WLH3S88~UEX(x+EQ}xZX-UQ!2 znDUvIEN3f>mflY`H+&B_mNDdDYpPS2d2Awmt;70Ij`r7s>yiYj5|_SmBBVMgy^Iz2 zQNjVaI@>h|LAJOSwSRl9ct1CQnUan}9c^K_i|*y9><_kIKZ&BX(fe}(^YufzdDWcY z0~L0hZCXJX6n1;GLRP9wc89l%W{DOTM{zcy`ygaqQ84z{cCnc$Zh+AkR2yG#FtI0w zGv^S}SsUsgFI`lJXKWOG6saXHUp|O}Gq>{Vr0nr$Nah66j!iVK;oJ&+yJb@iimqeN z5j|1tub4HBkl`QSHm(L3gmrfm<3q96HFG4Km>~;HNP`bQ%D9KZ{vs|nNw+KuiJucQ`CfS7G5j^3Xfo`N#SZR;7yX9WkPs7@yX0lpXeA}3pWnRh$>|S2 z9uM|}HO6?pue-0gYSjgt8>v^W=VxA!)yUnQoAQzG;6}~}Spp)xr{~|&BB@)R{O=*T z-qj^q9>jdrcDdlx@6iQl7(1T#(IlF?hGRj)s|zKyOLUc{Bhw`{{T~WmmGWP&O`I0# z-V3F9{Wd+lUF-DQL$eRov%I~RO5kYUBj?!DvB_7}an0qqTa+z9v^Q7o*Gg3`G-qaS z-8Q*^%6^0fb6*_HmK!<_k;ly)9)^M_;qyeN+H!ssgFf3sZ~<8nTx0KUh71 z21K|O7u!>4c9YOhNh3{<<_%PQM6`&vSSFa60&)oD+R2zV;D9s|a!=0kbuM0L#07^A zy2-$u0aW29&~D;o^C%PewV%tN!x>ps3(2zKThN1)V)`7ggXkY+K^Xh#l930;0kHAhK6Q|NA4pg(PvY6PZs2j*f3v`oEKt^wj*4xzxrsUbKySs z-4j>%>S``F{!G8Gpq7I^%KHj2!4p}Se}DNbh1i%Ln$TM5XU%-w{YY|E$u`^gMK&QODQ{ zC*&iuZn7PexClK<>{HAW%h@kJy;C21A?-E@Y=nXk|#WERAn^F{mN{>m0S0z;&$)n>X8r)gdNC^Qq$!kEsd zt)o-RR>g5lY=3=C&8PqH;^lkfcx|V|#iush&6d`?D)2b_77E6K&Ba_d7qt`KM&;A- z)pUB^ey~VL%{LAx`oDs$0Ln8;0ve|%%9{j{Lp%7w@9F%1taRKES7#mjG~+Z1b)|)9 zM&BWk2#E{URa&0mBx)*S*Ue#R1Rb#i2?RCJX0a@S6SHKf(i{59SRjnjMy-<E4FkY+xISz$4;p}^ZI$k6@>YVKr zsYEi+A?uJde7(eGp%ePzand43)Hz&#Z>M`LLH*Z!2aFFFNRh303Ba;I+|WFZu?1^+ zsQ-)JyoW#;Ktsa(c2EbbW=jtj5SH3(vt=*Wcwwl|JxAHRN|l4@eyQW5x*}tjXG?76jKM+xDut_nc_+0e?&w6Hf}N*Zh*is}a6( zjr#~|c4D56eaR-fsbUSA6Ik=Ltv&I6R{H(a@!-Rp6A~a0^9N%9zh)&o6_E|heJ0aCNP&#R^U!uMmK|=z|)A5go+e(obkx!{4G{$ zdhka$Pj6>5Q|0rz*JH0&l^(#=5bHCh9ABIy^k%X9CFXiHL=SUR|9AC45#b6P`GF?O ze*Bw+wv_r)4C~pNRrKoO{i$~ZSs~>=X0`u; z$umFu5GFQSa7?uG%(b<#rPX;gi!L;Y_8O^91S)dt zHmy;1*txoKit>)srw&PvpQq9!_JaMM2>s`e&8yG?F~>ihgwG(w=*&X=ao6Y1pD};? z5xIO57&#$k61kw0Hh9IHqa*3$z}|89jNLAm|VO$9w~m{GG+MO<{t( z{sZMSmgYYro9o!N)r2a~)E5s_J}6*s0s+gC5~Lv`)6Pr(`AQ}vIK+Y--F#xrx6Mzk zEZz3dG+M`)(2$({das69nORBCvA_6NK#GG?DF3?pfu#IvZ$lyJXbBn24$4@cln}nQ zN8HUfC^-0r$@<`RG-zMkA&PN2IbSKDyGc+ZQI158HeS-!o-egOJFVKx3;+eJzs7jH z*2IwrI{GUn{-I<1^KY96u+yv`iQ$bB(1J_pvKGTOB8U^k#+kQ9XkLdo44^(jz&=Ao z>Vm8;`jptM7g@i|8TnesL?10cheVS}4M{Vd=85Z<=fwHD4-iN~a&X=YpcSF){&@Md zGv8N0zTA`hOp62i{DBibi*FaDqsj=8F*VC5=~8!rKUff0fFLQ5)>hL%r`~F|I;9?% zTh|sH$Nqg%{&}Z=UVxF{5<1=^$<0wBbxA;V0MMg8#s2)hl>UA}?RB!Fo(qDiU7h6D z&MXH{U=4RHWS_?{Sv6Ws5u|7{id9^g{B%uPkmuIQqep9<6#t*EBn#{v^g)Iq!Pn8k zR{j-vdFTpa!f+~33-K_;8ZIrJ0;f_#w}7qiFhk!A<@Tm7p!244S^c{YLCcG@oH{m}Nx0}a>p zc@4b9FpeqBz&MlV9#DrSOQSk?Iuhph1E~Vc00$P>bNkH~LXkE=n?~h&rYdH2@v@H= zk6xIHQS3`AA!{cR4aT;5wQSnHMeTSMnuS-pZO4P7YynWvqqG{w8UnIA|9J<;=+MDN znAoGS-yObH4U&2PlnEYv^@+ooc_{&{B>CWqS~exZ?+zU=hzV&YWgd_Fi+w=Z3kUej zU*)C0IX+UG;zgoCBzFSZ+pkah~`(oEgb%O_*Zh#;lgpVHNzs zfeoc4${QUiL4hM#!Q;**)FJWz9|3o1Z(1#n=9?XNDo|T=AEn{OM{1Oh5^F#CYP9K&XnzxSDq^qA}z$RH7n^ z9em>_H}3G(B2*?p1~c#M!QnP0%rG8U~X&7-;7REX^w z0fi~&`)#iO|8W0$)_*B=^RQ9+K#*3~>9V?aQP|-?#=}N+*BY52GC{XH&fhY16}{e! zSiyisQjb2d3*kL3iyC+JSI1@asfEysffM0kGSJ30KRkBg;47$D5*8lqa+f%i_Po>* z{DWU0fC+|Y&2`sUd{h~9V9b(Rl=+dl57)rmSmi-xK+52T_$qd1;v(tt+W~23ViKZO zU0~L?$!}))pqAY%&7@mohT3lXyq|@Y^z>mce2ryd@~n}7SMaBo<$U*M2rJM4J{1aYwh-+^miY!{J@hmFE1t`J1BqBF%~o- zWkAY~L_DyVwJK&dwaT^C-g$|5NEH{0L^d4o`t2$)m(9C9>Qv!{GmkB-ot0~UCP(`5 z8U>#Cn>%l7(*gjq>vHLysg-jS_T%IE!#N-R%?*S8=9@p~_!!-Xm!ZT~1g63iF%$dN zd&fHtA5Lm)`vW%4=TE+dQ=A%`*k@IIVTA7`G{c1y2@L(-=;(i59Te}1>8|6r0KU+#?OJMoKKlYm^ag1NxNxE#L&#jB4!+E1FK?mf2vmJ$K!l2$+( zSz&>d?(UH820>DmkdW@~?k**yyHi3+1eDJ2#X9Hw&VS~cd1q%CW?PlyQ`;c3155FKvG7j4;qOdr0*Sop7`SEQCR|mbyoo(M+1d>QCclr6d z-l`%$c0pa)Bhou#3cNiO`OU;eUoogCvz>ZH#$HEIQx}+m zG6}t9^GC1KY6rfFq}&~&l^%zjg%i;gVLxJb>p2*5*=2xN@e)mL?$&jGL9*2=olFzu zj68*jZVI|lYuf~Jy za8F5{RP6s$*~WqXWBRzqfjU zr4N+Ce--M<rd>6Xq+);Lt1&n3ypE(p3iTjMtO+CuO>1?2X_n7BB-V4ehD+HsG z4gwan$k@WSMw-3&YI&5y=Sy z{b%8l$6Tsv)>>KCUCAh*2}80F6YH^f2_-yBYO#WsG8=bqw<;`Nbwx zpovgtf&@V5jm?=0(fPF$?wND~c^!=wj$dd0>Iwa1VlR_5{FqT@RO{?9!G48f-R&OM*6=Dl>pU8s&(ji0JIU#x9`za#mB~_R#bkeHP@cZY%m?U&` z*>loeF7p_EF#XGc)vER{({qV*|C@~ro&wb9a@X&6-++117*h%9SWZab=a)K_&4LK! z8eN}ip7bFmO~<#6#CIz~TTd4_DovCWrSe|jgxs0TjgRw`^lU&}O2qGEt?vzbF z!|Uk3KiF1P!DLp{!p2ha?n0g9(B4#g)WZxr(Dfew{Li!7Wx!_&V~^wyxDiBTAwdQZ zxwi~VQ5nR%S;oQ13w!nh@K!UBLq^80a^;`J z1QeLQ0u~sz5MR8(>Exc3vOGaYFH?()itpizlYblyI4n$f$5b>CFgij0r@9mYn*%f7&GVoCve5I${vofj^u1HMkjdHAJwzYv9r(X%uOy>N>CPT2N_Z=-MT62 z6hO?h`wuVr2%b#b{dzX(fAJ)wnX+fGyQG;ejAOFQHc&a$84(disPP3Dkx(@^vdq+G|y_)*pZN;At3cRt7gW8Ag zHSj%Zp!71Q92%=t=Ur2=x^2okj4Q~8qMOWo>;4GI(;d@Dm+uAaOsX)@0;NvSdgdhe zyQ#2pQ-bPMj9tlAQIfUAa6Gxi3uHZf^2q8M=#!fj#x{}H19qYQHP2jG>3>H7y%LTF2% zrp;w%KF+@~I(+Y5XD7UY@80nu9%&kZw{C+0++mP=IW92%W!C*B$1FH9y zwepsPjpv^cehCMJP|2^5^?TK-+T~~X=fnSc6J`n&URm*6UA^=mxUgS>H;?!#u(bs= zr)&3DiXxxXSF+U_`xukfmI3;;5^SylussdYDWtjN-$Pi3Tx{@X~L3EON6K6!W$&iyAf!V`^dh2 zERaj2tL&`tRB_m$UF~0=F$@fTg02hAwpEJh+ITTH6MMZ3Q88RA76bbY+Q*1nr zi1ROp%dH-=G4&Rul)$ng#jKc}ZN+fTZ-rwj5}WyyAIt5rxhAKJi9I&@%veSFa(wM_ zn%ye&Gx?c(x$YEg*pj+Eb0tp_3*eOyJ^?0Q%MX$ze-%MGK*11|&qFd!K=FZGP$T`# zK?%U>sq9+gQtJ9ZwV#QQ9Al{tO@e+hcDJv_c{5gA7TS9M=3XEIUO)?!x$+UK&5G!r zcWnAHHXX5ceCY!|kCLhX+|;lCMy3XQF~Z`3hc{vw<}eC$1!bd{#Es1|)A;wh4GwHW zZAs4yAXWNer|i>rJL@H?yg?q?lNgUyt5CY~uv}cQ@tG@n{qs)}ZcfxPQ?8 zH>=kaE;xFFzn(CJ+Ka}2tO)2RHN{JK^d}^^^I_=qABQZqRBE#wZ6Zl3)OgThM|QTV z&3G=`ry#>OrOCF)rtdzhd*{8K`g-&d<6e11F55A9UAmeu(@{X2+^5ra_xd<;uxlj3 zY4&qJ@+XbGO0s-2Gm|p#C+9F$#oJz7tQbRZB*B3fThBoTx&I!A{SFsgHIGlW#!ji$_~!cYdXFst6=s7Rdb#b90+;JOZg2=494$ax9oO#?uqzaAb<% zVR$PO=+bBaKDfU!^Hn5tSad|lP@c#_l#v~~)#+pUjM~oG9qQZ;ZT6R2l$A{BDq62s z(9=4+j$2-DPI?(K8{9{}@c1&*JZ~e1UrbabR^z(Fisx;C75+b-RLm z=fa3#^|*-NjLW}!0c)RD2q%v&=?z|OjdcKY&1(CJ0VwGsS=*mAEVYumi%MU;w@79eCyH$=g{syma7N-st^p0@SljYQqz}G!w z%^~AqYIuV61_Z}>2H}UVTe4S}uLt|I*`QQnNq8X~qB-N^M*js6pth(RCCk)Cj7MT1 z0-@BRta0bjL6djzgs?4K*;=lkpvwIRFsItM2Nr<|&Ye0pLoj|Xpr0HrL8Kj+Z`VIC zt)TzCZ~(goQ?BR<0+=ORxbB;-Cepuoxou35eBzr`EqF!Z(f4 z%NyDoTQ#LoxFAT$HxMjGx1!INeL>I6ZytrT5pO?r0$h3@WU=ci0C0eyI4IzFD0AREF zbZBuG9c5Ek4DH?lrg0YoGxKn?TT$3~(PTCJ;L4sFBK*}@RP^AlGMfLbihnHyXwQw` z3G3LyNAjrl51;8ZZsPYpByTM!nZ=b<930z}kyc)LL-Q6aCk73uINMGh!{E-$)KDJ~ zJVv{hRMj`Nxf!F}y_Z1pxOn}}uf2c@WX#U<+2h-Qp6&bh@ABA(wbu4&WRiut;0C9XqhD3mLB_ZiIO z?IfhhZeXs*IiVtH5cOmyK4Wl?X4SIfOyfTmOP=6Hak8rdmW3o7eoC)Q?2S$CR!oKJ#!*N!&G^#Mq|V8sX5<6$HPDRP3$unSFo8^?k(W$LvT#3sN2Ot9t}! zs-BO~Ij@~K%xi+)YstIllj@USl8~6AJv~7v6qkbV&@oMpC;}b|o-duRVm;2{`aXlc z*{JK{-J)V~5IbDP(YFyR#@_$p?oQ5b3Q8sO+vdfX*@^TF-aQ->n1k) zT=qp-b)w(RLR)$YvgmJU{EU71vt{{F*eV0AW$W}(j?w5~Z1<6=&|nFC=L;_UvoDw+ zBdu35!YOWoyXIF9#4EG3yGINl52{~f9q_y7RBuOwGR1@+7pEbl#QlH#`LHA~eoAAUd@?6z zZGS~CNzpcj7-2~1aa`QK6|_Di(COFe);%&D^1i|OmG19R`9JIToA+LKfogCi`DdxP zMDU~c9Tnr_94ejJz-iZzdpuE_%rHmm`N%Fu`xR6eJeD~xpXW%PPE=go3ry2&XKO=K z_<{B<%(Ddbi#(lLg5qkT$_;Z$KkuuUCh9Tb^KGlXs3EJBfKK*DUdrv~2v;HM5#Xa~^F5 zWY$Y`woAMpG=Ig#Lhwp|6GwL4(SlP{sOtRv@zvQ=Gp4ec01_w4Z%_ZSq&B`FY#GD=-WP2E~0lJ*w2)XEUr`NBa&|wEKD}xhBOfbF;Hy$`rr)=qnb~O^a$3!wdR> z!joub9pXrOwT&~OxnuRxB43v0+KOy}*-3Bi>nRFu>NTwG3ebv@evW@uKp%-u&Q z>p><5cWBQAn3^4osXi?bZQR@y=bQt#Tv2fnWSG@R(xSbCBljKock5VgQYgrohzZr_ zZK#?yYQ1;v9IRgj!y;$;vCZtq44nPVp2Nv4S!u%`&p6v$bM*VI0XH^`13$E}K1lv= zxHq`bhnJhV*;O+`9wj|q5EI8UYY$vXTUQ*E-jw9bBnhD5S1b)ZVohEOwa1#g5tbvO zkkSW*%_zUBG67&2qMB!$+6&qoD2Ngy0;8p;pO1Sh{a7zmIQaUe>?Nx}Bm1UoxAL`? zCZHOSR~jx{q~=Rk~MIRf?LS;DlbJ`YCe$|HI$OB>j6 zT8}2;@H>jK0Uq$B3MXwewG>jz(`YfwAf}JvcmrZxOeus=~$;Q4&IA`t%q@>@6}XQcdk7Jo8&d;Vzz0y&u7P8c4(|C z47{x)CJKXAf(KHzLaOPvUEV-LjQG+hf3A`RvQlN?6!CUQ9fs_@oFTD)C>1-drKe!9 zE_Mgi7&nn9m8Tt@W~I>R+f4*B)k~h?LgJ&H84-4^$gPo2W;48mjgMU z`BdhJ+pg8(_7p#u6*4IN-I}6!5#R&?2Z#6!Mj0t^w?7}e6H3*akZ8L#rIPZX%Ws0=^PqHyJVw(p&FEY{J;Pe0P*tfS z&>v*fw-QZ+-J$|IhQ=+tVPQ7;OLFRsk8YEX?`TGvN5~fK=JAdnxl(Ku`!m&1Zq*n5 zwAcc+k0^Q`u6`U=di`m4EHk^idM{O2xv(NGN4C{$rm4ZJEBo8w@04p==nfzIrsR3F zN_8=h_Rhg$f-F#nAC_Y;&4gIkjX6ZTFpRjB*N63qor{8ahRifkenzQ*^c>HfCBLZZ zY>RtAA1?#5Gy{}Q5e6iM~yEIN_NZ-eR*hazjsS>Uc|Emp5d314~X(4K&Lf@@4n}RbhjSi zQ($Juc?-fgx6&plCJoUi(Go3GiJF|5UkB^VevXW6_=>{&Ym7^REKl`l*JUeNbehZP zcmv=p4CF}YQI(()b>*YP(wD^MByD_@&8S>^#9sA;eHFYxeyM&yU3l5+- zQ%%{Nq6RsW4L4`o<{gY+Q}k-Wg|!TYMZYLwVdLP5EW6$->DJKeqsHFjMUDu=&)fXp z1Ga&cxImWL;=PW(xN!@B2$5hf0irOmVm(Hth45;feZabTSnW~}0^Lo)7gKYFvJXvK zL^?_9*+zhA1Hbl*RtL~6{j8))cM;ZIj!7_u zU4IPl*wLoq@Oq*-&|e!&eT#a>rdN1V3@5z=3sCuC^!RfwBMXw@8BO&ig4ttORr;l4@Ik3QfEW&HcXwqpj zPdh*9k)DLV4gB5A5KjR2-Qrt<|J-x`d<_SRQ~UtPWCRopf=@n?3>Y}dw-=6)|;ky*9QaguiEEz!_MDd<~WlEDk?S}_Z zU;Add3{I*TgcXPY-p7HJdJ*jHPG{RUfdlt${dy%z(&8WGfCNogZ>4-(qYFQ8jUL`7 zi`Q-^f8jgBjR)q$p50rWW{RoR=kk9l?8%;WEct4z-L3WXXgDOKG{l-&O8l9Z9A1A> zosHAnUwFCOkAARh;J(mn&u7bzNbdX}9rNFTY8^}_<`XtxCDN9-SgjI$;`W4oK2NcC z6=-MnUKAJ`L+oWs@j_@+sR8E5%P;ZE+?0erKW`zKXQjim@idQBiMd&hLefo`V!D$= zcNwo->)aOV<>i%GZ?n<*+~V5Vv%goiMWXreD0yVS-|s6n(rbg;TodEO%3WG7Fo|Qn zn*+qFB{UGNLc8pLJ4er&o6>M+M`-s)#5Y3=mdVp}YnEXiITm@~;{^uW!?E0|*SsGO z20GVVER4n*PXO$iGed5_TNAR)nBx_>16Hp z^OAUL6}Mf0fi<1M*t?%NngPBS42H&$C+p|;&Nz@Cn4Fim=eTB-l(5J>?K+eKF?YSu z*u3L4H>W|Mtd{?F!|#!Ox7bRc@d}_t%LIa>$nJ#si_*o>k$lw^DXexE(a?v(jvOZ6 z3@qxD??}=?>2l%o_W{DD@)n0V!mJg58r88b2tKhgzXBeFsx(rIHjNiIspY`gybsbZ zaOXE1#s>o?X_yxG>VM*l5ExWAU5G~+F)6sy7$}Hek;g%+%oL;ZWD5Ghl-k}+P^4HR zLlW(7n%3^9Q=rDf-9p03mak|8H%x>n+b9tweaJ?V$JgdoLd51k?vpzT@uPEFcwV+G zjIFOD0Cc#gGVmtB1D7gHM{atxHscHlheDJ|)zzT~L4J!0CbK^SOfMy{2wC{>XWz=x z5jfC2*}+Z8Mra4r>+A{uaF@Xw>=A0SMA)T-;W-JOVoqJzF!lp#I}I2m}!k#+r{^}nJ*`Xr_jjGe) zV=PV!-I949k+-(?;=!R@%+zZ#YkL<|yYT)D<0nVV z#oACF{wy)ExFxb>}zGVvmyCcib{|Ve%E$2OGKVERcHW6zKU|DR{;v zkAC2cn!4d-e3fiJQA$!^92-u&o3>R6$1)j@Fs_6^?2AWF0MHucn5|P3ksH%!m`4rw zIT^X%vW%CPR#q}&SpQ^?!`18->WuNy3jX++2U|t1v;(x->Cch~t%l(-cq6nQl}DBU~g!7Ng(vSE2}0 z03njWHmdHLnq%I`Ke!xX`P$h7BOLl{1O*-;p$CpH;JBK9>T@R7Bo*hhWrzkEYJE9KAfi{%=Z zkD%q@e~N!)L+>xMtfGA4B3ct@5Z!$qj1ysB^ug$1ij{n(7{ab*e6kBKYakh?Ie{#s zP^)%`IdDrcCVs{evHRdF0|z?5)_RR<@8DpXBs^pE|KBC=;A8;*mSBp6!~{b~Pcs)i zsgVrOGM^`6>7z7tCBQB0x9tLRx=)MS(=&a!mleVUI!%~9LZ&){v`Ng_3NBx$o@AUN3yI`)ttEl#{4r zM-24OqG$()M<)FGU>>IX_is9Cs2FOZz-ukSF(DaR={Ka>{}&RyJZjMZE-a0;ReYj^WGL1mr0lm>2fi>XYR}^{|L3 zX+La}otb8SbFjHI>Y{{+)(1i^+|?UF}0<@?Mrkkit7Y0_XoTn1cH7XAX4vaHmky+9K^rVYDK zXp)?P7c5k}ZjkN%F%SJ_DP*P~g}nIVM*&3N3n?V;DyD>*?tK!6F9{Ji97z>_8D$xN zQHkTR5bNz1&{?v<{K79`1 zHVNOAcLGy1KSx!zKF9HP;34wpr4RQm^8s5zKBl4fIB+Z{kB^-D@ZJtMd^3L{JREQ^ zw7|Su;zqF)Q@rTgtFX$ASpTw*{WX;MH&XoR6iy&#yn@w)i2nt z)XNTJ@@H>e(pQ*B_q!P!6n<(KpHl=SRd?IeccH z@0}K4F3`v;u%8&r9DFko0o<2|(z+kUyZ_-lJ4XT?D#`p~`=B4|3TgmMNbmne(RgU} zO7I)I>{2B<^L-4(JT+1NG3F7sFMbGWLXULFI3y67;Ba6mPl0&#db`k z6VZ2{?!CgvJ$Y@ttU^USa{2Z|nb6Lt=$?mB%Z~^Ik!X=g<=W4>OG}oeY2o&60*5&G z0w;lp%zy`AcGQ#gxJWfM4vhESE!fti+hO@YD z7L;rABMJW*xB%y?0S)kO_25<BJ--bnG*teori?N5Sp;B>r*PJSp{2-YN2 z$^8Yt&IL~Uj3@152<@0rL$js)$49Sj4v4t}%0{&ZC>I6gA0f=Fdnr zcS*y@>1SpE*=qOT>;3df`u#+U>s>eLkHLW8p-^lmp0QWHOYL!HEU|zM-!1!YQ2&jb zW*hx>aeSvlm9= zY+0S~l7#8@?mo>{9OrnM7JY+;X}^*Qz+r(6k1EOe)qPivRVqvTRf7QkLrx4yk6j*@ z2Zr!LWl&wGg>MG3mm?yxgS_$YEFb!y6h&r2F3A-$@b6&_�*Z-i}Y4azmHi+E;h$ znTFN?^#g|*(Zo5^St36zYMT8dxdiBL1F`m~I2kdfF2ziuI@bCgL8#J$1g(*WNnqAc zB;Qh=??N!Oq{W|flp55&I5v42iCD-+vH1uru7G6VbjRwNZ1C#XPRZr<>z2l|t^0LX zXKP-rzqRoZm<6!PVHpo1Ku_gT<}6jrGXZ+}+MN}jNzMSLbp9?ildUOnjG z1lanj%T)%VLqdeA5lblHyBCB-MWxo27zKDH5)Iyd$z(FA?dAco>VmbfS32sz?Hm9U z7FYk&_#ZXqw1ke%QljG-q!)0O+g{rPTzSrlE!Q`ufSKvX0nLW2ygK25BwmKU=+oyv z%2H<4*NeSWP%!SYZrJ-WT``h2fPB0w@JN&=qz3?H3&}f!2`J@rq@n`@H`95OVGWbo z0*u`BevGe3ou;|E2T3jMF=fALDQoP-^Rg?8iL+G54H6Pr-}*g;g7yJea}WUmk-;70 za~e@U=asx`iBCN)VV<*K+X7|ym4CBUmbt^1hU3^9)(GoGv|`A3?T7?Y_&Nmv1t{bs zHc$#*lyDC2ZpZ)oZz7?!izBT&Wk0fq_&?1X%N)Op-#P29utWAPuUOR>t;NyOEUdZt zS(hXHZXKZK6Tioyo@Fj!$WDkDg?wU~8H+?Ld30QyzQ7^B?NeXcZ_~0bTTdh8lRK#UKEGQE)Rm7Nt?d)K zU)AO`%|k$q0dP5OZEX#{MV5Pd7U$)ulCcxzk2Jnf^WjN3owRyQTRG)=y&TjMK3!qd zy?E8%Ww81&e1<3BzTn5BZ@t^Aq5>Wqddj5DmnExAR&}mnOXzl&M>V7|1I3mFmliei z6jlvaYWmtJ7!M;+NY4VRNb-zY_N)BmT`^4TgBgD10x}=ed)=vZ*7QGXW&$xXt8QYs zz2Wt7yv`>fY0OZwm%d%`7w9UDk|}vZI`RYKaANo0hl5ERBSc90-!_$ zWA)n~;?N1%SKb(VnB!?O6AptcO93Yw9kiMBw_yB|*O0#PNsIC;z_!fG2yigyPM?{H zoc|)qqY+^R@W9=P+%abFd83U!`$ScVaB{0iasxK;E7elAxpKd>-^sy>Dw@bA=^rmMR(Mt8a`>UOR zf{GzJU>@bizo1ty0~{z-y=+8{*rK#@4}cz4epnmOPGd6CwFg$}LXlB{Z_o!TSLhoi zZ30bEV4m>j@0d_L1}Iz97^CQ+2s0psB(XlZ>&q5FBOT38FTCXuMgR0&lgC~vnFHO( zFd!@7l;iPrfsY4977afD3+$1mw=1XtS}YSYi*XFJlv4LgONh$W$c3Qsr^&HOk42i{ zlTh4#2=}rbVbSxxH-mQc7RiCQbrosPAB;ba8f)Ue@7v`OGPh|_Kd|tLQ_@IcG5 zyXxC+Zs)810%rlQzI<)CE&Tc}yQ4{(<9<}R{bqup+%y$|&3+nlrk(p|(ZM^uuS(Zb zuIn^h4BtlPen*}yuGK3R+l^=0s}LF&a9#?NU`R17!Du|n-}qe8SpH%7tho9+1u{zVC&% zxt{Nkh5-e=;aqL+`?G{XU-y*L2Di0d?bG@%^9_q)!VQMsIew(Sdf=4ycboiZWoS$D!ASwV4ONbO|Fs$>= zX0_;6t>z!!NTr51;&|^pxbKmtc{_emYyeTliYq~v*gJqO>CE^ecY1Hni02pOK$K>nmU} z2*^_A2Qo|cQ&Zt@aun?nrRmssHi9??gH)9teYuT#9+JWGfuQg1Us+XY+M+LmGE9W! z!kqM;`qlbU=nVuz0y^PmyUfO0aRSbg1GcQH)DmWkHUr8L=^Yua!hwjHaUX%U;m?+J zYcJzCEUek9=Oz1eZo@2LsSK{9uFUM$m_!I8gUw$go$%Mg>@DLMW%{N70yWrJzR(Z$YUQ1MAav(?% znVPEIiser2BNlq*7eO-ju-5ia_R)P`@q}xajzScRv>T+*Y_s#Y`vb+oe29)91Hud+ zdz9(k3~|aSWcRj$mPH~A<<6eV$18og3qOuwM$QP}@BM(L0^+8A=R?N9B}@r6%c3uT z!Q*H5X`$Q~82S-|>lGAalRk0AEGrQcMBjAUL|$L@yA1T_v!9PLD`36CGDLr08^s_% z$EI*LA+vq4H~_^ON#+Xu8`{BzPiD)T9)hkd@CpW4 zD&2;;b1|FCr3=s|@HhlUMu$}RdgVm5S{{F;$;)$*PwghMY9vRWbyC?Sf2^VK0SZFq z`cu!v+FZv_OzrGU{w*MH)V#e3?vciI|~VAOTn|u>5i*If=wDO;o}s z@B}##oA$Sn@5@!CTe82Yb0e3#4~El}QGS*M?1J$ESmL=)voO*xH%Cq#ogCz#>oIS0 zFDh@9J+qA~2GEO4gy)NPEd{xE6qsB;Bupovo=NEkb9LY8L9>r`z+ZTddb&uji<>r1 z>h;&9TqYYV@1V{;WauizeqZN`$9>UFn?e%l%JGI7EW2fS5>(TTne5tWTJ5+)YS`v| zimY9;J7t)a-qAC?#aCV%8!n;$ski=D`hna9=Dm7p9lwA6=gk9x0kWIaWPUN~YEiEM zGnrLtQ3Z(FITp;2QgVIGfVSIipexhYpRM#Op?lW=WvRd=}SpQ zh6sYK&*JqNOFFz`ljGBteocbLx65?1RX=SE&+MQN(;lJxgtk0e&>q~f$K^k9`!M1L zq@PLD#_vg-J-k-+!+{^);ucs~?0lQQzDTAP6v73}M^DYZRh2w@7~NBuRmH?ink}7T zi8j7$YHkePf9Pws&3O@;CUVg6y`X?$t$E- zepAP1bndp&A6yjPiU)L!b>87gzkmgxoBGG)9DoEi9e?^%4v+&(FwM=0g>ajdTO;c4Pm;-mr2+ib~I+zaO8DhvH}Igi6OO&o{Xy6pk>_NtSt=&_Ru-%>gUg@ z!>u-bm<9Rqw8yVMegAg)`Xc?1WK;F^;j*~x_W6QYQ_VGcZ*K+uEs92`mhB|34RbHN zct70_Z%o8+7)&iKiK&tkp4z>cd-c7+peM51d!OuHpZry^YJ*g=%V*WDw$5A>^I{DJ z%90DfWRf_2W_}OfD#ix|vs*Xn{{1&&)c^{&@Ig34r}lT+l#|eb2X?Jk|EXsF^(G7( z1j*?yZk*$~Pf_z6wtg#ty-p$;K!c;o$C|@eSMl4G;KD?2oiQ%^i}K4yCR~O2j<-5_ zL>CLp?q@S~6yrE?PLP9=2FPe&V(P!v$!j$GJmYkp-oZg>w^ijN?Vp`o2?W|+g}Hd8 zjO;W~c$#6KZ$~nFQ%)~5ik%m&u4CdyJ}62XJIYgs+c+2Ur` zfLBKq$K62t5;;`V8iR~%mB(pwFkt^%Yu?kIQu z*fvou@c>&$L$n9uZ&cv-@CQhUje~5H(SC36ySC-0z>i^K_~)vXsMPY7S8A@ zi9dj;?U5nNvkwEvAf~H$%uVubRR^1zl|(+#XXY~>SzKgkIiK(KdC2E>q_K1vLfpU@ zu9`~LcFS$fxZ!yu-|T(H+=*<2-;kyBteNA}u1S-%(ag-+kNI}rR$ojvyXTCJTimIv z`_>cR%KCR|euhQQ9i!I?!U@1ih}Jg=djLjB z-0_m89fD4w$#C}V9r<#~3k@Uz+UO`%3PG0B#CzJEk`GFxSMn+FpC7ys$3)K5{34@Q zmmwNrd@TPe`TjWb(cC(H?EO~)nZ9j+c(biTP%712`R0>uRUUFkS3kJNC>}y}rlH%DkTEpI5AGciAnS z9P$3W;Aze4>rm*t$!PY+_5hrJIcoe7=>A{2kUdmnn4@}SrV_`MNz=ihW*{!)%K~7K za%(s%JD>KtNw0P~#Ms_{>}}fTPLbXgcr$r90oX^YK^C(burDu!Yh`l>%W(z*l2q2B zf!uF;RTh9=2t6UHMFCe4Hibx}Y6+voUhxatSc3IV4LRyd8_E)+L zrPi|S9pau;^d;R&S6X%xH0q$nZzrvH_@&gTh3V`s3xE5reIW*zK7eI6Jg(25+Rhg3 zR?$nuv&$C8awK}qoY06v z{p(O>fiG=7wb^IV=8sstmH#F}cfI5PRU-a-4FYH>%>E`qYbzV!ra#Y|$Y{T#g=0g0 zM>a1|r5d0g-}Fh?)uS!0Ph1Jw?WC}fo{%Hf$!z=X6LESpI_B%#8V;TWhp8E{r9v8K z)zlOS*R7vqn79H)9TEj2T9#)X@CJQ*GC(3eGZ6b!T=>PB;YBTZc4-- zT280PlcnHk(2o3Y?SeZxi#Yjh$oGP}m2Ee3*>L?|0sMD4phYgjRWD;|YDO$=qy!*+XK1*#fANrYS|uQ0|}a)(h5YtS$O3N~?c&@04<@{R!2w|-5k^fNw^oL_>x zcOI7rFKOIjxeN?J@}0ksLWC&Rn~~qi90+{iF6IA2xS}dT#-*p8nb&gKAGCHlE>HtD zMhG7J3lxT{FFKLmnfFD*StS*?=5|?42)zw9WocI?-}bQ1x(E0QGxuljAfQ@_bZ~>DUL6 zf#L7V#GyNXTA15_Ji+oYX7df6>{Uo>{ka3BA{iO^B(xRiEU)b1N&W!znSQ{MgSV(? z*K~6|1Jv8;smYTtO@vMbJOBv`ux#9kfLO;3$Q4y~K7hkRY&Vmnh$c<9#Q| z^Xo=9Mz*=cx7&!9i(_@3mkt9O*`s4+x&&wjyvPV!Y2VDbinvI^^pKhDpLSz$Qb_Mh z1L!aFHG-#IV0I6B9C=@yj=MHYx%x@B-MCer&aFSQ$VzbE z?^pzvlt*K6e;qw`7pre*SZlaG)mBoqj-M*MjeoZ@l$6tWTv2)a&dJ}M`MaAF7gyOn zqu#8gB?b@xeYPrJji~;OZvyZFKpUhuRVWza;w7pk8m$vdtp*0ev??rNN6lEZ15n57&OMEve#K1D#sr_wb8^^FtL% zULSg?ukmxXsAG_FGp-LL$2`%$v-XzL)xdoC0YMSi>I5TX95AVq_*%DKQq%&s7#8Tf z4yw^+@gLu9<;L5@P^)=D|90CjCJO9p6@?_3f089t z4D^dAM)#qA)1M{u=XW=6pd)C(^2=HAGgu*lgs2t(Wp7lXmD0ZxSth06lAm>5@zJdAE^aejH~+{S9Mh$b}-#_71Z8Q5~WyANZZwl%0!E3&uLEZ(MjC-UW zd5|^zvGoAnw@V&Hj0QQ9O-@M7{3+nq9;ck7BKB!$BWNlFk1b;{T5{|BCEy-0OD*on zY2^_GJs<*{lSPrG`Btaifb}RnKUVPs0q&DGYS15HElyJB@=Q5%r^?an9UQsA*+%lE zbZo`%`B5l9{2kCI^8Na+@8);1$qc#i;f!I402sR5cg#Y7x=gNK@T1@pv6CYp!$i4n zy$qG_QL3~RO2vIv|5`k(^Qj7>;UJiT1xBu4FOvXYE`ii=35z7ED;j1Qqm!V`rV6s??3EQ5a+7y-OX(S}SMr;6b(rdn=Xc|LQ>w;vUc4*7hQ>eI=J zy@!MhOJTdb!edBd|LweH53p1PSXzL?7_urV*UhmJaY!0%p zDCs`h;r&uGVfOra^PKCf8#OJhkqr0ZpKpok#^I}bt#{$38gF$11Ku>9PR~Ylv2UC< z4kr0uK>ki}5Kd%qSk6eDAiF+x*;EoGp(bEKAd#d+B5x|v;7-#hIOJm=D}~kc#l?Ha zoSG|G1Zq&zovoaCJZb}@m$|bsH;qH)%NC%Y6DdtpY4ufJunMqi3;9d`TGZ4CmUIIw z1&|Hvq+ZKq)-Pd@H4AIzD1^Yhz8KKhB+C=sn8w4=kzX}CbT0A}%`(_M7A z-;tjUG@gFHm1k?>3PK11o@?a!qz{BV;o`wa>8G3b%#Cv4w$-|eA%J)D_A=gkzRcHJ z0BNM)0f_q`@7z4qiWXTja}fT#4Y8C~CjrEMERfWudU$ri?-fS_LOgbw)FiFGl5kM@ zL$(j&0SU=*;)?#y`N+Q`#V(F#s>$XzL)PlrN9h$1Zt|k-8yhN$Tm}=VI4y-3!OEI6`38n4LRn zKJ8+Cg#wi@OQ17d8pd!B6m1~Z>WYfK-9lX12Uqg3-a|)oeuLCr#-o3x^yeG;v(mym zoo=9`c?+SzKUKp&-vB*Zdb}`w*7mj0u4Zc?*8uM&c6_)Igsctmd~TNv>Uj_DbFaKD zdO7GJtrUmja{H+j2a(&Qw$-w@URMHFb8pDxv@_?lkv{Ly%!`SA>N4U*mUqtq;v8cb zGV(G#)U#cO8H6ShA6|KQB;%iKmw#rT(%V;e(YzkVy?&5aTKo)hyL#@7u<;i!KI0i?EjJ zF$44?zTT=*!i*9H!=V4ZS|4io(>7oC!brZ z&zOG_V|4Z8P!$Z*IYG0Y_m}vjE@V)t`R`kRf=wel!S+?t%=A&H2+#jq(6G7dq}jNwBJcPmxY z2EwbWIdUG>TsnBsGFfA@!ecv4)n2}x#@I<}Ggk0>FLieg5G_V@@@n4@6YJn5xSzJ9U znuUXm1^LgFiv>be>vXh_{SZpRj&igku1Vj{{TC={M+tY-$1WT@Av4uAlqL<>7=0pe>r2*bpg<;0?&@?14r&}j_e;fSoAXTF&1_@C z2YJff!$1XR_b1AZY8{H@&06pHJnp4U4T2F)^oH}jLs#y-_l$XA?G?>%;>`nuu3&RH zuEI-glawG#|9xn=EFkQmab>r>%Kvk1KZPQd&8AZa^_y?I0|)H*+-A{L?J)LzA?%5d z|A{=;%)}x<5E??lPvbgR%_zb>ki<{qr`x0x>LpV==sHE;@j>IthB~pAR<3R^QQr6R zdlinZ19fV_!|jViHML8U6{&-RDYMNvG8X&F(eahe`_5^0pVYs9pD@CLcy&@)Ppv$O zjF(E}Q+@xf)7*Ak?B7c|wG9mpom@gM-1^^T@?+H~gd*t?zBe04=H zIT(_8_60cG_GNS&j{90Mt#*C?{QR(s^v2q-zKCctrIkwa+?R#AUag$2434-K>ozhk zN|$p+h5OoS7QhqF)dXEAQF0|rfbs8V`wEt2;|kv!uU*rL;l_l z^b%PctFW)UzCq6M%b{j^Kr)j3Xvil+_(3~uZGA`1w`aN8sRZ@=KoZfTMJjb>-+ETy z!OxI;D$Ashb4>1Lg$Dn33+~)(!J}C?HST}*AFv~HaX_f%dla3d3ns3GkT(I2+A0HT zMcAL{XeE>NcuJDULXCvx;HX)hPL6~rC-1()LG@qIv9XKDgMIS8=fk;Prg$=Yz>cQt zU4m5YW{dXweHJ2UH(y1sZiXB%U)Ms9S{K}3E_iQ`9X(5(p#gn>dTz7Zm&CFg_B@V+ z`~UYN<${sXHt3(ry8J7S{0S>i66AIn)Z`OhqbALyYF%Qiu_SH>9+tH|57>c!sgZdX z*S3YFccUh{l^tv$=oN?u7K>UC7*P7A?&PV{$;bak*joq1wJq(#2_Xrt0TSE-1a}F8 z1Se<=cTWfw+}%BR@SwpR26u zV;~wEgwl<=Ri{J5s`J&saxqQqX(yK!#LxC@wmeJPEty6?8xcCwO{Q5ZX+a8o*3`vB zB_>+!F8sos&^wdfi*FYC-friwT??z%(tP`9}YHYJlHhiajXD^c?nmE|xz| zuaxvb z%JB>{b8{{W8Ym6q)BaQgA$gJ0B(f*5OGomP%yn<~Ycw?P){v3bFC9qS!6Ycsq;QOmhkb zT=c(8E5ifu9I7oAdEZ0-Itl;y!j1B9bChvSKScK04Y*3?D{V-qmDT6Zm@YjbdE?h} zbnF(nx}ws*u+`a2;g6_G=1L}y;;>3>sNPXisq;BHCa-I2gUthXt^IGqlmp5JZrvY= zskD<`m%Qt=T6?1-oXq1`Vg=8zI3Q;?Gu(TGq?Uvd)Ov&`gV&dP%qh^AGd=p-6=Z;r zfGb$p*dFb({2fww6h)EhiLEFJl>T@py)9Ib$Eg{&Y&&g`raA~G*ECGO-RN|SW6D)@ zGwN9wY9hWvdqCg2e*AQP{ zw~@gy^dwhwm*;hu>jF@;3K<$XCB3P6fsL7Hn%vsjT0QzJ?FAA(;>H1mWDX&OP}-f= z%=&zHBVSjit)IO-Q&AF+X~Z;~(n4s#L=9uAKp35mYK1ed%R^snxtL&`QRh`dCr;w*v-e}q+QeOrdj#z-Q53T zU;tani1OW7WZ?bhtueT~7gWj!b(hm~_~o$#s1|Pg(cini>J{l06?WwczHoEin{QsI zs;Qa5sl-2N`5n^#>EgU!)3AR&c~eUZ*BD3|)ObE5I1yV|0 zAU1hew`zfV(fbn-6LHhPBEqi0%!)4!|GQa*iIycwo z-?#Dxn*1h?cZ{#S@I2tmak|JlG%DZe=fIcKN{7SwI4EW`bmGOhZMw5BeL=~m!nGG} zI0WuE-s}%S4OETBHU=y|fcatl0SU^D{{8=UUZTi5>0Y3bNl%i3C!c6rAN2Vq*JCo} zb3A#Iz^Y5=zn{ONA6E@{6db&nrrqce@}c16#3j1psZ9`O>EIuL@adbCl#-u_vi&`YCu_b+)2L5ulki>tYvics4elFYJ4Ff-|z4F zK%-|fUFyXw#ZMq>9iLRYiz_CKl_gIzO;Bl_Ul+}aOA*cUU89m zF<+I%&n8>=^s#ZcxEH*5^y)0Eqil<99~?q7EGd_Op_vuXt<8`?!bM!uzTNsS!v}sO zpivg2Q6VV&&WY#UkIQe|#d*m~88&O6Qlj(egKzWY`owR5yn>8H0oqdNd~g;Lr|nx} z1HwP*$wn#6PSO*w-Klc)tc{L(i*k6R^&*|t06N8@>9ZnKD^dz%G5ZqZTBT+QCskE7 zGqOxAL_#3SiFR7WM&W;Z<*4un?!i&)XjWz&>;4f(6{*vTGAzP0AQ~SLP?bUoNPxtT zF*krsXYGi#%jcJ&bVMQy23x{a&;MBX1bWvj9CP@xRAr#>+e>`CuLh&vm+>QBCa_-D zhW+Bi>Tu6UJc^$O^QIp0UXLRzmae6r}_L7(MGgOi4Z>Glo@=V?)R9-#L+e;ME1+sEGUk|nGo)s}al+dKI zQa~AxcU<^5`zUvig;m(q30m_rGz@15hx2Sil1jV$PO;zMBkc>FW}MxlO;D6>*=@J2 zDMad$OUlozEM7=)l$?3Vr;^E0a)}{^ie7YPO6mmEbBkVTOU0oftS3>^)opTu_|?5h zduTh4{r|H9&-35htY{KkCY~{O?W{==4;CPa8NWi}k)z~J^0H>xr^VVv`>x6+gtPKfxgy_xV=g z*8>mA0{oR$4H8Wo^4<$fQvc_B#N~xC^Fb!~X$aZIo0R?XeP}#i%Apyrns2}*5ndpgF)U~?s7|a11 z_=2m4Gi{oRPj|sfZ%H$ceQmMO*u_+5Z0c9%6d=P%l;+>}gPFI)P>cQ2S}FT6dM?}F z56Ngp{!X{;OjlrBuIT@6!rq~Z;HNabMm_Gem8Oxd**Zz7cXcWx1*5f;9BJfl zD1WLFk}L}e_Tf9Zi8KK*KHmaK>l&a;PC`7~Us{=)hk}MDzXwV?r^Bmb|2K15#RJfR z4OE4v5a;3iF;}AN&%8WJ=_fAcR4Jlw+N$0FppU^j>S=w^3XdZt-#dxAsrR6k@WVas z(0JBYpW9K&*?fnZ*-LKS-AjU82>yzu-T|~x#@~fmrvTKYD1MSZ{gx_GoIl|(N5;b8 zm!$JSsWF>f!rL#@k&!_wV<=|x1~iRARCw7DzjM8-mtIGE)@X;<6F8&HE9wVC)wCIs z$a{YCmn>BO?_DAGZ4K(q5BNfbH2Km?hSf+&i4@yCXCLrdJn|W(i)_pQDZm1rz&J0_ zYGQ=@VaL=0^#&&MvN{W+hT3^5C0AJI9K+w>&t7T?fNv(iA^jyZuPj7AHCuLfU{?My z^%HnGgrqu1OpT4bjEP81Mh} z_rQvJ&rwri+f`4JGb)7R>BaHEGTn5xo|CrA{Xz6_pj1`GvS!#KYnhog8b7P_4<*_q ze~v|0`?HQ0GtLL)}Bc$uw^-Kwag^F6> zEy4ESl*EiIK6A6Sn^W^m{c(JKt~$lRw^~VOjDN4|e}js$Fp#A6o92`L@DqL3KZ)NR z=dBHde$iE&{E5z2F)CficJdydzN~+9y_T`N3Mvu>(R`Q{vEC)K4%&_K`CqQCB?-oXne^96>n+(_Z1ug z3azk#?t^z==mXzIVM9It77a9>C8oUJ7KTCg5cJ_-zPV}ZVbTK=p8@A0rh0KPpL4p? z=4dZ*-M^S2?&sd`>9+HR67_NRC?{Ukls(i!c@RM+Kpeb8$iDndBaV_?$HBD{bxTa{FjW1*Wc80vF6C1|vs!i5Iu`NR z8!MZ%Y<4KSM|Ro+Vgw~hjuzkCiQrN}7i0cfCL)gRPmj!id`vVBh22D~PNk%eJN`a7 z#Uy?Ct$3;!l2s#QvVh&W&S|^u-xy}Z>^JXOMfl0R;B7|Eq-WnL;_TB|UB4FKKoXZtLReiXY7x z+zh_ zu}aXYn9i1-w_5qU>_e$xez1!Nn64{=g{ zR|&3@Q{+AxTH!ni2&@0iDg5h0ob08GIWc3evM-TggtXdi@1)wYY7;Ud`iEns8i5Iq zrEvI@%k<-R3fH}2P77^Ri+Hi$6et=l+cs+0J<~Eu;IFoQ!>GY;3;>xwOAF*k>h#;r z!#_+PfA~yD6ZHh56%=|Dq#_@?-uW6O8i#4JLYfV`Uw=VDB*_$*1YRCBLk%-&j>@@o zra4$DeKE(}hfcQXDC8$+x1Ug*n#|)?x|*Yk`=m=Vu<1~Fdri`;pM~W&iZ-mY zQL*K@6)&f$EG?%xnyP$ec`t|gCRukdrpS6pv~u zIuxI=XxA{C<2GJKqw4Jc1EneNB3A@lk}iJku+!ks+)83qaGxcz8TE>?v|=pBT3*1? zem2%eqCjPw7F>x!SsB7&RtYo}N$U9E2wo88cFOs;hVasW7|5fE%ZK1B^S-G z9R)%BZ%H0g5yjB=fm)XFM@`4JT8EMu#K?8$WAla!<#2JUhW)dXek+MBgx_YkOGDrk zx?|jjf1lDX;lIm1Q`C%+e;~cqC>%427bl{QyyM47vCw*FIco|~Ec@qmj8e3LeWQ^L zOV2vhb_L1hcs!7GUE@5H4qUAJ_@8fEi2TzZWvYRs^z+w=tjXC;O zAyBcY$`|pi{Y#ZWVUKpdxl*kRzj@UQvf~%4uO^iKVNL%vs}WLU?m`&pevwAVAC%1+ zE{d}WdhzRFs1RS@fZxY439LsW@>9m;LJlY8P3}hAuaZq#Y)x-}iqO&hgS1x;MRxL7 z5nxof_}CAj<;`SVMaO5y{ za=HlBp0|$w5E-6-@uUg zf*0)wLjMe8>L~9AEq(L!V=g%Bh=^T0NZOgDtl{hNlG^A$X8}x!E_i~es3~2 zlXpiT1y`hyL#LL*tnp)%?#PzzK?|?NHJ^~rz9NsH%;7ZTef0PGqr6vL1&pl9lgU*1%uZ@$^~~P#b~l&Zj8xfe{`W#8MtDP0(?w zS;YM6`s%4ps8d~#X`%xsM>FWzCA5IBI%Fl z>5+}eQ?m*bY%*xOpc0VAb!1%omJ$L$DJt(Gs)@_g4kk^ZMJ3Y5-S5T3Ji0@1Gzb3U zw|+#nqO&#XkcR_h0m|Os+KD9h39s<&sk80kEh71B_kgEof9A>Neh_X#QlCTP>eVh$QjQ!^GM3;p zEmL^wW5L>sazWwGtXf;)8;8P|!I3{y1Ow@R*N&`y*8m)^f1QfUFSYx_#oZ*x6oC-> z0~sgt64}nr$hbX6Wze~6fT*8CPl1f~pg1o6y})0N_dALaCS0I-JV2&8=Cot^*544g znvhu|-z#cZDAIqY=O;Q4Q?`#{d)fn~cqDB7>J_dVK_3l5-_L#BjSu|U^(uVCB*hl+ zrwA9btYZGi--#C@@8uco+BZ9qa{H6B&6T*dIg2&GH`VVnp%_uM`n(ZK*ofrvJ82zQ z-virbxtcI2G+Asq3L1q|<6%rHLI1;(?+oBDd9LjKhY!2`}5S^RlRikts|(FOBQ&_r62MIx@S9lf0KMK zWL7(FIxLZ{qybrn)(DXXb1ov9MR+SshlpcK2t`2pG!NXC(RDcur6M^${P@_xOi{V4p{>P#jx5Gaem#$-^NVxw#lus4Cgc@AsrD4d0o! z1ARt0xI3W2;+G~dMKrnrTtE91$dV3|c8*v)|pmChB!`iFo zMq;{3hNLhTp(qx=UjHtR6CA8lLCi06mie6Hn`*7^&1hF)-WLm|Hy$>T(f_e6ZZ>bC z>Ky!>{e{{^w=HqU#M;|D5%z(Embx#k@iYGHK)+l|@JY+f$-oezA3b~`m>8vB?OgqILtN)+ zf&09EYk_!(Xb0Ys$MMA|O>R$#8Y*Ty@7s00q82FDmBWwW&=|RJ9D|&9b5dvjjo#iS zl&!QvY5f&`m$Yt-nZo8nI9PUbpB4d*&p8BR(326!)8I`F zP0b;}yRCf_SfcR;E?Hgz=~ z-M~$NR%#PKsD8lI1cbE-j^FjTy5o;__|6Y!z_;HU+*K}BnP_EM&@G-L3!AD^T@<}j zNx0t0wV;lQe=v=*T=kr?c->sU!o4Ef@TaX_g{>=XuHgeMgg-NKoXVd#BI6m7dWRdH z3*Mo6HAq%zHbu=8p~%FrD@z#L)%6-qq{X-AQ&F@pbLs5SEvH0mYk>ZIGUQ$EC2#hD z-8II|QH{k$80M!KqhnsfubJfO$+)a5LVc>!GTa7|8PyX~vis5Jf`lK(bb{z`<*##jk!G1y|1C?4!toMCJR{B?I9On{ zuF2vLi8Yw5_lPtPxb5%W6I&ea?s8!ZUqpe=rmDeqE?nHm#7*w3R$$r`W~nNO@S@up zlP=_?xs??c#bxi)!AVu^IH*+b;;Wj))2Z6KX6HURl^^xN21Z?;!*lyTg*v@DEP^zM z=E})`C(wqt0GCrfSNZEphnJ}qNP2zY%j%b)E!LUU%P{ZlOiqyLyF=T};U54Pn629( zdLQilT;62KQ>&+rA$CMLPPGTudzr5F%!eN7NvODQRva_Uqhcplrmni&NHT#H%-WA{ zJ(}H95+hvOzY3Q3t!c0*y}#bc`0a-N^Ql(wVo#Tshm*#4Zz*X5xzE}=kiwOQOh@I! z*!qC{TvTpZE6sCv&Z~kw-Ce0g7sT)imASUi7a=2-K~+0@NsAi8-I||}`KsBCgQq(M zLt2_g{XEs5JEW{AP_RFqJ|ccc+0G*+NE6m^ZER&_MJm^JErkWvQdYMxdy6zbaG|iF zrDO*locI@KbP}ZJ&ck#dKKxx2kQ=gYOpPIY7H_7*#r=@9#Po`M38szbL+#-4jF``2CL?hX5)x=#4bV2sk- z<*n_zXlZSM{xCAv>gCtVDcj{b4{=w%u{5u}*n{nN9pHYckKCgPq}%P! zi_|v)NaBAmm6E!7T%1^^=(4lTz`th5R|#&8l}I}zn=;qNPsMK$s~Hi|^RDpwM26Pz z@B#kkN5k!I{W(>n`6S*bmF2OztLrfZ<)X*u8mdG?WkB5*6RlVB@gdG56Kk6oNC{#)!>tp8?9XR#^180fPxpC&@N?dktBI{wy=@W6xnjdg z%W56Au-nRY)L#EWB4-F-*JI#C(d1g~N5x|GF- zNhXqq2Nvq$`K#g4=6TWKrg5~T1)v18qN-@fgGq(o-jz}A0k#@&0q!vBmV@T#vv&M+ zWsK!v&+Cc2p%^7Xsqa^PN(Y>5E~BA?>CK1*lbwlIaV%?H^EezpKz2;_yz8G1*|=}8 z@`wSi$A5ZEoo!#k<~pstn{^BLYyMv=?&ZX{%) zvI?>>gq?JM>zEF&xIA}kHdUFg8@#z*yd^6g8QAw@-z^ontrhT&g%0ngIu>)0Ioxff z9$wMd7L#QKkyyaH*lu-!i|Sz)8}rvzZtz76&&%@?$J=GfL({d&?K?SJIsDgxLt)$F za7VdY@Whq1*UjtOy!%rM1w?LoQlLk3_0olt4WPVoElmPBk7XQs*sKt3h*LBhj_@KL zW+oj9`lY5{Svg|VKXGQgTOqpd`-(Q$00!Z{ZiaHEa+%gZKOS8TazPRi_g#UuoA#iG z)3bNZcJ$kr)jnaES^Ucg9?1b3>U)|qDPlX zx_74V%BN@@M=)E6RPr9hkmlma^+q>ILW6c=sm*Z96;mmXwl*JDy#w6Q=2MCgcf`2}YqDArsn(y82aZz`&i}T*DCbQ?3((^XG4y zot=7yKhEBEhg|8Zz3OSmEHC@|M)3gT-Cvx2Q zBr9LvY)L!*D7_!xbDQk7a6K~B9E=Eb{GoKW-qT2a-dDlfX3;Ns~vcPP0J+ zc#h)Pn|q7Rw?c@i>#JFadz*a4^3S}PyRXfuRp=BV7j2OnCFM7V3!4zPb9l5F->WLS zd8U=o9tu83x0?^am)}ai2a9I?mX3^S)_Ly+CM!QFN$mmO6mU{D>MvY{1b2#&ANJd* z_Ge(G?LVI|@o&NJU7OA!P8Z-!D-mQ+l`N3IpeLVBB7|C7BdbkcVTl1@88EOYyZMuygoT9r({7qqO(@F zXZ@SF_U1-T3EZuMkjg8 z^2}e~HZmUwor%s%HwCy-JwjI=tH?EVv$-KM z53lvSPD+`sQ1ZO8Vx*@1W_;4*uwa*^-gITc)#q|U?95@eVM8K(GH`!WokCP)R~cp^YZl5IHWhDrXq;TdEQ~~+U7IF5H*yj z;?nK_ov*X$iM4abPaL44|)YcEHG5 zJlG90#JS_Lr1>gLV}MjL%gg-vm5QaiSWj5pjraPuTO@c9ruWst;XNgNuit)}(Dhe_ zRXHkS)a&cuNKe}S2=~Ytfy(=1k$crs=K=!C=G%ME&@(%}3o})1_fOuc5_P8tge0o& z^_*(*O9#b9+jggMlO|#65~vkq6XLl{@ojo(@van-*m5<|(`5LoWcM5IuP7f=a(EQ5Nq>#K4P2)AlY?*|a0K z?H5JMr9Hxl{wJsVs>K$9wN{Z8mZ$8PlPh^{=DrWeLG$30TnVQ^y|L19mq9%-fA0w) zm6UiZ`XXr=Iuvk%U*jCO@dUwg#)Wt#@wNGi9p?ZfN!f@wi#gRmdq!RKLWjjU2dgVg zcKw6Ogr@9aYFEUszXd}(kq;oWB8!bL?LBi-WUq?S>_SGf4|{d139*haYJL_n?ZEeE z>W3O+Xmq61#!ShqI_j7K^7-!5&bA}?8BP+F4r3mhjs*_D zF#>bfxR9OpbPJ!{M+KVqH`))xGsK#+)GFo7wEL7*pWbeLAlRj_!J2mIU4L8tPWVj0 z%k@GzK)F;}gB>k=TbZIeA$eI?Ez%;7^LIr?lm*A^^NV-N7=AYC_csYog4GChTgoUG zB8wjkyjV#FhQ;`9>?G#Z&#Krt_K;CNvE6+ZzQ@+srXS0kGbWm3rzQu zKKh}WeQfC-(F?oP@MZSc$B$p>iwo@A9ya;ald^Z(Qnajg{LX<#1DHzc+HdA|J-g5< zSos!j4-i=vi22I4`MV#g8)Id-%c>ymLyDGbvMJx$9QKT=_2;`st*Eae5vPg1fmrHF zzLh^gmyTzX37ys`IMO=KzaoQ`4|YK1T9!RC$$4oWb15R}mQ<2oYkg|t@|E7?Iy|BZ zF&$3PUrdrwzD%~d!L;2tjWK}(w3$U9mI$wmXyDB05A)YQ4=(~$B}`Q#zD6e6co1-v z2#TRN+S#db%=EtLbG~c1yOP|1+}|{vABsntoqQfR25^5Hd(PS_#zWXA)$kV+cLxpJ zrCKp;uG=i&>_XM1&Ql?%)!ku23!X(5%SngWs&SO7e(zu9#0;plu{FI21i&788ZEc6$I zVKF~nKOdK-5K(EF`{G{O5W1l}%`QIepZYzl*SbV@4$QN#2Zt8@0gqnYNliTnw- zM|#_IxTx2lFQ8srHH z@DEOI0kPYDlfA6L3-_L>zsmRC8SZS+9=e&05fsSt(k@Q14e!)R6FSYDQ>Rp4yvnjd6#@5jWSyi?Q;_Y5q#< zL%vA0^BGx-eYE&3@*AR%dz<9dP=v+uNO4#uztVm9N7G5kKX{dlZ^#GrwoL*jGv!(V zN;BYYUk54|tw#9a-NG(9GN0+!pmEoO7dU3o=Rzu-_(Tve2GpYE1@`;lhN*5$L^6pg zGevBRoaXRuUAZB?qco-CE|ZRBla2eUx6(2rZklyVuXooASn#f>Rs`HGf|7X5yEBY_ z6QiinGeJ><^fM$?;z<;5Ehs?63yz+S2U{rhDNd}lqs`#`sp_c@b4ppSE3qvix6s7* zYL4%&vk*58$GPiMa*HqZQ?6I)cQ-a05#<)pslcbGTUxIdnR;XlH`9gFSBEcoO$HOW z8!+E~D84GHvq?(gFuckzq}p*yBG7yNZ~;hy(K-!$9fEAO_E|uDPjiN@m6?rL(+Cq_ zWivPhL|LihGjNVlug_yWoiD4XP$4x zKp{cot5wVGq`*V6u*HjR-N?p1Fn8wkqB}hK2_V(nE@?WSyO3@o@(y?jAodPk3)@dc ziS)0{*vmSML=3McV9zx`q(!{ElGj|UG&^?5j|Wshu2Y6~d;x#rNU=ZgD3pkx)H!gtMe-4feQyS9-i?8g55|+j6_hWA@>F~uL6?f6O3z)pG zW2H+LUydiQ(s`S>cal^J!icq9T#a;n7Gorfq{;vF;2;9T{n1ctR@L%%o5+7CPBT&@ zkSpbT{h!UxvPAq%i$>szubi*Wmy=8Z@u>;;?78Y!{aCAeZYTil$JW#>e=IaO&=hkQ3i_bloo zT@mWEl4zK1WIu3%Re%%xUNE0E2VW2O_#m|*#O1x6biRZUR)T6%)3?Y7^oG^-O`X=6 z&_A>6?}ogi;uzgye>&<&!1^o5kM zy0(FiFYv+PN~t30uDaoTLD@JPAj>Qx?K1L#6r8BVu7w5!E%|rr2(~6;`)6~peh8~M zZorGSZuW?PnG$;Dc-RKk)1hk1d^t7Pa6Z;5df0G@Ci|jhMKq1H#xaz%^7f}{liNe> z!%Nt_hc+KnH)+Np7D;VD_osx{%9WV)&dLwM&GRe2`XKDfw%1|bXU?(e;n0C87y5D>K|ONx zTNH6YXPJifnks~CPd}x-6>Uh|;laH!E#Yoe=C|&M-5@%7F|p{8PE71i7#dV%BsfE} zfs2eUe6(G*%J9TGD5NhlMK9+rR&rd{K$_2n_H8b@9_KLW!PB`z@{ z6N27@OT@a}AA6H7cO)ie`x5hYmd7sA+o3PS%(TGgP>;W&!D86-yCP=$hN2P#9e(aj z=!4y(68_3Bg8+f;y5bld!zW5)TcAJgvG=qZiSVOi=+?~6j)x$7Zzc6@6+SQM?RW6% zrw%efxa!1pyAPdUDv=~)I`JH|8R}`d{>-5@Bt{C zBbVK?t-T<)b39g`f4r5+ZZS(MtkUE*m1Ov8Yv#YasQ80p((@ZQn_8*jBPtQNoV3hP zo%>ngJ>LCux5z{+D}y+lHGh6IrH{H-VRHyls(KOI` zsLwPo<#eN_x|#qj@0+g55~jhg@jQsyq30^sx=Qg?*s+9iC>kN05iwW^ks!b2BmlZH zgrSO#uxi-NE?;xpx5yp(&_ExB*TjhDrjR)o{!w};@4~(4>1H!_(>Gz#N<^GfzMk&f zi}5_D4Bn&=pL@?FFK#{$lCSBmd9fW(;y0r8dJqsCQ=H7_Do(Ls8i?|kip+EPNX(xd z%aEOb%_=i4Q%zyWitSOTxB~#G7R?pDZQLK~NP zKKAlMHfPx-)EkZc+Uo)$+K^+F>;#uM)-y*eA49?SM<{#f$$p|%KyxnoIjRNaX;4GA z_~&_t8Oj=H`DB0;x;(SA?@&EGztP`vMFugi;49`(kCV!*NHGRyUEP;y@uuXR+On{^ zRan&+GpT5mssb+Ax}!m=pyyGCll_++cMix<7n)qd1!2xeu8;%u%K^A^xglm3LLRUX z18~X-#MI7kK?G3pmcKT7k`L6`!hB%{@lNBAYUgK`@qjC+|F&&A^xW~Gd;rk!pFyv8|}>XC!~T`b*{V=|TPOODWV$h zFpQ}|G`{A-h9jiW`V8Dg&ooR;9F!h48-7kk`55{jCL_~4&O9f!Pl=8@iCvzHa)=|5 z^i=(O86+Xi!YNduH9-VbKI!>{!ma}6$J`N{Up+vr;%D&Bk=yUCJ`&YbK69*p3ZayN z7+Ea6H^N2UqhF4n$xvC+DP7e?0pSt0A#&y#Rh&@+eKXy5Ew{>=Y3~XhAgo&kV@1b9 zLQjCMyZ&L%IyIV#rAS-ustcpK{`mDez8O=`cEW39gEPV}d~!|WxjBpC>1gFfKRonl z>naVEn4PlOUg3Mc#b44`uMOo;T(nR2Y&0ushXo2mCZE*~a_E1hA6f*CQ2$*N(!+vL!{2ofLs(k$<(jFoV zFZx`)uT{`?B*vU#{zmvE${gBBZ`ty8-mPut=gR!*t85lWk9vyxi;_1h;A(T-FH?=D zgtkK$<`_P2zWNb}c$`=227$OY4n^kE*+@8)yYo}Z*_*UVDQ>r(0#j77LSU+OCJVPr zzl8m)?DZ{T#{9s1nwuA^c$;4jXS0)S6KVihLs&n(SuOu<~M!1VMMJwfGigCLhCvwXj4mj+@-U% zA@$HZ1~oQYR@aeqaW}$iTIPwpdrv>a_xf$TtE8LfLBhPbTer}|wx56E6W~}E$Ug8E z{qAVh`HD%!!I%)zH4s)8DoiZ~O2>4%nBBcDcvZ9P-h?MrCz^gKVc%?5-N-`DSQkI= zf{_H>?mJ-*CA&gBmiQ&_n8THh)0jLk2HZ2anY6vr#B^F_^9{>{zYX>Ippv{X^ z3FKj(G!u+W!X33@&Leqm27V(z_H5-MMaBEyGaVK2Ad|xrF=W;MQm6KSoM}uT?s_m8 z@Z{^lwa`s#iPu4sA-6erkes8fb*u

Gk2_n(&WLg(^QpE@K>jIKwxH`~CF-IBn+7 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

xGS%jzTJVt_ky8BDmxXwY3S}?p>tnp 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