From ca03fbcbea11e861c7acbf6f64bc2e19bba5a009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9n=C3=A9lope=20Gittos?= Date: Mon, 30 Jun 2025 16:34:00 +0200 Subject: [PATCH 1/9] Announce skolar launch for the scikit-learn community --- _posts/2025-30-06-probabl-skolar.md | 141 ++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 _posts/2025-30-06-probabl-skolar.md diff --git a/_posts/2025-30-06-probabl-skolar.md b/_posts/2025-30-06-probabl-skolar.md new file mode 100644 index 0000000..0ebf4e2 --- /dev/null +++ b/_posts/2025-30-06-probabl-skolar.md @@ -0,0 +1,141 @@ +--- +#### Blog Post Template #### + +#### Post Information #### +title: "Changes and development of scikit-learn's developer API" +date: December 12, 2024 + +#### Post Category and Tags #### +# Format in titlecase without dashes (Ex. "Open Source" instead of "open-source") +categories: + - Updates +tags: + - Open Source + - Machine Learning + - License + +#### Featured Image #### +featured-image: BSD_watermark.svg + +#### Author Info #### +# Can accomodate multiple authors +# Add SQUARE Author Image to /assets/images/author_images/ folder +postauthors: + - name: Adrin Jalali + website: https://adrin.info/ + image: adrin-jalali.jpeg +--- +
+ + {% include postauthor.html %} +
+ +Historically, scikit-learn's API has been divided into public and private. Public API is +intended to be used by users, and private API is used internally in scikit-learn to +develop new features and estimators. However, many of those functionalities have become +essential to develop scikit-learn estimators by third parties who develop them outside +the scikit-learn codebase. + +When it comes to our public API, we have very strict and high standards on backward +compatibility. The rule of thumb is that no change should cause a change in users' +code unless we warn about it for two release cycles, which means we give users a year +time to update their code. + +On the other hand, we have no such guarantees or constraints on our private API. This +brings an issue to third party developers who would like to use methods used by +scikit-learn developers to develop their estimators. Constantly changing private API +without prior warning brings certain challenges to third party developers which is not +ideal. + +As a result, we've been working on creating a developer API which would sit somewhere +between our public and private API in terms of backward compatibility. That means we +intend to try to keep that API stable, and if needed, introduce changes with one release +cycle warning. + +In the past few releases, we've slowly introduced more functionalities under this +umbrella. `__sklearn_clone__` and `__sklearn_is_fitted__` are two examples. + +In the 1.6 release, we focused on the testing infrastructure and estimator tag system. +Estimator tags used to be private, and we were not sure about their design. In the 1.6 +release, new tags are introduced and using them looks like the following: + +```python +from sklearn.base import BaseEstimator, ClassifierMixin + +class MyEstimator(ClassifierMixin, BaseEstimator): + + ... + + def __sklearn_tags__(self): + tags = super().__sklearn_tags__() + # modify tags here + tags.non_deterministic = True + return tags +``` + +The new tags mostly follow the same structure as the old tags, but there are certain +changes to them. The main change is that the old `_xfail_checks` is no longer present +in the new tags. That tag was used to tell the common testing tools about the tests +which are known to fail and are to be skipped. That information is now directly passed +to the test functionalities. The old way of skipping a test was the following: + +```python +from sklearn.base import BaseEstimator, ClassifierMixin + +class MyEstimator(ClassifierMixin, BaseEstimator): + + ... + + def _more_tags(self): + return { + "_xfail_checks": { + "check_to_skip_name": "this check is known to fail", + ... + } + } +``` + +And then when calling `check_estimator` or using `parametrize_with_checks` with `pytest` +would automatically ignore those tests for the estimator. + +Instead, in this release, you pass that information directly to those methods: + +```python +from sklearn.utils.estimator_checks import check_estimator, parametrize_with_checks + +CHECKS_EXPECTED_TO_FAIL = { + "check_to_skip_name": "this check is known to fail", + ... +} + +# Using check_estimator +def test_with_check_estimator(): + check_estimator(MyEstimator(), expected_failed_checks=CHECKS_EXPECTED_TO_FAIL) + +# Using parametrize_with_checks +@parametrize_with_checks( + [MyEstimator()], + expected_failed_checks=lambda est: CHECKS_EXPECTED_TO_FAIL +) +def test_with_parametrize_with_checks(estimator, check): + check(estimator) +``` + +While working on the testing infrastructure, we have also been working on improving our +tests and that means in this release we had a particularly high number of changes in +their names and what they do. The changes will make it easier for developers to fix +issues with their estimators. Note that you can now pass `legacy=False` to both +`check_estimator` and `parametrize_with_checks` to include only strictly API related +tests. + +The above changes mean developers need to update their estimators and depending on +what they use, write scikit-learn version specific code to handle supporting multiple +scikit-learn versions. To make that process easier, we've worked on a package called +[`sklearn_compat`](https://github.com/sklearn-compat/sklearn-compat/). You can either +depend on it as a package dependency, or vendor a single file inside your project. At +the moment this project is in its infancy and might change in the future. But hopefully +it helps developers out there. + +If you think there are missing functionalities in the developer API, please let us know +and give us feedback on our [issue tracker]( +https://github.com/scikit-learn/scikit-learn/issues). From c24fecf44386dc77991f2a3eed4c5e9e6fed06e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9n=C3=A9lope=20Gittos?= Date: Mon, 30 Jun 2025 17:15:53 +0200 Subject: [PATCH 2/9] Push the right content --- _posts/2025-30-06-probabl-skolar.md | 122 ++++------------------------ 1 file changed, 14 insertions(+), 108 deletions(-) diff --git a/_posts/2025-30-06-probabl-skolar.md b/_posts/2025-30-06-probabl-skolar.md index 0ebf4e2..4a116b1 100644 --- a/_posts/2025-30-06-probabl-skolar.md +++ b/_posts/2025-30-06-probabl-skolar.md @@ -2,8 +2,8 @@ #### Blog Post Template #### #### Post Information #### -title: "Changes and development of scikit-learn's developer API" -date: December 12, 2024 +title: "Skolar: an open-source initiative to democratize open data science" +date: June 30, 2025 #### Post Category and Tags #### # Format in titlecase without dashes (Ex. "Open Source" instead of "open-source") @@ -12,7 +12,6 @@ categories: tags: - Open Source - Machine Learning - - License #### Featured Image #### featured-image: BSD_watermark.svg @@ -21,121 +20,28 @@ featured-image: BSD_watermark.svg # Can accomodate multiple authors # Add SQUARE Author Image to /assets/images/author_images/ folder postauthors: - - name: Adrin Jalali - website: https://adrin.info/ - image: adrin-jalali.jpeg + - name: Pénélope Gittos + website: https://www.linkedin.com/in/gittospenelope-data-analyst-growth-bilingual/ ---
{% include postauthor.html %}
+https://skolar.probabl.ai/ -Historically, scikit-learn's API has been divided into public and private. Public API is -intended to be used by users, and private API is used internally in scikit-learn to -develop new features and estimators. However, many of those functionalities have become -essential to develop scikit-learn estimators by third parties who develop them outside -the scikit-learn codebase. +The scikit-learn project always puts efforts on education to build and nurture a strong vibrant open-source community. The goal is straightforward: give everyone, everywhere, the tools they need to easily grasp, engage with, and meaningfully contribute to data science using open-source software. This mission is shared and actively supported by Probabl, a company that helps maintain scikit-learn by employing many of its core contributors and investing in its long-term sustainability. With their support and a deep commitment from the community, we continue building bridges between research, software, and education. -When it comes to our public API, we have very strict and high standards on backward -compatibility. The rule of thumb is that no change should cause a change in users' -code unless we warn about it for two release cycles, which means we give users a year -time to update their code. +When the [Inria scikit-learn MOOC](https://inria.github.io/scikit-learn-mooc/)(Massive Open Online Course) first went live, our community got a front-row seat to the amazing impact of practical, accessible and open learning. More than 40,000 people worldwide have jumped into these courses, clearly highlighting the demand for organized, hands-on resources that blend theory with real-world practice. -On the other hand, we have no such guarantees or constraints on our private API. This -brings an issue to third party developers who would like to use methods used by -scikit-learn developers to develop their estimators. Constantly changing private API -without prior warning brings certain challenges to third party developers which is not -ideal. +Today, [Probabl](https://probabl.ai/) is excited to introduce Skolar, a new, fully open-source educational initiative, built directly from your feedback and all the lessons we've learned along the way. Developed by the maintainers and core developers of scikit-learn, Skolar is designed specifically for data science practitioners, offering hands-on, high-quality learning resources grounded in real-world applications and open-source values. -As a result, we've been working on creating a developer API which would sit somewhere -between our public and private API in terms of backward compatibility. That means we -intend to try to keep that API stable, and if needed, introduce changes with one release -cycle warning. +Skolar exists to boost our shared values: openness, teamwork, and practicality. It offers clear, interactive tutorials and structured courses carefully designed to match industry challenges and specialized use-cases. But even more importantly, it captures the true spirit of open source: encouraging collaboration, peer-to-peer learning, and guidance from experts. -In the past few releases, we've slowly introduced more functionalities under this -umbrella. `__sklearn_clone__` and `__sklearn_is_fitted__` are two examples. +Right now, we’re just at the beginning. Today, you can dive into our Scikit-learn Associate Practitioner online course, adapted from the popular Inria MOOC but enhanced with new material on unsupervised learning, especially clustering. -In the 1.6 release, we focused on the testing infrastructure and estimator tag system. -Estimator tags used to be private, and we were not sure about their design. In the 1.6 -release, new tags are introduced and using them looks like the following: +The next stages, professional and expert levels, will launch soon. We’ll also add more courses covering other open-source libraries such as skrub (for data wrangling), hazardous (for survival analysis), and fairlearn (for fairness). Additionally, our scikit-learn team is planning to create industry-specific modules tackling real-world needs in fields like healthcare, finance, medicine, and beyond. -```python -from sklearn.base import BaseEstimator, ClassifierMixin +At its core, Skolar is about empowering people through education, driven entirely by our passion for openness and collaboration. We firmly believe that true open data science begins with community-built learning resources. +We warmly welcome you, whether you're a contributor, learner, teacher, or just someone curious, to join us. Help shape Skolar’s future and support open-source education in data science. -class MyEstimator(ClassifierMixin, BaseEstimator): - - ... - - def __sklearn_tags__(self): - tags = super().__sklearn_tags__() - # modify tags here - tags.non_deterministic = True - return tags -``` - -The new tags mostly follow the same structure as the old tags, but there are certain -changes to them. The main change is that the old `_xfail_checks` is no longer present -in the new tags. That tag was used to tell the common testing tools about the tests -which are known to fail and are to be skipped. That information is now directly passed -to the test functionalities. The old way of skipping a test was the following: - -```python -from sklearn.base import BaseEstimator, ClassifierMixin - -class MyEstimator(ClassifierMixin, BaseEstimator): - - ... - - def _more_tags(self): - return { - "_xfail_checks": { - "check_to_skip_name": "this check is known to fail", - ... - } - } -``` - -And then when calling `check_estimator` or using `parametrize_with_checks` with `pytest` -would automatically ignore those tests for the estimator. - -Instead, in this release, you pass that information directly to those methods: - -```python -from sklearn.utils.estimator_checks import check_estimator, parametrize_with_checks - -CHECKS_EXPECTED_TO_FAIL = { - "check_to_skip_name": "this check is known to fail", - ... -} - -# Using check_estimator -def test_with_check_estimator(): - check_estimator(MyEstimator(), expected_failed_checks=CHECKS_EXPECTED_TO_FAIL) - -# Using parametrize_with_checks -@parametrize_with_checks( - [MyEstimator()], - expected_failed_checks=lambda est: CHECKS_EXPECTED_TO_FAIL -) -def test_with_parametrize_with_checks(estimator, check): - check(estimator) -``` - -While working on the testing infrastructure, we have also been working on improving our -tests and that means in this release we had a particularly high number of changes in -their names and what they do. The changes will make it easier for developers to fix -issues with their estimators. Note that you can now pass `legacy=False` to both -`check_estimator` and `parametrize_with_checks` to include only strictly API related -tests. - -The above changes mean developers need to update their estimators and depending on -what they use, write scikit-learn version specific code to handle supporting multiple -scikit-learn versions. To make that process easier, we've worked on a package called -[`sklearn_compat`](https://github.com/sklearn-compat/sklearn-compat/). You can either -depend on it as a package dependency, or vendor a single file inside your project. At -the moment this project is in its infancy and might change in the future. But hopefully -it helps developers out there. - -If you think there are missing functionalities in the developer API, please let us know -and give us feedback on our [issue tracker]( -https://github.com/scikit-learn/scikit-learn/issues). +Create your account on Skolar today: https://skolar.probabl.ai From 94e910b244484b9e9a6be401b93031f6024c6a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9n=C3=A9lope=20Gittos?= <147163692+pengtts@users.noreply.github.com> Date: Mon, 30 Jun 2025 18:13:40 +0200 Subject: [PATCH 3/9] Apply suggestions from code review Co-authored-by: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> --- _posts/2025-30-06-probabl-skolar.md | 51 ++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/_posts/2025-30-06-probabl-skolar.md b/_posts/2025-30-06-probabl-skolar.md index 4a116b1..5d1016c 100644 --- a/_posts/2025-30-06-probabl-skolar.md +++ b/_posts/2025-30-06-probabl-skolar.md @@ -29,19 +29,54 @@ postauthors: https://skolar.probabl.ai/ -The scikit-learn project always puts efforts on education to build and nurture a strong vibrant open-source community. The goal is straightforward: give everyone, everywhere, the tools they need to easily grasp, engage with, and meaningfully contribute to data science using open-source software. This mission is shared and actively supported by Probabl, a company that helps maintain scikit-learn by employing many of its core contributors and investing in its long-term sustainability. With their support and a deep commitment from the community, we continue building bridges between research, software, and education. +The scikit-learn project always puts efforts on education to build and nurture a +strong vibrant open-source community. The goal is straightforward: give +everyone, everywhere, the tools they need to easily grasp, engage with, and +meaningfully contribute to data science using open-source software. This mission +is shared and actively supported by [Probabl](https://probabl.ai/), a company +that helps maintain scikit-learn by employing many of its core contributors and +investing in its long-term sustainability. With their support and a deep +commitment from the community, we continue building bridges between research, +software, and education. -When the [Inria scikit-learn MOOC](https://inria.github.io/scikit-learn-mooc/)(Massive Open Online Course) first went live, our community got a front-row seat to the amazing impact of practical, accessible and open learning. More than 40,000 people worldwide have jumped into these courses, clearly highlighting the demand for organized, hands-on resources that blend theory with real-world practice. +When the [Inria scikit-learn MOOC](https://inria.github.io/scikit-learn-mooc/) +(Massive Open Online Course) first went live, our community got a front-row seat +to the amazing impact of practical, accessible and open learning. Created by +several core developers and maintainers of scikit-learn—now working at +Probabl—the MOOC has reached over 40,000 learners worldwide, clearly +highlighting the demand for organized, hands-on resources that blend theory with +real-world practice. -Today, [Probabl](https://probabl.ai/) is excited to introduce Skolar, a new, fully open-source educational initiative, built directly from your feedback and all the lessons we've learned along the way. Developed by the maintainers and core developers of scikit-learn, Skolar is designed specifically for data science practitioners, offering hands-on, high-quality learning resources grounded in real-world applications and open-source values. +Today, Probabl is excited to introduce Skolar, a new, fully open-source +educational initiative, built directly from your feedback and all the lessons +we've learned along the way. Developed and extended by those same core +developers of scikit-learn, Skolar is designed specifically for data science +practitioners, offering hands-on, high-quality learning resources grounded in +real-world applications and open-source values. -Skolar exists to boost our shared values: openness, teamwork, and practicality. It offers clear, interactive tutorials and structured courses carefully designed to match industry challenges and specialized use-cases. But even more importantly, it captures the true spirit of open source: encouraging collaboration, peer-to-peer learning, and guidance from experts. +Skolar exists to boost our shared values: openness, teamwork, and practicality. +It offers clear, interactive tutorials and structured courses carefully designed +to match industry challenges and specialized use-cases. But even more +importantly, it captures the true spirit of open source: encouraging +collaboration, peer-to-peer learning, and guidance from experts. -Right now, we’re just at the beginning. Today, you can dive into our Scikit-learn Associate Practitioner online course, adapted from the popular Inria MOOC but enhanced with new material on unsupervised learning, especially clustering. +Right now, we’re just at the beginning. Today, you can dive into our +Scikit-learn Associate Practitioner online course, adapted from the popular +Inria MOOC but enhanced with new material on unsupervised learning, especially +clustering. -The next stages, professional and expert levels, will launch soon. We’ll also add more courses covering other open-source libraries such as skrub (for data wrangling), hazardous (for survival analysis), and fairlearn (for fairness). Additionally, our scikit-learn team is planning to create industry-specific modules tackling real-world needs in fields like healthcare, finance, medicine, and beyond. +The next stages, professional and expert levels, will launch soon. We’ll also +add more courses covering other open-source libraries such as skrub (for data +wrangling), hazardous (for survival analysis), and fairlearn (for fairness). +Additionally, our scikit-learn team is planning to create industry-specific +modules tackling real-world needs in fields like healthcare, finance, medicine, +and beyond. -At its core, Skolar is about empowering people through education, driven entirely by our passion for openness and collaboration. We firmly believe that true open data science begins with community-built learning resources. -We warmly welcome you, whether you're a contributor, learner, teacher, or just someone curious, to join us. Help shape Skolar’s future and support open-source education in data science. +At its core, Skolar is about empowering people through education, driven +entirely by our passion for openness and collaboration. We firmly believe that +true open data science begins with community-built learning resources. We warmly +welcome you, whether you're a contributor, learner, teacher, or just someone +curious, to join us. Help shape Skolar’s future and support open-source +education in data science. Create your account on Skolar today: https://skolar.probabl.ai From 70f04d87a11373fcfe1586823f9343c344aa8e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9n=C3=A9lope=20Gittos?= <147163692+pengtts@users.noreply.github.com> Date: Fri, 4 Jul 2025 15:19:44 +0200 Subject: [PATCH 4/9] change file name format --- ...{2025-30-06-probabl-skolar.md => 2025-06-30-probabl-skolar.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _posts/{2025-30-06-probabl-skolar.md => 2025-06-30-probabl-skolar.md} (100%) diff --git a/_posts/2025-30-06-probabl-skolar.md b/_posts/2025-06-30-probabl-skolar.md similarity index 100% rename from _posts/2025-30-06-probabl-skolar.md rename to _posts/2025-06-30-probabl-skolar.md From 7a2b73d0bcab76393f475301d94330c3c7e2eebd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9n=C3=A9lope=20Gittos?= <147163692+pengtts@users.noreply.github.com> Date: Fri, 4 Jul 2025 15:22:58 +0200 Subject: [PATCH 5/9] Adding mention of "sponsored blog post" --- _posts/2025-06-30-probabl-skolar.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_posts/2025-06-30-probabl-skolar.md b/_posts/2025-06-30-probabl-skolar.md index 5d1016c..44268b6 100644 --- a/_posts/2025-06-30-probabl-skolar.md +++ b/_posts/2025-06-30-probabl-skolar.md @@ -27,6 +27,8 @@ postauthors: {% include postauthor.html %} +

style="color:red;">Sponsored blog post

+ https://skolar.probabl.ai/ The scikit-learn project always puts efforts on education to build and nurture a From 57ccf63891e8e2b8e3295395abaae510ecb1f5c8 Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Fri, 4 Jul 2025 16:29:41 +0200 Subject: [PATCH 6/9] Mention that post is sponsored --- _posts/2025-06-30-probabl-skolar.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2025-06-30-probabl-skolar.md b/_posts/2025-06-30-probabl-skolar.md index 44268b6..0dec93e 100644 --- a/_posts/2025-06-30-probabl-skolar.md +++ b/_posts/2025-06-30-probabl-skolar.md @@ -10,6 +10,7 @@ date: June 30, 2025 categories: - Updates tags: + - Sponsor - Open Source - Machine Learning @@ -27,9 +28,8 @@ postauthors: {% include postauthor.html %} -

style="color:red;">Sponsored blog post

-https://skolar.probabl.ai/ +*Sponsored blog post* The scikit-learn project always puts efforts on education to build and nurture a strong vibrant open-source community. The goal is straightforward: give From 3bb4b7e138de968220c0c85304cc8176c409b2ac Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Fri, 4 Jul 2025 16:30:45 +0200 Subject: [PATCH 7/9] Add author and images --- _posts/2025-06-30-probabl-skolar.md | 4 ++++ .../images/author_images/penelope_gittos.jpeg | Bin 0 -> 42329 bytes assets/images/author_images/skolar-logo.png | Bin 0 -> 11788 bytes 3 files changed, 4 insertions(+) create mode 100644 assets/images/author_images/penelope_gittos.jpeg create mode 100644 assets/images/author_images/skolar-logo.png diff --git a/_posts/2025-06-30-probabl-skolar.md b/_posts/2025-06-30-probabl-skolar.md index 0dec93e..b8bd68c 100644 --- a/_posts/2025-06-30-probabl-skolar.md +++ b/_posts/2025-06-30-probabl-skolar.md @@ -21,8 +21,12 @@ featured-image: BSD_watermark.svg # Can accomodate multiple authors # Add SQUARE Author Image to /assets/images/author_images/ folder postauthors: + - name: Skolar + website: https://skolar.probabl.ai/ + image: "skolar-logo.png" - name: Pénélope Gittos website: https://www.linkedin.com/in/gittospenelope-data-analyst-growth-bilingual/ + image: "penelope_gittos.jpeg" ---
diff --git a/assets/images/author_images/penelope_gittos.jpeg b/assets/images/author_images/penelope_gittos.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a6020796ba18af9feff254809796b08e99783e35 GIT binary patch literal 42329 zcmbTdXHZjL6z+XO0-=N|Xab=I1OoD>n@|HtC?dV7p!6m+bdWBf7y>~+z(|qaq(~JD zNbgmoORv&F1yNt`z3<$)AMg9FnRDjM?DOR}XYX~^e%7=9PW_z)9s#s8G*B99S|}7s zM@LH!V`qdhFu)LOmzdePIeB@wIgv;{K?z|#0dW)(DRNy@TvAF_R+d*7tBjFWl8}*= z2GP;c!5Cn0Mn1%X*Xe>*_0002Y{`kw*(zX75G zL#Sz>v~=_gEC3Y<45osBsi`55e{Y8U8v`J$)NK4xYBZOOY@q@^?9x%>JX(}`O&f>t z=z*Y&9U+>I{_+(#f>Y?Ku!tyHR!;sp2CJZPLldv1t)pvVYG!U>dHasNgQJtPi>sTj zpMOALP;f}hqu99k$4?Sco~5RxKhMa_dX-;LSX5k6T2}j}uD+qMsrl`v_Kwc3?w;Ph zvGIw|lV7H$XO@;%R@c@yHn+A9kB(1HzyJ7ob`Ao-{|o2e{eJ=dA3Uu8c&H!{Fa-KP zctBKv|1K~qgqmN9hE2@~YU^`JKst(+U7eg)(?*AqF+Sk1BaG5t7L;8QI{Y6<|C8wd z4k-Hn7t#L)`rkZ%X8;%&^zVa#Spikx^Dg#!vTZ5#e`=fM^ddYeZo5v zp+}&1J!jAoY%atXb>nq;^TbhTLg37uhtN+w*hN#HK8|Ym>JR0uuAL20ahtpoxGYHE z)=$&%*Y5;z{kBBA>)mouYQ1Y(uv(htgkw$xTgS^RwV1jz4S) z34mLdIlkS?e1HCyb}bP2gzgz!xsCl3Ic@=@Qa&~2$f2ekure_Meq|cyXsqEsV?dKC zO46eZXuv|xK0iperCjAI>AZdAmJ-Xm)_t>?w%{QV5MXmAL#4fTi|HF+CZV(HLo_K! zz~Xwl6r@QxcQmn9EP;7vQJY$ofMm*|qP(=X>37+0d%U|OdNOhRrEbc~y7^L!Z-O&g zclGxzKup^NRMR*@axK%g8LfS-WxivOOjS@LNDAvIQrv&cQiQ7<<`w~*1k|ly)osI7 z_B!t~vUQ(L*e93?wV4~gbG$>jEd+*t9m%-^xFpW&EO;~PofZqgSa7)D^9g%GAM^Yi z7SlshAS6UAM^SylOp}(XbgGqbcI%Byy9%{&pH8JTfrJ<>n2Da?oKY=hzmR zs?b^GdB>SZmvF0kPv~sb5K@}SqbD6Vn^IBFS^nx`KwC9U|BY0#Yq-C>CcW z`sbjeqa_n(EG`~6wLMBAjC!T`n5KdH1w?3(hI)Bm|K^3h)NNX zi^(A))B(4qt|hmg7SN-5PzwcU-c)a70IE_ly^Sf{b}|y>Fx8r$Qk*CIS)A7u{^PV1 z?%rzKwq=CvK`7A!sX$U=!04<}w5Tp@uaA6E0*1HFOdIT-ma^f)WpdO=budBe#AXX{ z6^E?WK^NXH;OWK%Q+&`LO)Q#l)fcrff`O+xUK0hC*9b~864V4*WtHJIW% zs7s$dgQ4~%YjjxhNXZAE$X)KjXmRQO8i6de+at-_3L|t(EN>qvE0?_ueyq-9nhg&q zUX%o-?sNZkK{)(=H9yTA)BPDvZ)Vwsy`R>NlCz%wL}&}35JF7G?#n`;;>=bDnp8qF zrLA*Qn|F&u^Id>aGuzqs63ab(18U!7vee6Ho%kr=aamwBJB(!EX@P(?6-vwR&H~`L zSv?$^Iqjp4_FQFAGi&QCehQP;k61wXS=@iD7RD-$!tjElH|bi(05|g;XlnZaU9`e6 zF@d{)_g!N6!76JMc?-t`#IoIxPr(}d>RJbS;#C8aspX{w=No@J-xIZ5igC!VZd;Dz z3>0CES=%6Q864prcJ)?MR!uZoJ`twe5|KQ=NRmOhbg2qgrSC$CCNZpye9Yf#CUcL~ zDNCt5#SO0E?$vgMZ}TtV*lf+7GB0me_~?H71s&p$84nc57d#0X4Ol1= z|1G}AKp=|-E=HvI?A%;)C{@Ivo>6SZKwSZ_>qwq%_R0pl#1+IMd1~~>ID7%OgLCxE z-}e*vHyfiy6!$HRCa&`)Y73e3UGC>wdtS;e?xOLqJrKn>mf4p~+1=nx|EV7O(Zvshv5q@hE8$5MI0a6FE!9!BIwbHvn zG(HJIptPv7&;!>fg!k%2h4#+dmvl3xC&+^kfJ|DDm%g%}PEE~CL2MTNN)D@|*7?qv>HvtLieVs=n(TKKk0!gwU5vYbkvOTs z?9FMeE#Z?MTkuK(aM_P}HGQK&wNj~;eZFPgWMrJ1|Lsg0)evR@GpO-vvzJEL=l2rs zQk;63y_Ium-YW6Kw893Eb05Gu)fYk#H(}?$Harkiq1_5v1T^!@l$G|#LeBQ3MJ;P{q z7^5zJd3xnzA%7xOvSp4Mj)mN)`27!iJ1z8Kun{F@!YsKNwKmthv!#KjSu^^V!TBP) z2l;&anOxPYh24YUi!p7*B@%!I&S&Jbs0*%57?2DC=jBqfseI(eP`nR&jXc&)lT7TuwWE?fe`cfp+Iwf`4GuFE14t&OnNFvkL*KGoF zX`hyNRdVqd40h{=CQmPbY`@NAw)8&hBjdS}yDKGA`#t+8iz{Q1m(7XzLhDB7v|X+L z`Wl#IVkV8GSY!X&gJ%5gge- zXxenWC%@VkusF`L`l+W+<8l|_U9^Y}eN?0GRiCjO9;MG>A}}bNgH>GU7{2>(>3Oj% z;P~UiG}BifW4`v)2IiWbTL~UV^2paAhm%<&9XfM}mW!fDWUWG<26}h%I@9N?Y;q1~ z1I{U+MP4_OcDl<4r-gh7xKo#0%UGBh$VA)LQvjCdSflOXp5=;F#s|p&1|q&W?Q&GF zqFVZosj{^_qYEwPP&PDrt2Vy4P9V-!I&pfqzen~<;vFr`*-QRlIRQE_8+ot$UT~-W zNVj)jnWQ^GY7j6nu89r}4$YKa4hO^9CJ>n#uE_C4FPwW`8hkrcoCJBTZPr z|4~~Ji8dsk(^5o=TK$mjiEx6TNHe-g`N&OjbYs9KWChz(0C|E6j^%=|w(Zf30u3w7lZ| zUpKc5EUc>}@Mt|>sRG=d{? zV=RMSe@$Xe)mu~#W~rT0YDJLgDM^(WpD5j96!$E+s8H(?q0(s3z@W2H$hJvLN zSwdK6@~ywo?;GQmbXJWkSDVB{m^al&l$ukkTTutHK-p5S4&C?fMaif&D;Up3!UHVc zappQxxZ{wkj`&UfTg43`pfOKz%LbV*+*_9r;Ah#=nqc6%-Y;YCt+nRGY(@Y(dRe_f zzG*#UcIst+%dd*MJZ(csc*uH2M>OqOm@keYu~WCkWL{@Sr&fNo)SR8=Hv6-#u+VW% z#UdUDqj$mm)R{$~N={=0bMSgDR}KZRqP8Z)a@^>%s!gY4?w zPjbUCGFXXwTp3_gU*dQvXm0UMOIJ&WCGV2T{Pgs1v>}hffK5yat*5V^o$n>l@KDw- z0_isiHJJiViBY{)tE{&kS3BV?0>NM~#N-BnLz-XH?Ylxap0H;>D8uqy-Xb1o0_t7n)K3ui ziVKx32B`C$7lPH9?|4g8!Fk26ms@ww;6As^$wH3Q zTJC|lkQ-r@u{K&>x-MToIy7w*q3>rpq8`Md$SpBO-vX_^wHeKgK#~XS6zy=dJ89dZ zwY%ohc&a#F>5@eg^nfSWg1Hcf&~Z>lM~(amp(AX3Ty~KG_00_3Ck-CUm;WlQqJyM3fN%9* zHh%mln+ZS^Km>&G0!q}}W?i%wZhp6E!CWMQWXLZQ?kM|@XrHMcC6hL>YOuZ#Up+da zx&J@#KyF+}{!9g9XwYoKiE|%=RkHg=E}mt|pRXs!xTdMriI#&&>`w zk^Ix=n^|Kw(cL{$S0&#!l?rCYz}m0EkCf3!j?`7v5|{|6huFH?OI4t0(2Nmhez?NH znN0`NV50b_VZ7d5QP#<&{RDra!;5C(h}!-KlD01CGk5(?VjF4=6l6Q`|i&nvwj#_In$#DCoX;6Z%{O?ASOWRLm1|2q?p~Z=>4!ab6o~#YRhP7M#|&E z{|;6O9}}^~EfzGBIF7i*=FQMCEg$bj{-@MT-uCltvT@4&U8dS+55YS*KH6g(O|UXS z3#GlqgzFqbn;g3G;ZECVO-t_Y4PD04@;}%?hydwQ+P;pzz$Ir)f%lMJ;dgR79!m3a zt>W&()T2J+5k`Qbt8H%ixz~Q8QR5_+)=WP7DSP;BY%6k{hlADQflV`3$8a&n(9Kma z8EX#qR*L!~r)2bc3?;;+6pw<+f>H%gYy~f@4Fr#~LgsIHL45NhLKG64FCO4ElmB~G zLm!iD5Yd$vtV`{5l)xl8_iqP77N&HXku4p#JC4oGZwpKjKu`qovyWdzA4A|Krt_va zdyZ96wvYD-S+bTAt6w>>St=HJ8^ zRp5z*Lc&}SrkbjIUj|GNpwx|=A~(YTd1RdO*3lhQ6D%)~yEP`kK=6~g_R^b?l0ksW zsB6NpXBB2B{W{pXfQK2vSz5AlIm^E^cmv)4!?bFkd&GjFB4}ZK4RLKm?TTK^F>hC- z_Ws6%M`dfelXb4|vAJCLQ@^R(StwEv-y-MHi%NB8!X0CSFT!WzM#SMbqezt_A}fyP z&6OvWg@&8kJ6~MvbJolSzi5M28>L||C3mjlDt?VMm7_HpnHFW0`WpL6kiZ%7W=WTC zCyZGy$)c{A^$qmN#6fq{N%>(@FtR*OzZJRuu59IA@DcwRpc*v#VA&c!*e;%JgJkj5 zX1;UR$I_RX^C zxb0-fQDC+e$DQ=SwTRkT%)6%mnIE_M%f~p=qk#E?N`6y`)A;1~DIHJwzTzZ}pN9OL zGqVF;Z(hYr5PuY{HAr^%U)-yw5|7qoLyJc)#olIOuf1sUx>pB0;dm7Xdu9F?aIsGS zziz!!G7K>Rr+THSIVv;zXfdtE9vy`R8V+NlblM>&oyd7YUQL#&T|7MW!I3E>fg(N0C z3`$X*N2e%Cu1E48J3STqNbsMTFSEO2YMdC?4VB}fA=CP~9A0RYd@r#Ld+ig4dQBrO z0_t-_2OGDJPfu#MIY7WM*%O7M{WM9gJ8cD0>1hwsg#*nnxqt$S1rHDV^3BaSQFNiE zSasJd@c3GRiJ4n>sW`}R?;$Z3lkksq< znEk(Zs@!#@KOn>;%jgR^#kk@vwksmKvPhPxsWG#@OfFPXoNwROG_fH8rdvO<&3+A$XQjF|lr z?`C@WXf|@O2D-OG?N;~XN`^O+7DmY!PPx-JdJ{g?y{hcyl$a{k0gw5rWU49P#BYH; z-PI-Q#wPD+dZk8VWPu+Iylx$ldtGYCgwR*7@SNTPHfmBy8ya_&Y&gWPa3|^d`NYMh zRX)D|j@Ntmg9|9ZE@?GoMM$~%wf((Azkun+x(IonHt(Q2{fEL&{!FZYG5CbfcTW-h z^||XNzmpgO`fJc6^gYAccCQ?_@$FUDy{pc`(F49Y$6J=Z3ka~vH2wLdhRR-;+ruu3 zj9)A2xWp-22#+h9i)%d(Q{GOwx+ZdXor`|)Jm;WXz`tJW*}zix_mCttqjp~w44NtA z*nI8sHxM8R7NoF7^_H=|kUPmr+8d>}Nue9&2pO9Fw#lik18(Ya`>(MZ89OGKa5vf~ z1$_~C*cZ9q``wK^<&~YgdXYaaP>I)YD8+OI!@HLZZ+USnGd3rvjiyCp>?v=j%FIve zk6Jl^hD>cFPuUZ6yGqa(l1M+)*%yPQkL>-0s?%O?#KrMnuJwf}muJLT?x{%~&Ff|} zg_W*pNH7})3D;j$wEF(@w(!%T#K{{zKi-bfNa+wuj4?f34~F0IE;GNej&Po5UG2f0 z&F*oY;MgT3Yd!uPZ0Sp^%GohI4jS4Kyn@39BBsJ(;MujZA#EWoL2_G3RE zm@-x-__)96(u7a6s1E&XKoj38JwYDXFu0AU6)ps>J0y9n4RXGXfJ8p*{pJQC88m-n zD>?JMu&aEoeY6x8vg>)$l_R8!7wBD~i6YWkYFEMeA_G~Y>+*aM<}V_>nId$3^Q|5w z-%O^16*d>W6||4-y}#0}ng}qEntFByvEP>hFB@vXsHIE?S(y|2Fz#cK15x@5ScKA_ ze_|VBS@EzmpAz!qyFiw7trtnXa+5~1i@j|gF~^Lm;ebD}pRJi9uKJ8+JZb2a-iO^+ zZkeEATOsHS`<)ci$@heNzQ_Jatz}#pu$~^CXOGl04nH_%QrRpL6Jt!|y0IN(yO6`` zQp2~%+N12I1D9M_tPSC`QPF0&A;o7hx1sb~w2!6a_%_4I(9G+FI||7=YfZn}&&Th_ zbzMoCj6^aWFtEvJ7wQLs-vw-ub>Ms}Y3F0qXiF63lq+5q*zLJ5)&y?rcDqmE&9-i@ z=jx)9Fi`FiaT!_~VczEia2;&mWM;E(E+D*yON=sE%cHdkZ@cV8jwoXq9s^x$Ptu`f`|uO^+oAzH4%8{U)3ZO-FTP zvE~-L@)bVMH#8UhDow(}o=n}H`H|~p3>n90EM%Q4>8-%Dp3P~79_^Yo8rmzr>C34l zAZv+UL2rHyGQGvsEv=J2(@r^I2P)cf2nQScHm5(>sb-&6ghs(VU2nL|bzSG#&5k3} zT$ecF8jIw9&qUMS1amGFwO~p98d$9RKukL_nG1O-%d*vMBM7m2T^C4v*v!vx4CBf5 zF*+M&NELne-Eq0n*+ozS`Y=Kvm{&NHt7c_yIhoGcTNs~U#g9U(Z5);|TsG9Ry^W_k zH#OW%BN>vELrfR!@!)(L(N*$fB+Hp`EE}ryRIL*u|Fh4YkGXh5dtfOBYHsmwbHS)w zh-AwUE*;jub(*CKd|iKXCFY2@++=|GnOo|iFc^O~2>1gkukc z2iSYidu{zeW|pf?>sivzum{+_8BTTOo5pjrxeFWVn>4{HpVeM3+dxuw!$&obSx-?Y zxwOjdPl$vX>Yi`DQCoi^eg|DESD^=f6KLD*Pky6w>zZ!u*cUXnG(1~lmd?g{GXFF) z5m}&h67(CAIa#i?f1j;M--YLSPg_n7{wJ1QKy!vld+9Vk#AOe>>;rMDA)qHaH#vjz zz9_Md9Eo0g6_$_o$@SU%(t#dGGrdn2~Ay%HOS0 zKXrdf1@XNaN=#dBe(+wo|56+TNlsvoTO3UM?|!<#)2o6SMBEPO7(PxE~8@# z&tE`4Zz{7nCdZf7>BAO6aE(PN3I^Uk9?Ox{33lQ2BuEiANI4lO-shDjb-u1wy9DD-cW+-W9Av9;)P4yo zZ?7`iz4vs<+M~+-qS<#t^XOT2{^YxJ7tSlkuX^tS5*2G2_Wi z3c)o?uMn=#bhw=Cu15 zrAr!6M?srxBJ}>J6m6Tk(b5Bd3KlsDk@SlzjaMUKB|N!2&8x<5#d9TX9{I0S%JZ|5 zQ?*Ncdxq5V`_HBsdRD%`*@4Oo1Iai%Z!q44wn?hz$yy`I*Z!!`)Ped&0tm@6?{>MB zpK0Ca$1^x2)DT?rMga4r-}Bw-dUhdE@8LrBt2`@+5SYlBDf3)3-I1$d(Ix?Ke%>Np z5E6G%;H{9X^G|j{-w;bdInvJ&dD3_$&AksB!PVO$px8Jyv+gP-|FVn0`0cGyK%9F~Q(cU^MbCqvFmR4pE)9Bht@q;1EsNiaT#@$USF>)9skJRGt`|(zl0W`% z-oi1GV=jF}C~I?zpbNcqR344j;#$x2v6#iNhqd5n9h58}Lf>*51e|Oc+zVnj%5IY5 z(%!~7+Ni!K)uV;?F&@Q;dm$qb-Tvl=W|jDJlUA7Ik%#TLN?i&IFSXX-7ngk;J^Z@h z51L3+qP3-CD$#FHso+1daPMrP+>ICg%&C4`W7&d$o-C6Aj5oijrKyu(2>9HsPUa}mmpZ3E{Rv$1o$bVyAY4<@|du6LvB~mwB~}M zE7_7^n{B2hEn?fus4Z>k2q7y8%W@bi$z@tnuQe}pxb8j=280M<5K;41cU|WDJP05@^@NKEj_$h{-L;}SE*_3gIPC{N9@|`^s&wj zJNYhHB=52^dwB2#qfwT5x_bmGhWAe4vRF!b^`~MU+aahU^1rk16@dW?@>;5bwbuGW zt98VPJDVq7jDx;$BKo19BVb!Je-^RErjnhZOlgIk5Vt(3DE)%dT8Xr45<{W44nity zvt&A5h2t71;{H>!k5_PXR7J-CAJC+HR&w14Yxz#zC#9(9J~RBt%s_5DUeA~K%cLV= zjy_&s!e}tU26c7vp4cVhgE0?9`_~ssanL)Ja!qOaJ_*@QDmQ|hs+OME36Zt26)zA@ z^(`ii?tMOuzgE8N+?y?NCF{nE-Sev2j1#@_ID>E1yt;feW8zh#mS*uF`{dzGWK`N8 zJE$#D;g6;2pR$DQ&rclekGlw5XUIQkPnP-8SNT)b)Ck1?%sdo=g720`-}6WJE5%}Yv_;u9~@DIPI?>q6UK`a zG43SNBc4aU@dgw03u!l!k^XQ;)VR{h*&lz#quP{pE#IYib;Uu^%ebiVI1Dhks{g@q zrZZk$!@o-LVC~1Wml?cNOV#T9OBe$xU)+m`j2e5JyGPO`zY(H{Ng`02*pg3t;GvOt>2=TO{WuM ziWLcr^5VVe=0XMBGIh%{I3p4J(g}uG`nl-mt^p+wKeM4so?`$?)I!0?&oMBM3%KtkoO?QVCkp z@fJf%+Yxd3#~SEhqOn?+fsek|TRMid>&QTrlh&X#oOorXZ#3>tJy*}r(tJ_|Mi{xW zb@OFS8Xu?)@GJCz`z6cpbg<%J*Vb9Ke|lNjC6}IAfu2olREkIa>2 zi%{8>wL@0PBi~EzT}B7oxM^SH+Im1|Px%Wl>Qy{#zxi?MdoF!RiZo-7&!5kj{7W77 z2OJU%jj%A$7xM(Jf3~9A$wX255Qo12hip$01kXbZAxSE$GXt&8Q9C+oae8Y} z8l%*ZW+n~`?w>o_6$4YhGP!@|f({PX)cTGH!3Ai+$7#{pa71F6YnJ!dlMmK?jiVAL=lX#$wO6h3X^ z@;y73$M>c%>~-Xkv{s=~42zej#RGqMkFB#=^7_O(nJyip42)j5U2M9fx2Y*0OE7LQ*hPB*gMtRZ;$uGodk(3p~ruLFBL_nHT7~6 z(VvOWGqw$#59P>}x}I{joRrv45@IF>4n!SA!WF@shY{!HT(|DmKQQv#_%F+7dr+v7 zy#3+QSjxhv{=$Q5lNuVR+)aFgz-Iu=z2nN)%X`hXd7=(YcOR8S7^2%&$?UY2kBVFo z$eJ`t3U{qDc3{9NTO7$AVxc4v`JW!S{<}tSUP0cmy!1>*VZjZAN^|KzR5B@oz7(dV zM9QuYPz*pbX?+ltN-ZM3J^VUhAyqb0k)Tl-xMQ1!;f=L%JNH4j`xw>Sk?C8nd!Vc? z_6RD~WP38`)lFu_`PQ*S{s6DvANdQc)XV2NRB}1MNNIN_aRR`Gw^8F)&xkyM%9|$i z$z#h4n%`Rhi)^YIrNay11KE9MHy-y0=gc?aTDGbS+;486-1}w>wBKi>6$h>-DsbEGkh3r6}Lpdp6#`|t1`oP2r|KpEaDbQtTP#_ z851gI@fxJM0pC_!hwt#6Z7iLwG!=b{ph=rRhGUwJGoPrcyl73%g1ble)Oa7Cpk6^K zuLQF$4bKCpcxx?d8@#RP>S)@+lGIV`z0_$P3`i=P{*51R8U}$(b8=Zjmflm#r5*h# z#6gK6o`<isz7+CY>DTdCH6z@&vhym8FAUi$;#r@~{-6A{9)`EXxI-Ml;h;dfpQjIs)=y zoQ0;6bO8iPM}~{7IJ(kUK|{JCE|~RP5-gB6!$o>TU=&Gym5dMjCt$H%jJ}~_R%fCs zG&6)t+r|T=x@8vCd8l$H|CwdO*utMwpy1_-@1Dt)uD7?&u6AExdu~?<(ZAR|4X>2D zaF$E|t>voVqH|-V%2y%5SoO4R?5fF&H0tMs?*e)L4rzD$6+{w zA7b*Of*{J&O(fC-0h5NWX;^;D8uj?ZKdQ$5%T&M7M$ezGxo^D8$aC^Hu9ni`Nl+L8 z+od_R9ZfrJ60q>1OpU8o4fTEAnG_rgb4@qsV+9Yhyc4v9;ex~wFe+74wKo^y|FEGuG-CvG;7U?5qXZjmFpz3IZ?O9BFL#n5!_k zbP+!5w8!zv%I`}J=q=ndXr1n2`c&(p6p}M$;Ks4A$p_iFMIK3LAs)x+rfsT+b7HQ`Xpj^c?x)HB4gN^7*SJgXVq9`{qL#u7QZzSSE}W@hG{BGZU_da%XRlf+JvVKY;!tQ(O$(qpNshmOqLqq z8=v0@soj?P3k0!#bFD0)@@c864_am0p4^SW?#wq=wphCza@-iWyYT8kO@Ywd3E8hA zdiU6_{g~_QU5Cjp1ywFLHWDQat)X7*cuj)Gct*9e(JjPUQ@jJEKVWj$48#iAf1hA z3SlWKX}VkNw|QpBlZaQkhH;jp6YM2PeE?Gx#>dAd=4Et7heuHIA))vGe^QnnvMs0RSCjH_tj9FlBg8dF9bxz+t&%yt(yr#%{C8kJ=A$ zIcpsR%k+&RSEZ%}IY+BTU@?n>^(mNVxj3=CP>O!R$4rb<3xQq9HD%cs6Tens?IO!1kYau| zK7)7^nQ8ZFc24NOqQ}9eEg4nieu-kD)u&BXGZ|Sf9EiPb;ub0MWiQK4+xlUnKTHck zT#o{2qIGqWx?*p$A3*ghwId(3ZXhMW5JT2(`d`l*LK19H-ym$--S=G0)GvElfsUEo zw1Qc~%?u5ovZdF?gY8`m@lrcDaD`rEXHy`ru5~Q{r!qWkE8-B+5edTBC>p<>vtLK$ zZ4?4%7G!=;XUL*I`)A`!vu5Mm!)6^!p&9*R(#vqlSgJY!HNW4&4t#dn2w*Ph6kBVX z`N`*}ylI_C`A_9!`B4$h=%fhZP;JnpwnNsxR8W#P@#IVXd4e}>hgdRbk5Qz7^`8{^ z=%96sio2yq+=MUN;O9SQ_O~;tnAZIS3&p#N-Bzr(0_ZaZ-;#E4OitZ>FG*pY*9YuC zjL#^@@5LQ`eO!VZ8_*d1I@S*;#;^QyCR>tq`?!KuIW}E~X+;v7pL563m`ZyuKgmyj2-stC zGa;1q;o6|_DD3$d-(y~~1tgp%Q#?w*?g}WFKQ5?9I&r7d$G=YDiBwZLk-oBG&e^~q z)h3b)3a(O(b+tUR@CmM37w_zykD>(dG`)82x?aj%aHL)Az;MjiqK{MleQw%smtU@Q zzatR8ZBG3+~Q4HH5wf=M8nz0DgZw z>SEA$&o7_t&#fbmVU5ASkIWTm?gcNqzq%cl!ry&0xi`NQ#$lnI7_gL(lz}u)<9?M~ zDiPdZQ1&3;J8Sr9O*g$5>D|vL&t}VAM7Q1^$H&Sb*#&)}?A?1(pXJHt>&?G%sAn=h zX%hM(HxQc<{|v-hr4^J(vdsO?^hQq^cYEQ{*n17{bu0+-THYZEd4B=gx&UHDquK$% zESbfXZ&ZS9*IGEyei#k_$S8Q$P0Dw;d)n zaq?SQRh$Y+Rh#OkfD+^JFPYKuU=3zx`YG4*)lDQa*<5b;{+<1I_BKa40{ovgBB6!B znhTlXKOCQSje0Jbk+gp-*A~@J_=dP>%avPF>iRlDlT|DIIn6&7yE7vt`e<~Ln4|VU z!Y8kJj@!M0#bia1e2XNVKWSA(L6?_ZdT!q^K5Vf3LG|Io%LjQ~jGi{dvfq`(-7bg3 zy?8V&?k+{DA8L20*70Yzp&deK6;~QpAFP+>&tLgMwBm@lL&yF+*HbxQoyLIc9_^*r2`8_s@UiZ}q=I zA0IJ4A5uKND{sLN>{6t9nzMuQTqM<3Ry>nTuXP#Dx@23bL!XrPI7Ma;+r2EUs_;#A zw#L^3!7J6um;G_|q~dPLbHgad8w?7JZMc(d=+7|att`jk>A9-_=;v%VBqCd+q^eYE zV9nZ>dalfrCE{_yqU_zM4LZYUF39Sih>acVwYouZsXQBi zJEG7FZ}Fu6_MIE#S$6B4s}=#Y^Ec57>C$+J!(n|h%?sAvpwBfYO2!!(|GW*qK0axx zBx=dL?9p`yID7j!fcz-24oM2;{!q8Ou6(E~onP!0k-@EI-UcRS+0in;X!3%uPza)z zhx;C;3mL#dv(!Jh;%#H1rHi5*QJynx&y{ad5;S!W z!r0S475S@X4~>JKx2KEs{5T(H$x)2F85!aoI&m{`)-w6`KijZ%Ppgy_RcJt=t#B%# zBNx+m$_@;R#v%HV1gM+2({zKWM=r%wC_I8N9x#4{4$O= z>+$C|$SuyyhpyvMMVi+MV%%k&T)D#`fSEVEm@(fQ)6;(zSo=7u(ybjmrWi0e`_XtWiURu~kTHvECle1`BbVD<7G~p1xkYRR;^+fG zL!%SpRt|&;Z-pv>>?9Q5j0)wSk?x%|ck6$@FoinmlCupeQaw9H@4UEZ0)z~>T4MCY zt4KPiB&!iBO#40>yRn1QN=-ACnYe}yeoZd{KacPm`*W7;g`V5sW^x5ly^0R_K&uor zLm3z05~Qvf(!y{^TvlsVmtu@YRJ)n5KK@3`AYtZvR3<=hl3Ih2@ZK=QzUqT$w=a^z z5coCK%~Q{LH{JYL`&gz4+$FkgpB(HU?=zCEN^gTTBH~JndyhSNUu)i2%eO0q3u9rb zX?#h!{Y6Tu?z3Rg@p^1D|?>~lW=_xgR%O= z^==A$mFG^+dkbMGZ*0(TlK=I$hp2)eI+vENulqb#js(q3oa#PLcg>5md=}6Hn#FOO zz{%5n+?^)FF>7ngNngqrXIBJ*=W}dP*;(K2*ju<@ zpVX$9X&N!ROTM`HT9059<;%nNjp(`B3o%bb#VQ+rr(`gMP*w1b~x3A?vvMt9+kz0i=xXFn$9dpKqZwRZy~KE zk>!x5e`1y0#PKY`%{EmYgXBE(?v4ifs&3{m#D_9U|T1=FU^Zh8Y}~rZ}eYXwz@Q^6w~a^E|~IpT6Dg zX`Rkl5ZTK93&g9ImhNA>QC&Amx(jJkXY|SDnw&vE*p^0X5e7b_2UW3&Srufdl)>}W z-=mvhQaiVGFfB6L^+J9gE?@p*H`3J)ZV&yEzj?)Q?ryMNe#nWS!%E}UJr8HjvYObZ z_=`xfq7kpllY9S3Rww>3wn#co+R?-kYQ^xI`*1YIlLl&=E!v`Ha!JZhRn{Xr4e5FK zyF4_gUE4a%)u3Td zp0??y*pYAFR>LvFyEP1M)x;a|p8~Jd3LJ^Gmq}*A`JhfdE<^wy{6OIn#pzK@e{z}= z^1G7BOS7nB21l$R4IKwq0l(n1fev0NDFV;(DzvO#nxJ<}%n_4;9~-B z^fvPuV%Bw`&6RLiA#oN2>E3Dy>}!wO(oeJ(9f&{4r5~HENg6WuA(cVzxFpxzekK+* z;a^VYw@FA$W)=xyy(z9Hcu5`q32Wt)!2+iB*b<8aShunQuBI`KwqoInNnI4W6f3D7 z6mMXZQB6?aQZ!%IW4zA0?a@`+| z$nf7pyKG$J)KYREh$m*>k}Rl|VE-@Uz05++TF;1xM+~qA^$LMAXPHqmEcvwZttQ#u zO1pOCU>Xc3sGqQZ&b%F<6O|3GQcYC0>`q2-_na9R3`L4%Hi$STxw{c`l#)W~0(4DV zWRTu{D-g~shNz(Ce?_PxoR3&eU$Ty&MDcu4Ugj0erQ^t8W0Su|GR>|#HISdmFcd32 zi`rI6W1H_^r|r-);T3OMH6%A2#SeyE#4FLO3u<4~P6hOnn)dgN6wjpJ_qV=&hXQr4 zn9vFlk%UK7w4R!3^t3F)IZ_!*&#-yK!9%7h2upAhI%7#gLTw1sdJ+6vtnKvXGezrx z?OySe=iUbMV1A38lnDNNFIH|oj*JjBZ1R{@fQf#JR-N(s4f*n7=dvAxi>>p#%*9xP z0(H-C{rw&brI*v=w9{7WH29!DY!Uy8C3J6=%=b8O*0y~uKkO0GquapfFR)$FRqdsm z!8?3$ZiY9vr+5-)UH$?QG@(u18~1OuOD5uaswl!wzm4Aoe>QdArirKwjUCEcoA2gX z1jCX-va0M##H_h0!&x@GR~B-g-$p-zh5HX%fBhy*nbezk-lt>RX*a8AH(FTvKw?yq zIaT&dWT2&}B z*uMxnr++SVjV8ah^s_4upLiLAebSxnU4J8iIEY1pr5htxu)~q^PW70-6UOS;crV@& zHL*AWpfTtNGItr2E1J5|52VL-6TsP`e}Mu9Zyxd{K;5Q_U$5Nr zop}#kei~J7*&2%1xw!jJ%e)t6eWC&h4oX^WAKdRWm)-nl3b)o6132=JyJ|NIM3CMGR3M@D(#JzouER>I%G2&3nrNgBIWW_`OuypthU$h?{Qg7=M1UYpKbPig*kerqX5FV5ha zBR>?rQ4GB}H||~2)_@#MzgRcwwEwB_V_@8)@zHEuo+Ab`9O1TE9Odw|9|w2l|3Ogg zYWdeCqAQn5(D+pIh7gZ5Zk~;4wzjk>p~)8&weHA+(F9Oyliz1Hbj+*n_^`b5COKZQp7MU!XoOr+4)U+u_8vhMF#I|bgL z-SN*>S793oN$Y%NYnDhNf${339ilbyc?t9xj?GK`deyNSlZ=AJnX8dGbgjxmVzeem{!EOTwMH zm^WP`DIR?n#f?n`7V1%NB{8z2-p!yZ$Hl3}u^FU@795i!88`FKDN*9EtntF+*)XHA zOq!|7U6u0ex-RmY4*NrPkW5td{{z@SC%>>ef%F~eqT!bXRN(M-kJ6Zoq#Op|@(*g1 zIdvs^j;EofNZDi$I_*Qq5Ou*r`4l`{zDQ7h$`FxhE_N%bAWl{sjFcOiRP@L zHwTbh5{9jM6U&L2ks{{6nz>KQFk^~_10A&9Fp` z*VWP0fkikYiszXmk&fbaitleCj!1%>bmF<|%Mq}uAwHGQdmTw#6|}omnq^VYA4=*@ zl(Jiu!8}(bVQH({$j@&$89#B<5Jg{-ZxgxO794sj0DqNf9Y<^EGULPUw;@#kQ|f8@ zc9VB&sm9()geUIQz?WRgbYGAMvh&E3Xnw2vZy^f7;*=tz^}WB@@ms zbjc#PDx>BHj8wX9+_7AU-AcGWoo!y&YV&H0&E#zdtZ|SJ=4tl&ak$lyWmUp)z@g6Q z$t!GinqtT!9%7M{+$t>y$Ze&0v$>8=Yk3hB6aX+66^*Lh!J+9Fcd}tp7}@cjr?C7_ z6^)#okY3kkhI~l9Tb~z9h}jS#$H!yT{{TAV2U@XtEVnmO+{|}LGnZqIq@0>;ap4OQ z&rm(9){5ndN0BGZCdsXnG9W!k$LUtI$$YznJu%jj-Xr#y!T$iBm^9l&JD0CRSu$99?lkDH zWFh3Y04z!Y!uR@`=1X%{&Y!}m{{Rw8WrzBm&!uH-*CrpGASAa4ZbOG7;>cIo4d=# z=lMN*P%-8=3Fa#BF~RGPr6E;+xwSz(ao(hb{NI&%$J}i5O`0YdDGT$%0(;XD7+);1 zF$C7fCna}EgQ#?l`Hp@kJgbS{oe4zo|#VKfFgNN6eFHCf>gWqN4UTxI!TsSl!C}w6 zOBBOiqVAr6^6Gmb&1-cKr0Kq?5wPAYw<4&pfMd((twiJPQxO784&dxT z$3Q8^YXgtH>+4Ev)+OBxO)p~QyHsij18RVOybfp(rQe^Kf%L^GONWK9K2y_-oYaQl zj3rzU!@pxp5<3PV%CQ`%?@R=e3Cd@8%YaX{FvGbHU0WZ-DpfJI-;s$U1&d;nEfa1= zQ5o!ePy*Vxk1ETRIV#FJ8dogLh4GHL0|ueNj^s!fnA~LGRKj(_mry|9Vt@f6#KDmM z?Z-QYPG|{+w3mB{F6cZco?QO-Ni0=C%B2#`mgnL>=?*wA8C&yq{2 z{`Xoy*92xWn1@g~KZaXpaw-6Fv(?nADIpXO|~<*N3(8v^VXs$lS+~a z51u$Fvlu@0YYwfMh2d=OD>dIRpE?zkvq1PQ|gtMv4T$ zWc;9#ewL#QZe!=^Ly@#*&Yw)VX;nALxqU0801IsA zw*Xf$rP|3B+=4}PDEs!P1d75Hj9+te!l^nDHujNT&rbizIYsG z22gqWAO5vRZ)^L~N8JG9>s>@zf0ZgGzzVXrPS_%{nH3gw9f-&2{{Y1b%bMoAwl#Dp z2GbJqc91-|4k;Pe&pys}3ikZZ7pa~Vy?f^q#1>MJYSMKyF# z(!)ckPhl&ShC}8;!>Z)x{A<3@ZhYHU2XT@q3QAYAdi@BlBK`$tx1KYx)UF(GMn*rL zE2;41+;T`6n++sICsi2v)Qlg*F|BDkNXD|fZgs?kBh0{7T!JV&$P4BDIpB(nh*BY$ z9C4L7%?%?(f`UUC8-rI_$O|J!FUvV2(-hZ5i*mX%1Iq0jQ>2y1%Bt;dLFv2NkWQ$D znnpwik=GOmh_Z}6Q!Bv-Kb<&SLXwE&R%qYTv8iNrNiv{170%+h$f()va#H}4%IASV z5jgT(c`g|V&q|owIYZ_b$Ec<$h{QKW*-{2UsS!5F-dl%Ga;$q$0IwIB8<{?0Fn(U2 zT57_WV9YXe!Va{=U^g!XeKEx$bngolG5m;w~yA=FB#t{?1&M}-)d4K>}7?aNw0J|5X zhE90TBAihjM#c!rGmP@o>2#I*hN)>+4M!2Lu2!+){aDXZM{yx@ie*+gN0edUgUvX)q&l zHfQBw)KUa7NsvGd&m%N!c0=WnpYF9cc$A3Pl|2C?fM~D|nk8UaMRH%lNK&W7Cpk+8W+Poq!#I!TlK5P-F!N%SdsOr;p0H zZxq}qwYqm)LR3ev`gJuGHZ-U49&-i5FqYFLL}mHULR&xAAB{yGqPFNQQ^XXjvt!iy<@zGB!_3kSD&hY}cY%(__b|ZuSedxIdQq!7D{`MRb`hTDQ z09ABB^)RUuI@#G3Ss1LK?umzH^!$IqyYCL`>3IY53sQyRss+?0q)00le&>DTx&k~k7Ju6B$BXtCUUSHwg6s(abcG%$j z%U#``uN;vn-Yb=>9k6EPc5xndFXdJe#u0<%ui;q(RaI}j_|=GYfX}qQPW2AP>0I50 z+9h6``%;LOJp0usFV*Aw+|*Y(nno~NpGwW@J6OLw>l}XPrEs1t@qNCH3o4&B?T5)2 z?e2XALE>K+eVG~yMh$V?^$Gqayr)o>ONWwaot{TIEXO3(LKk|ON?nY-Q&G9UypnsV zT4`M6i+cJGK~J!?dzls>2IJJXKo3vr`Bh|(&5_)Us+{B3o&{@0-(b?3Ks?Kdn4n?K zFgeHIarm0`N;wNUIcoyN?5a2h2`8pOobLpIXqfw~aNMTUF*nx6eI^ zBR|YmMu%(~>IjBLRj?1Q3Qyyfu9HbmJH|4}{3#k_k8{$Nvhq(F-os_^M zlXlX;0y_IvuZHC#P`3vP&ZQWUz&*41HDN2wacoy(C`BX|`FUIdeQQTeX(ID6kt}m7 zWDIkVf2pgBw6148k4K5xJSznt5(y(YrDX~CSRm{NJXAK95ne;Q@Yu^K;Ah&W@<3SH zHbM`4e_HNG0|cKSuRAfyk%~sPNtLz`%ts7g7^vTR5xAYn>bVTRT9soGr|!CgjDx_> zwJ{NFV;Xsk8bCIanrD>c?c)Q0PBJOtCXK{%vK}x(9OjYYOtUPR2cSJi)_@gOd_~$IOFrFNGx`-2>yWZMF2!We1>g=bznI(?~#C3Do!vQ@tQ_P4cvPkhL9H{ z?v1nnhaW4p3ois`0MwE>Bne`OqjVthDln@2As%4p4+fCRBO4}7%6+<10paC|wnyeF zdV14RRAwLoThXcCB#DIzO7=9_U<^aX0x%qvGzeASA{9nEy5I~`(V}K8xT(e%6V{;) zP6UcruPRRz_lVm{vLx6I{3n_QNP;DhKPLx~oYUhWq|8dgo)fXC#DQF}V8HS-PB@et zISf8vpyMA(0FlXP_bJ-rs5Qg*iKM%g;f*(Ld|;lW`wU8aYoy>IX&x)l0f=_ zob$05jC!#+{#AujT3eh(vlxbPbf@={e8hI({{V$^-XRFqjL1e66Or8HfA#CD)yDB3 z@U~QfM+YPfeih1Vd1xe6<8+*Z_04kiJ31H=J13SwE5~0$S~k;diDd4ilkL-w)~H_~ zK`QkD%7gr>-MW70kMA=706KD70(NDaxD-eZ+$_9*K!2CzSvF2>uR=&abmL?F4$d32?Pqb zrwTh(Z7znK&F)7(J?k>$~e#Y z^{KDq4GOc7gbd;Con`3KAs2TmkOTt&5dEWsjVE zpyVH1kMOLUEJ>opfre!Z&#q7PtvSJyPfjzsF~{Rs-t28?L5+_I0}8;eUiD@fS?(oe zP;$_N?szBks>=RiFzOVB9{qp%)uW+XB)2mbE3@a5@c^p-03v@X)*7=Z=#H)_B8q+c zKX*EUKph*g6{LX1ft^Dp2SxR&5hKf`!?_~`e(Uu-RmcWQM;O@T1_UuV2D_qgOL5^y zEUH*wWCPAcAXPa+=W*a=arCJ?yR`u%+RVKVsHe%hU~)iGM=Ek^i6NY$6=_3xna56_ zjVzF}BRT-;2hE1deQD*_0B%wk^&=*s{p4PV1da)Ce&z+nI*jGsyXLZEUNAaqgGQ1Wg?ZKMI%bq0k-T&fVvIRiY> zDIt8u$6i6^fDxHwR>&mhJk(QLnPLyHs8jcquxdiFG3-lp9+cEsBgqVs1KNNPTqJCw zG&MAgRJOPzGi0AX9 zS0M7Pxb~(Y3*mCDxqGfD=*c8xZwrpZWKxV3ELb`2JBni*95Vc;y#PF~mxH}n9+)|y z(Cy0vBmI+6q-x9ZgZP?7VFR-HV>#gU6ae8IPM^I}7$27-`qHz!M8_r^9+({|ueI{z zf=K0aicQ5vHh{hJ)_@$NKPm#m^#pVHQ&;bVbFsbnG>XLTO^fpK3F<{kvn|wne5F@j z*v@DHO}TUoU4aJ!2Ov{bQUGHh5Z^E?Kb0^=ll$25lgLwyd(@a{&?1oQo;Mz70l>z* z6#10pNbV`iBQQK|1KOfV5O70u=sVPbx8Z;*&reDKiek@dN&of6_3R+^!*SmS zAIh|KOMf;yMslHlc#d0)jk*3pqCV{ITh=x(Z|!7VF;p+_W@0%Uge=YeeziqyjHwdF zM&G%W91NU(Ju9TVSfxl2u2ct7-zd&bvN3MEj+0nd~N$gg`)?q!QbgbK)ip_t!g)N-`_h)5sh*3u0G%c0DtwVw$W}mZQrseu2UY~#-@Y}iqQKyxE*mx_C-_B{c0SIIasj_08L2m$MvO1lz$FrkYI2zijJj_ z769b_wT*cxc@+=wHZ$6^=WvQo1pC)LJfdr$?#;pL*A=BW-I-LCk+XjzLC6>(iiQWT z&Hn(_6`yd7VzpkOP#63&k@{Ah&7)ph+Jz3tT#{E90~k5_;;vd~=1XS5-0VmLxyc6| zIpqGG>!9V`j?!Do@Xh3#SLRrgIqQ}={IDxxzzCy{arv6)1JBf->G{<)jyN<}?Z_m3 zp+P>o0XQ`6GEXqucVjg3f_*+gT=h1&y*I6jn(H>(c!|znQ}~bt8YF?@+Iuh~{Qea0 z65(gJbCLvPWOU)U{#9Q{`6eLnyRvxqAN_jC{0BmMoz<+NA&q(f#Gk~mtvO2#I|Dph zvHWxY0M@JsW>~Hyg~4GO?+4eAG5Xf!)P^X0(Szl}4iA5rAItn}oh?lzu~IpmWft(E zX`Mh&Ixio1`T_j$U0;V0ZET1GB~gPB{D0(Pxh+0Lx0S#k6fBHSQaR-QVz#Vxdw4b_ z!6>aMEO_%5M* z#&V^BAe`}!#nw5me ze3k!K8J44|Ag@l;6+Z6RWUK;RtZ1}P+IBY)mIGN0im6t@Rq20@TL1_-Bp zqY4y6#2%R(Py|I$Wmk=k))>KRI7yiuSq^eJ;EIu%8CgaMCphjY7Y@N#H?hqCG%$^h z-8s{J;#;N$2Db zgU&$cX<7?bk)&3XGjqV>G_1lumPCFAK|SaKGa%S^lBG^Cd;8P(PZmUSxl_pbXn5_e zV#zz3sL8-uj5$HH`GAf%??40ZE%RDQk=+jzFv$)URWxKU+BckZ$?Hwo9x}+|2iCMC zdN^eviTX5o{#6@bx!O@j_l8D4I*|lpB{zF99VxPJlkYC&{_>0wKn-3p3}fG6>rRc` zTlYne`y^*H!4Ls*}tpGI@GrAWTVam4#gUYhFE41*&n%2rdWZX#S1GP%Kxxjv&fc|vA zXWW}8!L!KXl~_q8G6VV%kJf{RQ}XouDM1oO0YHEr7@lbWgeW9A=lD)~)TSt8R^FRP z=Yz?nx+r0@YdGjw@@oTL@lC#u5E4uT5xj} z%s;yWC*0MGWrlgx*eY8>GD{u^AJdL~d93*_42ifdRG*PYR{T9G!p^H6$w@H|N`cGw zI34AH;Ei`ffjnqTr5q!!cs!=2rj=G6H>af5Y{y zeMaByb{d2TzdTWiLi-jde?Wef4x4VvWDl3f%W_5!A-_yx>J3mjs@wR9rJ6!5)l71* z{v|n5Kd<3cYq4KLHvZ-deMp#spR=TKDahk$fxzjW{{WpqYi$!{3|opf+kzS%$DJhN1$^r7^bU*!SmeTp7wpng=GB$CL zdmLljXBn<}VY@S?IIT59wrxBD7oMV`lpGRjad5L;lt~AcRQ%iyJ#o{q;{^K}79Y$WDRwh1t=Y4M&m4iz=~Rxe+j$bOobR^6hSiBR{Fgt)opv9P_H=%a%6LOJMdm8_;Gvbld^p z`tgzL&wN&wmmZy^JW9c(ky!5N7dX$qx8Yb3--xW>Z<;1XEEXY?yQt22J^ATV$$j?7 z9r8TJ45lvoj~r*W1J@k;R&qtbk<{v*8XIA4qLlpWZ1NI4H!we; zPs*!YS}S;Yav5WaUE~~mszVRYJAW}!Si3=Kf2hnhgtSyp-`r&P;f8p&y%pK1pB4qU}qXw}wR}P4a@{@s% z>)N^Bz;#FBI}0`4EKa{ONUj?_vI!s4@~wSE$kQ%H2`V-N>IMn?a4Q={efpA&5g3m- z>@YFbul=E{DeZC;tFXxs8Y;a{xzfaw;47wY}RUlDRE_ zGBWrC`)BK0x@U;*ZDuV5*-%K^A>$+YS1W24a>Q8WPDl!JI6XanzV$RRd1SEu90&Pw zFgg?btGY2bTRnqE@vXJXEH|LRavK1#`B;5xsB)43#fO&TAfCL}&yZZalPO~0X9Q!M z{e3H}(mYXdrm{rxw6^7e+WkkkKhl$pg6FF=d!oS0vhkebii}21)e zsDbkSUons2QZY#YSz`c!joZ4^d;GtX%v>)ViU3x4x)mw!(ttNMQNs@7J!)T=gR)hB z_z?b88$_&d@uu(l=CvSSeG7D-!s5XA7%9|V>o+;NY>fQrkPcH_E=U@qes{n+`v#wiQS zlCr2%{3K9w5)vj-oifW(D=t-)0}?vtBl4gIr`j?y(e3C?>X4nShb^CO^vO8G1GTf; zy-K)Yj2=19dIT|11CzbMKD3~eMiLL*_1sTNcFnAFARzSTlU!enyh-+Wjg_p6<}f?{ zZ_;z~Zr^3o-6Ub3-muAErFs3=pL;mDnn3%A$z#&0O+1H?6uhSx$fTX7WL#%{ zK_eN*q0bz3{OOX%O8l6SOG0zzFyxl>rle4*9%ff6O9dqD9e>TyChTKy8ROHhr{_y*vzY^yhB-6-v7dJt z?a4X(Dy`=9R#nQj>=H4_#yQ8OMQkHf4Jz$sBoL<={S9GNX>@N%>tm*l`4U8qH8V(u zB)@-OrEJBg#T4IaxZeB6?%^j4bM5Kx(z0~ByDLaRO_83tKRbRMze?1O^)3&Y5!}uE zY;wlD_Ri$2Yg#*bst(j>EYp^>> zJhvG*^s08L9Fr4uDnwHch2@FIIP}3d=Q!)_RTb5fCvA zopTXwZ!og1M;@5>sO6A9%Nm`z=ee!9ZL>1w?sOLyIz$t!%O&m1tV;Q^?An8390Gv+xdifkf#>q=SkG)@x6F(d zVo6d#3~D&8+TIq984Rq)kO9Js^Vg~4)7F*8V`=YHGY>dM7=H0U?axz=delc#Wp61# z0P`V3kO^EIbj?HnC=ht&2skIuKi@sI{_QF&Bt%UulU!eSUsim5Xm7~3`zuU zdC#VQPs*{Jd0Dh4%!X+(n++yQ>zKB_-`&PfR?h(YXN=ZFdV@XNvP-)Sxs(o1JfF{> z@Tn{YesTcl6xB0%{p4Imntlaf~pgoA5uG>KR;?|l#(0;0OXZZ z*OS*jPL(CPCC#j1wr|^zGINY|!2bY&R%BB7H?ku(6Ob~vA58rZ>0Ku=e$4rds>gwh zlDNq1M`K#$k~y4jVxdD|0C8B>)4X#>C}aU!46NUDeLLc`qL=rJC+^uuCx22ope%G6 zMyT3c;Bq700rWjOSFEJ}0By8}^2r0Kz-A|q*l~Ve__GzP*nB0AxzLOk)eiGmrkZIR5} zqOP$+=7#e4E45B@?gwG`)mbh}3@GC{=bvhTImR=APgu_UAG|vnE;0F$*bI%?=qkhx z@I0Fd53zwH4gmxl=h&L9C;G5UD`SC<)U4YOD*T~`KBv7G5T0O6uN#A85CEa&WjG|0 z$T_IMIO$4DZzS@4X$6GdNgY8Q`_tA#(SdGqK|N`xrbpxJN*DN!Pc#hKw$>oBhY4jH zvkplo80;zw-ER8(Y)>Z0_U#d(g#dd2RJ^vB{Hu=Rj@4@3$)t&&qYeQ)WcpI&L*`{w zhj83kR0Fr4@U8te?@`jxRylJ3$tvHaI>SXtpa*KZlk%Q<>)$@Lq?WP4F@e)8HpWm9 z%X@Vh>-_zxxTm8Mn_8mX=ZGYZ)eX7BI))1QVejqw);IR0_N#KS2;pR66onYc_031D zM=VA}c@!$PC4&AFrAjrV!TTz9C%jdy7u4d+BbC3)bJk&mzRtw|AX zEg2d!hmD!?c9lHf{zOnBt9d>|2uz@3i3%T+gOYH2{xx^xe8q8$9^dC8v!GTZ%8|GOcgl00Ui@c1wKBqy5=RUeh37cukMN=FGu>=2B)YJP zysfb`dy&V?KN^`4*hq@1%z4IfkHWcs1m26iFj{Xud}Qr8z{g&nopo};>Js5*U{v%_ z4n<^93{m8jkv5!stcUs1v@=A3gQyA5sl_>#HzngjGxHpi!SBUHq>rD=XHZGpy)i%z zMlqei!y!1~aZfUU~e8hkUlaMij{R!*qn^fB1W>U&(&vU#S+WKtQN zgYG)eOk{3Ze5XF5m%9)xZ+&UFIO$yRJP_j30z+lpD^3(T>ToaBD zN&rCsbz;olFQXiakz+^1Yri=DB5)~ytDLmJuo&soQ}7u81#&$PGytm^fpDyk_)}%N zfl!gb0F#r_lt+aUd9kS zCmF{bhw3YsHyDacpvmjcZnb*qMwE?_C?Mx^AH;L|eicwd851J_(hxxz$LmxgIb_{x zT|gT~Sf{7?#Xc5CZLZAQmtqd*J&7LK{HdX&@}q<}jal*u>9>!R`*J^8w6_6bUy=O9 zIUg=D$^Koa0Bd1x?9!4SX7IZ@em>rnLGGqAmD>-6*$GDIxZUR453 zr-QWPwsZ9q*b`*V{%6dpa7aCI)E=46DbjCejmoT!3EUXu3}YDlPG|!;+3sd(2H!6P z4CHg|kMq`@<+(?2fwQ!r9Poa%eOT=dtAq=axQqkW>;C}ircag;gAqLO$UJ(IJ99{7 zJT^!PouIQWdQvvhGU`iUaw*feVC*rHa52X{>8c||B}jjiV~yPV;(#I$M#S!n5W^s^ z0*N&JtiQMm^Lw1}oK(v(X4|*r9;=axwJ3RG;y?fcX&m7H0H5VZ40qESL;H|PC#R)C z`fbYKnD{;ND?|dnGKV`z8Ft4%PI#*i6m5_kmtlp=WAdrx9nN}0bZj^v(=lBVK&lyC z;(Xu`PI1StO0H~@Kn?~^Ju#n8tu9gA#sqp(!w@$A01wi(6HG=7Ok_TI-H<;jV^~5L zEUXuilg{7Div`S*=OF(8DtpH20~N?_{cBBh*xU(rff@e*53OAL97y0`5&*_|>-v6l zST15kZ0-O=W@Fe6)afjy9I_FNXPW6A%t1I^&5Q+QP&hpgKacBE+*?ETW=6;)0;~Pt zMl+7Rew};J7dhn9UPn7smpHG@T&ZvwI^DGtLbbH+&hK8N0% zM#q0K3}hi-H(-&DSbCZoIOUwOqa2{x2X9V2u|S26-O>L5bmm8hF7KP}52gqBQRbuF zGYJG>6UGnBy*TTh{{Wp4feey7oBZq$Ks<~Ncs>6BPTlGw<;dj&e`2#~U4|>(Y{B_KK61y zo;dGTEW~Ql$fZL#Cjf0DJ^AQ3sIQRQU#cvq#rYw6@_(NkRj5@N)zynOS2@NPuX;iy zvbaHXr+cRGcLzM4d;T@H*<>lP$pr0YP;v8h{{TLfk7*uRNoD>Z2s~~*58;~9w~|NS z%Vfu#k@FMDA6f=&oSs@C@*kHru z?UCR7`q!`NcQ13M+e;jv34T(U$jxUWk)UFeCRLvyhXgJ^Dn~|-=8!fCAh_f4q>X&U zng)?~hui@;#UL`px)v%|yQ`8#AR5t#$lPR+NXoG%AC)ox0C=p(5EVHEQ?)Mt04PSX z-4ciHxc)|-h&QoCU@_1)Uw&u-vOUp@1h1AkT&54A zaw&G&pZR@d_Rc5*w6cfiacMEtR}_sbjF>9jI)lwI;tC63H>W&`MR1^!NFJEYYKRqG z6lIIb4`bSt2=YiRgVW_0rWV6*0C{Jq#y?t>Jhxxnu>^7eUDN>?8(1`nyPkIB{*?5T zZeD0 zh>CfSoxGmk{<@(nIGJ!%0@(`RfzLHB?+x+^7-bwT0UTrKXc;}!*kc2#mLwD-f;i)k z$MmMbASo0QhGN5Zdk#w{5){rHvwZyIagaNDj1Fn>q9u#CkfdvX_{k)kNCJR@Oba_pbCE=hie5WTaq)D^~n0-qgE0#souOC5_rJPSbKS7Rw2g4=t%4S zdeQQTys;a3-*g;vgZ}{Pqy}h*e6k1`TL7GK`0{_x6w@3*8+m+z_krLaYSHr9TsG4- z;6Nar2_28Fd)0T2NcQFsU3kk6l=c4rKa~JcgfZRo4Wpd!2p+X4#EF(=C+^|8{v6Y= zut=(kMn~Oaz#i1xmXS~}0r(r2fzPk!OfD=*x?h?+fzA|;KPq!uvY=reOZDV{2l@VV zj?q2Jhy#IxoE{Gxnv}>O4xV^b9A!r>*Z%;m`BDN)NDNmJZ$w2{%Y5K->5pDB`OzaO zW-YXU6mMSm82N6Le8xlG=qa~OWk}svp(Bml z9p6sfDOd(c7EtYzaU(6Xe7XLV`*9$Bt^ra8SdcT@1M;b0kr|4~9Bfp4-zHDv>q#U9 zu>0atz@%~TXDfr(U^cZ13f)IDxoBT zIbc3n+z#Fsuh%tt*5#ycEZe{o4_>3EC#T^U+r`DB#u{1wu zmG=?|0s4c%zyKb;rk<=IMv69OE=gjlap{A{u^G?vs`lbWlm^V6V)L|Q5y9irujy7% zrP;DTR4a8H?ioA}ZcieM0bWQ-u#KM~#~8rQat3|4%|z<<uG@wX$Uzy#GTjGyjzxva;x0<`5e%3YP5)8oG}M!KXrjt^*^ujphl!`v9UP;$R$D!ib%l!0P9wS4Zc5~Rw0Ib z!ujd#>sPNtXByv(aOp)`2=R9k0i*hyTRe` zxco&yLW_|civ+Qa*~npx8fMFOc5x;!!*VYqQh@}KqKH6Yovz&t6GHN?;3HC_4kN}` zde9*95R(^~wK{^U%@BD)JR6X3da?}D{?5{-JjIpMp=QDV0PE8}#c_aRyND?r7-tj# zP?b)Dg_ZO0c`#S|Ri9F7ZirCs<6FahgGq>KeUH~`S*Uo4%VA9?`hJZXJ3 zrjsm6;07B;2Rzq}-pVF@igqfVqtd-6$2Y=R63pY|1e4o6vtDv-3*|$7^OE`+7)6d)#E~v{p+UEid+&wLJ8b)&$c}?{c1_q zdk4d|+zsFW53ll~dp9VmcDk@TKs@#Bo}!-;Nf8n|Wl8|Mjt3pF-?alFwFwo*3dYLJ z8#%~adi(QBE4I+PhsrU)#yIcK9r(w3ot2}6Mn>(gl~DNr<2^qbWOm-$A53>LKcmqPGkgUccXic(yqO;?ei8iV4x2|H~?@u^XuN2 zwvBL#vIPy2S8?UL=h$;f!$b(OI5Ht5vHQ5?PJMG$(8Q2=KR&Rh701OEWkP^Gen zi?Cz20F@ceKA-1`wQm$}`^O8w3dnPo=sup50RqUkk|R$O=g=G+dw+#1D28soDr5!# zcFzP;n$eZW@{5S^u}8`X;{@ZLw6P}O#FmeK1{*j%xbH=Pu@r`NWkSW-wzrvsfKEI1 zrrV%(DsqLlH}mQEidcYw)+HG856s!mY=RGd!-`lVLK#_i7GcKhZ5_|)MS|ioAC*^d z0|$^fYz{F>?I8soHTje(v25TGgO9?j%`8xPa00V11R+zxA6(;-arEnoWxMTV5~C

svBuMg+C?+}$ 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 Kv&R2#=Kla=5kWNo literal 0 HcmV?d00001 diff --git a/assets/images/author_images/skolar-logo.png b/assets/images/author_images/skolar-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c5877086b524aefd75eaa969897a99365c3ba6f1 GIT binary patch literal 11788 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 literal 0 HcmV?d00001 From e16e34d98edce8b5f17467135acf79958fb8dceb Mon Sep 17 00:00:00 2001 From: ArturoAmorQ Date: Fri, 4 Jul 2025 16:32:20 +0200 Subject: [PATCH 8/9] Add links to projects and demo --- _posts/2025-06-30-probabl-skolar.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/_posts/2025-06-30-probabl-skolar.md b/_posts/2025-06-30-probabl-skolar.md index b8bd68c..da91f35 100644 --- a/_posts/2025-06-30-probabl-skolar.md +++ b/_posts/2025-06-30-probabl-skolar.md @@ -53,12 +53,13 @@ Probabl—the MOOC has reached over 40,000 learners worldwide, clearly highlighting the demand for organized, hands-on resources that blend theory with real-world practice. -Today, Probabl is excited to introduce Skolar, a new, fully open-source -educational initiative, built directly from your feedback and all the lessons -we've learned along the way. Developed and extended by those same core -developers of scikit-learn, Skolar is designed specifically for data science -practitioners, offering hands-on, high-quality learning resources grounded in -real-world applications and open-source values. +Today, Probabl is excited to introduce +[Skolar](https://app.arcade.software/share/vCN6ik9dR22zD35XP5a7), a new, fully +open-source educational initiative, built directly from your feedback and all +the lessons we've learned along the way. Developed and extended by those same +core developers of scikit-learn, Skolar is designed specifically for data +science practitioners, offering hands-on, high-quality learning resources +grounded in real-world applications and open-source values. Skolar exists to boost our shared values: openness, teamwork, and practicality. It offers clear, interactive tutorials and structured courses carefully designed @@ -86,3 +87,8 @@ curious, to join us. Help shape Skolar’s future and support open-source education in data science. Create your account on Skolar today: https://skolar.probabl.ai + +Contribute to the [scikit-learn course +contents](https://github.com/probabl-ai/scikit-learn-course), or contribute to +the learning platform's [backend](https://github.com/France-ioi/AlgoreaBackend) +or [frontend](https://github.com/France-ioi/AlgoreaFrontend). From 273092ba93de393b50d1c0e62530bfcb33fa6597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9n=C3=A9lope=20Gittos?= <147163692+pengtts@users.noreply.github.com> Date: Mon, 7 Jul 2025 10:55:52 +0200 Subject: [PATCH 9/9] Update _posts/2025-06-30-probabl-skolar.md Co-authored-by: Reshama Shaikh --- _posts/2025-06-30-probabl-skolar.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_posts/2025-06-30-probabl-skolar.md b/_posts/2025-06-30-probabl-skolar.md index da91f35..8854da1 100644 --- a/_posts/2025-06-30-probabl-skolar.md +++ b/_posts/2025-06-30-probabl-skolar.md @@ -33,8 +33,7 @@ postauthors: {% include postauthor.html %}

-*Sponsored blog post* - +*This blog post has been submitted by Probabl, a sponsor of scikit-learn.* The scikit-learn project always puts efforts on education to build and nurture a strong vibrant open-source community. The goal is straightforward: give everyone, everywhere, the tools they need to easily grasp, engage with, and